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

  • Votes
  • Date
  • Date décroissante
  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.
    1. Bonjour

      Peux-tu montrer le script complet ? (en cachant les éventuels identifiants, bien sûr)
      1. je ne trouve toujours pas de solution pour mon problème, j'ai encore qq inscription perdues dans le select multiple.
        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. $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. bonjour,

              ça veut dire quoi, la perte existe encore, si tu fais un contrôle sur le serveur ?
              Peux-tu montrer le script ?