Eurreu php/mysql

Résolu
Lumbrera -  
 Lumbrera -
Salus à vous.
J'ai fais un script php qui doit inclure par du sql des données d'un formulaire dans ma BD.
il me renvoi le message d'eurreur : undifined index, et parfois il cré dans ma base de données des champs vide. Tel est le sript:

<?php
require ('motor/connexion.php');
mysql_connect (DB_HOST, DB_LOGIN, DB_PASS);
mysql_select_db (DB_BDD);

$prenom=$_POST['prenom'];
$nom=$_POST['nom'];

$sql = "INSERT INTO etudiants (prenom, nom) VALUES ('$prenom', '$nom')";
$req = mysql_query($sql) or die('Erreur SQL !'.'<br>'.mysql_error());

?>

Aidez moi sil vous plais à neutraliser l'eurreur afin de pouvoir remplir normalement ma BD.

3 réponses

  1. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
     
    Bonjour,

    L'erreur vient peut-être de là:

    $prenom=$_POST['prenom'];
    $nom=$_POST['nom'];


    Essayez plutôt ceci:

    $prenom = '';
    if(isset($_POST['prenom']) && !empty($_POST['prenom'])) {
        $prenom = $_POST['prenom'];
    } 


    A+
    0
    1. Lumbrera Messages postés 43 Statut Membre
       
      Très gentil de ta part, le message "udifinded index a disparu mais les champ de ma BD reste toujours vide tandis que l'id s'incrémente: id1=vide id2=vide...

      Merci d'avance de te pencher aussi sur celui là.
      0
    2. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
       
      faites un

      var_dump($_POST);

      dans le code avant insertion des données. Le formulaire envoie peut-être rien...
      0
    3. Lumbrera Messages postés 43 Statut Membre
       
      Aide moi stp à appliquer cette formule avec var_dump($_POST).
      0
  2. Mihawk Messages postés 4753 Statut Contributeur 846
     
    Oui si l'index n'existe pas cela signifie que soit le formulaire est mal codé, soit que tu récupères les mauvais POST.

    Passe-nous le code HTML de ton formulaire.
    0
    1. Lumbrera Messages postés 43 Statut Membre
       
      C'est pas loin d'être du caillou tou xa pour moi! tenez kan mêm mon formulaire html:

      <form action="client/users/index.php" method="post" enctype="multipart/form-data">
      <fieldset>
      <legend>Identification</legend>
      <ul class="identification">
      <li>
      <input name="prenom" type="text" placeholder="votre prénom" />
      </li>
      <li>
      <input name="nom" type="text" placeholder="Votre nom" />
      </li>
      <li><label>Homme</label><input type="radio" name="sexe" value="homme" /></li>
      <li><label>Femme</label><input type="radio" name="sexe" value="femme" /></li>
      <li class="identification_alignement">
      <label for="jour">Né(e) le :</label><br />
      <input type="text" placeholder="Jour" name="jour" id="jour" maxlength="2" />
      <select title="Choisissez" name="mois" aria-required="true" tabindex="1">
      <option title="Janvier" value="1">Janvier</option>
      <option title="Février" value="2">Février</option>
      <option title="Mars" value="3">Mars</option>
      <option title="Avril" value="4">Avril</option>
      <option title="Mai" value="5">Mai</option>
      <option title="Juin" value="6">Juin</option>
      <option title="Juillet" value="7">Juillet</option>
      <option title="Août" value="8">Août</option>
      <option title="Septembre" value="9">Septembre</option>
      <option title="Octobre" value="10">Octobre</option>
      <option title="Novembre" value="11">Novembre</option>
      <option title="Décembre" value="12">Décembre</option>
      </select>
      <input title="Année" type="text" name="an" placeholder="Anneé" maxlength="4" class="dateInput fieldValInit" autocomplete="off" aria-required="true" tabindex="1">
      <br />
      <br />
      <br />
      <select name="pays" size="1">
      <option value="null" > Votre pays</option>
      </select>
      </li>
      <li><select name="pays" size="1"><optgroup label="Europe">
      <option value="France" > France</option>
      <option value="Belgique" > Belgique</option>
      <option value="Italie" > Italie</option>
      <option value="Allemagne" > Allemagne</option>
      </optgroup>
      <optgroup label="Amérique">
      <option value="USA" label="fr" > USA </option>
      <option value="Canada" > Canada</option>
      <option value="Argentine" > Argentine</option>
      </optgroup>
      <optgroup label="Autres">
      <option value="Europe" > Europe </option>
      <option value="Asie" > Asie </option>
      <option value="Amériques" > Amériques </option>
      <option value="Océanie" > Océanie</option>
      </optgroup>
      </select>
      </li>
      <li>
      <label>* Seulement si vous êtes né en Côte d'Ivoire</label><br />
      <input type="text" placeholder="lieu de naissance" />
      </li>
      </ul>
      </fieldset>
      <fieldset>
      <legend>
      Verrification du Matpc
      </legend>
      <input type="password" name="matpc" placeholder="Votre Matpc" />
      </fieldset>
      <fieldset>
      <legend>Vos coordonnées</legend>
      <ul class="menu_align">
      <li>
      <input type="text" name="mail" placeholder="Votre BC" />
      </li>
      <li><input type="tel" name="cel" placeholder="Votre contact officiel"></li>
      <li><input type="text" name="domicile" placeholder="lieu de domicile"></li>
      <li><input type="tel" name="tel" placeholder="téléphone du domicile"></li>
      </ul>
      </fieldset>
      <fieldset>
      <input type="submit" value="Inscription" class="validation" />
      </fieldset>
      </form>

      Escuzez moi mais je l'ai copié brute depuis moi projet et je teste ma BD à partir de deux champ: prenom et nom.

      Merci d'avance pour le retour!
      0
    2. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Alors là je sèche
      0
    3. Lumbrera Messages postés 43 Statut Membre
       
      ok, je le résume

      <form action="client/users/index.php" method="post" enctype="multipart/form-data">
      <fieldset>
      <legend>Identification</legend>
      <ul class="identification">
      <li>
      <input name="prenom" type="text" placeholder="votre prénom" />
      </li>
      <li>
      <input name="nom" type="text" placeholder="Votre nom" />
      </li>

      <fieldset>
      <input type="submit" value="Inscription" class="validation" />
      </fieldset>
      </form>

      c'est nettement mieu j'espère!
      jète y un coup d'ouille stp. il me casse la tête depuis un moi et demi biento!
      0
    4. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Non j'ai bien réussi a lire la version longue qui n'est pas si longue que ça. Je sèche sur ton problème car ton formulaire semble posséder les bons champs
      0
    5. Lumbrera Messages postés 43 Statut Membre
       
      6 8 je voulai dir!

      il n'y pas encore de lien entre les tables!
      0
  3. Mihawk Messages postés 4753 Statut Contributeur 846
     
    Si tu remplace ton script par ceci :

    require ('motor/connexion.php');
    mysql_connect (DB_HOST, DB_LOGIN, DB_PASS);
    mysql_select_db (DB_BDD);
    
    $prenom=$_POST['prenom'];
    $nom=$_POST['nom'];
    echo ("Nom récupéré : " . $nom . " et prénom : " . $prenom . "");
    
    $sql = "INSERT INTO etudiants (prenom, nom) VALUES ('$prenom', '$nom')";
    $req = mysql_query($sql) or die('Erreur SQL !'.'<br>'.mysql_error()); 
    

    Est-ce que tes noms et prénoms rentrés par le formulaire s'affichent ?
    Sinon, dernière question, quel est le nom du fichier PHP dans lequel tu as écrit ce script ?
    0
    1. Lumbrera Messages postés 43 Statut Membre
       
      Effectivement! je les récupère comme je les ai posté, mais à une eurreur près: c que la présence d'apostrophe cré cré un méssage d'eurreur sql. Exemple:

      Nom récupéré : D'acosta et prénom : Marc AntonyErreur SQL !
      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'acosta')' at line 1

      J'ai juste écri mon Dacosta avec un apostrophe pour que xa donne tou xa, dans le cas contraire tout est net!
      0
    2. Lumbrera Messages postés 43 Statut Membre
       
      Tu sais comment xa marche Pierre? Eh bi1 xa marche à merveille! Les données sont additionnellement bi1 rangé dans ma table. Téra merci à toi ! Et te gène surtout pas, 6 ta une dernière touche à apparter, elle est tout simplement bi1 venu.
      En attandant, sache que mon projet à évolué d'un grand pas par ton aide.
      0
    3. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Oui justement pour tes problèmes d'apostrophes :

      $nom = addslashes($nom); 
      $prenom = assslashes($prenom); 
      

      Ca échappera les apostrophes et évitera les bug.
      Mais le plus propre reste la requête préparée, ou la méthode "mysql_real_escape_string()"
      Je te laisse te renseigner sur le sujet ;-)
      0
    4. Lumbrera
       
      Cool! mais je l'ai déviné avant! Mer6 quand même!
      0