Aide - Recherche - Membres - Calendrier
Version complète : [resolu] Comment rajouter une condition dans Create_Account
Forum osCommerce-fr > Adapter OsCommerce MS2 > Echanges développeurs
jaxou
Bonjour
Voila j'aimerais rajouter une case a coché dans create_account.php et que si celle ci n'est pas coché il m'envoie un message d'erreur.

La case a coché permet de certifié si l'utilisateur est majeur ou pas.

J'ai modifié dans create_acount.php :
CODE

    if (isset($HTTP_POST_VARS['majeur'])) {
        $age = tep_db_prepare_input($HTTP_POST_VARS['majeur']);
    }else {
        $age= false;
    //Si la case n'est pas coché il renvoie un message d'erreur.
    if ($age == 'true') {
            $error = true;
            $messageStack->add('create_account' , ENTRY_DATE_OF_BIRTH_ERROR);
        }
    }


Et dans Create_account.tpl.php j'ai :
CODE

<td class="main"><?php echo tep_draw_checkbox_field('majeur','1') . '&nbsp;' . (tep_not_null(ENTRY_DATE_OF_BIRTH) ? '<span class="inputRequirement">' . ENTRY_DATE_OF_BIRTH_TEXT . '</span>': ''); ?></td>    


L'affichage fonctionne bien, par contre il ne m'affiche aucun message d'erreur si je ne coche pas ma case et il continue l'inscription.
Si quelqu'un pouvais me guider.
Merci d'avance

ps :Je ne cherche pas a enregistrer l'information dans la base.
jaxou
Bonjour

J'ai poursuivi mes recherches et je suis toujours dans le noir.

J'arrive bien a affiché ma case, mais impossible de verifié si celle ci est coché ou pas...

Un petit indice ou autre pour me faire avancé svp ??

je sais que c'est cette fonction qui gere les valeur du chexbox :
CODE

  function tep_draw_checkbox_field($name, $value = '', $checked = false, $parameters = '') {
    return tep_draw_selection_field($name, 'checkbox', $value, $checked, $parameters);
  }

Meme en mettant :
CODE

<td class="main"><?php echo tep_draw_checkbox_field('majeur','1','false') . '&nbsp;' . (tep_not_null(ENTRY_DATE_OF_BIRTH) ? '<span class="inputRequirement">' . ENTRY_DATE_OF_BIRTH_TEXT . '</span>': ''); ?></td>  

J'ai l'impression qu'il n'arrive pas a recuperer la valeur de ma chexbox.

Merci d'avance
Sinjhin
bonjour

une piste peut etre... la BDD... essaye de faire une recherche dans ta BDD avec le mot clef "account"


bonne journée
Ryu007
Déjà, cette ligne ne va pas :
CODE
if (isset($HTTP_POST_VARS['majeur'])) {
        $age = tep_db_prepare_input($HTTP_POST_VARS['majeur']);
    }else {
        $age= false;
    //Si la case n'est pas coché il renvoie un message d'erreur.
    if ($age == 'true') {
            $error = true;
            $messageStack->add('create_account' , ENTRY_DATE_OF_BIRTH_ERROR);
        }
    }

A partir de quelle moment la variable $age est à true ? Essaye ceci plutot :
CODE

       $check_dob = true;
    if (isset($HTTP_POST_VARS['majeur'])) {
        $age = tep_db_prepare_input($HTTP_POST_VARS['majeur']);
    } else  {
        $check_dob = false;
    //Si la case n'est pas coché il renvoie un message d'erreur.
    }

    if ($check_dob == false) {
            $error = true;
            $messageStack->add('create_account' , ENTRY_DATE_OF_BIRTH_ERROR);
     }

Cordialement
jaxou
Bonjour
Merci pour votre aide.
Cependant sa ne marche toujours pas. Ryu007 j'ai bien tester ton code mais il ne fait tjrs aucune verif.
Que la case soit coché ou pas, il ne m'affiche pas d'erreur et continue donc l'inscription. Je ne sais vraiment plus quoi faire. Je me suis basé sur la case a coché pour la newsLetter.

CODE
if (isset($HTTP_POST_VARS['newsletter'])) {
      $newsletter = tep_db_prepare_input($HTTP_POST_VARS['newsletter']);
    } else {
      $newsletter = false;
    }


Enfin, la je bloque encore plus. C'est pourtant pas dificile de faire une condition sur une case a cocher et en fonction du resultat d'envoyé un message d'erreur. Je dois etre vraiment movais.
Si vous avez d'autre idées je suis preneur.

Sinjhin -> En réalité, je veux juste vérifié que ma case soit coché. Pas besoin de rentrer la valeur dans la BDD.

En tout cas merci pour votre aide.
Bilamba78
Bonjour,

T'a éssayer de reprender la conrib must agree to terms et de la modifier à ta sauce?

jaxou
CITATION(Bilamba78 @ 8 Jun 2006, 10:14) [snapback]178688[/snapback]

Bonjour,

T'a éssayer de reprender la conrib must agree to terms et de la modifier à ta sauce?


Bonjour
Désoler de mettre autant de temps a répondre, mais je suis en plein exams.

Non j'ai pas essayer de reprendre cette contrib, mais je vais essayer de la modifier. Merci
Gnidhal
CITATION(jaxou @ 6 Jun 2006, 10:52) [snapback]178234[/snapback]

Je me suis basé sur la case a coché pour la newsLetter.

CODE
if (isset($HTTP_POST_VARS['newsletter'])) {
      $newsletter = tep_db_prepare_input($HTTP_POST_VARS['newsletter']);
    } else {
      $newsletter = false;
    }


Pourtant c'est ça la bonne piste à moins que tu veuilles recalculer la validité de la majorité en fonction de la date de naissance ce qui exige une vérif supplémentaire !
modifs possible dans create_account (balisées par les lignes originales qui entourent à toi de ne mettre que l'ajout)
1/ vers L50
CODE
    if (isset($HTTP_POST_VARS['newsletter'])) {
      $newsletter = tep_db_prepare_input($HTTP_POST_VARS['newsletter']);
    } else {
      $newsletter = false;
    }
    //ajout majorité
    if (isset($HTTP_POST_VARS['majeur'])) {
      $majeur = tep_db_prepare_input($HTTP_POST_VARS['majeur']);
    } else {
      $majeur = false;
    }
    // fin ajout majorité
    $password = tep_db_prepare_input($HTTP_POST_VARS['password']);

2/ vers ligne 64(nouvelle numérotation)
CODE
    $error = false;
    //ajout majorité
      if ( $majeur == false ) {
        $error = true;

        $messageStack->add('create_account', ENTRY_MAJEUR_ERROR);
      }
    // fin ajout majorité
    if (ACCOUNT_GENDER == 'true') {

enfin
3/ vers la ligne 500 code placé là, mais tu le glisse où tu veux dans ta page
CODE
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" cellspacing="2" cellpadding="2">
              <tr>
                <td class="main"><?php echo ENTRY_NEWSLETTER; ?></td>
                <td class="main"><?php echo tep_draw_checkbox_field('newsletter', '1') . ' ' . (tep_not_null(ENTRY_NEWSLETTER_TEXT) ? '<span class="inputRequirement">' . ENTRY_NEWSLETTER_TEXT . '</span>': ''); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
<!-- ajout validation majorité -->
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" cellspacing="2" cellpadding="2">
              <tr>
                <td class="main"><?php echo ENTRY_MAJEUR; ?></td>
                <td class="main"><?php echo tep_draw_checkbox_field('majeur', '1') . ' ' . (tep_not_null(ENTRY_MAJEUR_TEXT) ? '<span class="inputRequirement">' . ENTRY_MAJEUR_TEXT . '</span>': ''); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
<!-- fin ajout validation majorité -->
      <tr>

là il manque quelques broutilles comme si il y a une erreur ailleurs, la case reste cochée si elle l'était, mais ce n'est pas grave. Il faut simplement recocher la case après correction des autres entrées.

enfin si tu veux vérifier la validité de cette case cochée avec un calcul sur la date de naissance entrée, il faut ajouter un peu de code en amont de la portion 2 proposée ici afin d'ajouter la condition dans la boucle de validation d'erreur.

Avec ces codes (repars d'un create_account.php propre) ça marche, on ne peut valider un compte si la case "majeur" n'est pas cochée. Il faut juste ajouter les "define" des chaînes de texte manquantes dans tes fichiers language.
jaxou
Merci pour ton aide Gnidhal !
Je vais essayer tt de suite. Je ne cherche pas a faire une verification avec la dete de naissance, car celle ci n'est plus demander. D'ou l'interet de vérifié si la case "Vous certifier etre majeur" est coché ou pas.

Je te tien au courant
Gnidhal
Tu n'a même pas besoin de transmettre la valeur en base puisque par définition si la case n'est pas cochée, on ne peut pas s'enregistrer!
jaxou
Je viens de faire la correction, et plus de bug.

J'avais presque la meme chose, et j'ai du faire une erreur quelque part. Maintenant sa marche donc je me fait plus de soucis.

En tout cas merci encore
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2024 Invision Power Services, Inc.