Perte de donnée

Bonjour,
j'ai fait la création d'un site web en php où on a 2 types d'inscription: client et enseignant.
le problème c que je reçois parfois des inscriptions vides dans les 2 types d'inscription.
j'ai dans les formulaires d'inscription l'élément : select multiple que la plupart des pertes se fait à son niveau.
NB :je fais un contrôle javascript et un contrôle sur le serveur pour vérifier que j'ai au moins une sélection; et malgré ces 2 contrôles
la perte existe encore.
merci de m'aider.

8 réponses

  1. bonjour,

    ça veut dire quoi, la perte existe encore, si tu fais un contrôle sur le serveur ?
    Peux-tu montrer le script ?
    1. $civilite=$_POST['civilite'];
      $nom=$_POST['nom'];
      $prenom=$_POST['prenom'];

      if(empty($civilite)||empty($nom)||empty($prenom)) {
      echo'veuillez vérifier la saisie de vos données';
      }
      elseif(empty($_POST["heure"]))// heure:select multiple
      {
      echo' Veuillez choisir les heures auxquelles vous désirez être appelé';
      }
      else{$req2="INSERT INTO ...//insertion dans la BD
      }
      1. $_POST convient mieux que HTTP_POST_VARS. HTTP_POST_VARS est obsolète (voir doc PHP)
        Le INSERT INTO serait intéressant. Le contenu $_POST["heure"] aussi.
        1. je ne trouve toujours pas de solution pour mon problème, j'ai encore qq inscription perdues dans le select multiple.
          1. Bonjour

            Peux-tu montrer le script complet ? (en cachant les éventuels identifiants, bien sûr)
            1. formulaire:
              <?PHP
              include("connexion.php");
              $req="SELECT num_mat,matiere FROM liste_matiere";
              $res= mysql_query($req);
              ?>
              Matières désirées:</font></b>
              <select name="matiere[]" multiple>
              <?php
              while($data=mysql_fetch_row($res)){
              echo'<option value="'.$data[0].'">'.$data[1].'</option>';
              }
              echo'
              </select>';?>
              script traitement:
              $identite=$_POST['identite'];
              $interet=$_POST['interet'];
              $civilite=$_POST['civilite'];
              $nom=$_POST['nom'];
              $prenom=$_POST['prenom'];
              $tab= array('mat'=>1);
              $j=1;
              if(empty($identite)||empty($interet)||empty($civilite)||empty($nom)||empty($prenom))
              {
              echo'euillez vérifier la saisie de vos données</font></center>';
              }
              elseif(empty($_POST["matiere"])){ // matiere: select multiple
              echo' veuillez choisir au moins une matière';
              }
              else{
              $req="INSERT INTO client(identite,interet,civilite,nom,prenom)
              VALUES('$identite','$interet','$civilite','$nom','$prenom''')";
              $result= mysql_query($req);
              if($result)
              {
              foreach($_POST["matiere"] as $value)
              {
              $tab[$j]=$value;
              $j++;
              }
              for($p=1;$p<sizeof($tab);$p++)
              {
              $req2="INSERT INTO choix_mat(numero,matiere)VALUES('$prenom','$tab[$p]')";
              $res2=mysql_query($req2);
              }
              }}
              //remarque: la perte se fait uniquement au niveau du select multiple,c à dire je ne récupère pas les matières selectionnées.
              dans le formulaire, le contenu du select multiple: matiere est chargé depuis la base de donnée.
              merci d'avance pour votre aide.