Problème traitement bouton radio

Problème traitement bouton radio - PHP - Programmation

Marsh Posté le 29-05-2009 à 14:36:57    

Bonjour,
 
j'ai un problème avec le traitement des boutons radio !!
 
Voici un extrait du code de ma page inscription :
 

Code :
  1. <tr>
  2.       <?php
  3.        function getSex($sexe)
  4.        {
  5.          $default = '';
  6.          if (isset($_POST['sexe']))
  7.          {
  8.         if ($_POST['sexe'] == $sexe)
  9.         {
  10.          $default='selected="selected"';
  11.         }
  12.        }
  13.        return $default;
  14.        }
  15.       ?>
  16.      <td><label for="sexe">Sexe*</label></td>
  17.          <td><input type="radio" name="sexe" value="masc" <?php echo getSex('masc'); ?>  checked="checked" /> Masc
  18.                             <input type="radio" name="sexe" value="fem" <?php echo getSex('fem'); ?> /> Fem </td>
  19.     </tr>


 
 
Maintenant un extrait de ma page : traitement-inscription :
 
 

Code :
  1. // Sexe
  2. if(isset($_POST['sexe']))
  3. {
  4.  $sexe = trim($_POST['sexe']);
  5.  $sexe_result = checkSex($sexe);
  6.  if($sexe_result == 'sexefalse')
  7.  {
  8.   $_SESSION['sexe_info'] = '<span class="erreur">Le sexe '.htmlspecialchars($sexe, ENT_QUOTES).' est incorrect.</span><br/>';
  9.   $_SESSION['form_sexe'] = '';
  10.   $_SESSION['erreurs']++;
  11.  }
  12.  else if($sexe_result == 'ok')
  13.  {
  14.   $_SESSION['sexe_info'] = '';
  15.   $_SESSION['form_sexe'] = $sexe;
  16.  }
  17.  else if($sexe_result == 'empty')
  18.  {
  19.   $_SESSION['sexe_info'] = '<span class="erreur">Vous n\'avez pas entré de sexe.</span><br/>';
  20.   $_SESSION['form_sexe'] = '';
  21.   $_SESSION['erreurs']++;
  22.  }
  23. }
  24. else
  25. {
  26.  header('Location: ../index.php');
  27.  exit();
  28. }


 
Et enfin la fonction checkSex qui est appelé dans traitement-inscription :
 

Code :
  1. function checkSex($sexe)
  2. {
  3.  if($sexe == '') return 'empty';
  4.  else if(!preg_match('#(masc|fem)#', $sexe)) return 'sexefalse';
  5.  else return 'ok';
  6. }


 
 
Lors de la validation du formulaire, il n'y a pas de problème, sauf que mon champ sexe dans la base de donnée n'est pas renseigné ! Pourtant, il n'y a pas de problème au niveau de l'insertion des données dans la BDD. Je pense que le problème vient de la récupération de la valeur (masc ou fem) dans le formulaire, mais je trouve pas de solutions...

Reply

Marsh Posté le 29-05-2009 à 14:36:57   

Reply

Marsh Posté le 29-05-2009 à 14:52:29    

Ah excusez-moi j'ai réglé mon problème, je n'avais que 30 enregistrements d'afficher alors que j'en ai plus de 40 sur la base de données !

Reply

Marsh Posté le 29-05-2009 à 15:14:18    

remarque annexe : tu fais :

Code :
  1. <?php echo getSex('masc'); ?>  checked="checked"


donc tu mets un selected ET un checked comme attributs ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 29-05-2009 à 15:18:15    

NewsletTux a écrit :

remarque annexe : tu fais :

Code :
  1. <?php echo getSex('masc'); ?>  checked="checked"


donc tu mets un selected ET un checked comme attributs ?


 
 
Ben je n'ai aucune erreur, donc je pense que c'est bon...
 
Désolé je débute en PHP

Reply

Marsh Posté le 29-05-2009 à 19:32:09    

Ce problème n'a pas à voir avec PHP (c'est un problème HTML)
Ce n'est pas parce que tu ne vois pas de message d'erreur que c'est correct.
En l'occurrence, avec un input radio, l'attribut selected est incorrect, il faut utiliser seulement checked.

Reply

Marsh Posté le 29-05-2009 à 20:03:28    

D_AmOn a écrit :


Ben je n'ai aucune erreur, donc je pense que c'est bon...
Désolé je débute en PHP


 
Passe ta page au validateur, tu verras si t'as pas d'erreurs :D


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 29-05-2009 à 20:19:25    

Ah ok,  j'ai corrigé ça. Et donc pour une liste déroulante, selected c correct ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed