Eurreu php/mysql

Résolu/Fermé
Lumbrera - 19 avril 2013 à 03:11
 Lumbrera - 22 avril 2013 à 17:06
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

mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
19 avril 2013 à 08:58
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
Lumbrera Messages postés 33 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 4 août 2014
19 avril 2013 à 11:19
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
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
19 avril 2013 à 13:19
faites un

var_dump($_POST);

dans le code avant insertion des données. Le formulaire envoie peut-être rien...
0
Lumbrera Messages postés 33 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 4 août 2014
19 avril 2013 à 15:48
Aide moi stp à appliquer cette formule avec var_dump($_POST).
0
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
19 avril 2013 à 13:45
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
Lumbrera Messages postés 33 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 4 août 2014
19 avril 2013 à 15:46
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
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
19 avril 2013 à 16:00
Alors là je sèche
0
Lumbrera Messages postés 33 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 4 août 2014
19 avril 2013 à 16:29
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
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
19 avril 2013 à 16:34
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
Lumbrera Messages postés 33 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 4 août 2014
19 avril 2013 à 16:58
6 8 je voulai dir!

il n'y pas encore de lien entre les tables!
0
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
19 avril 2013 à 21:02
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
Lumbrera Messages postés 33 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 4 août 2014
20 avril 2013 à 01:13
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
Lumbrera Messages postés 33 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 4 août 2014
20 avril 2013 à 01:26
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
Mihawk Messages postés 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
Modifié par Mihawk le 22/04/2013 à 12:35
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
Cool! mais je l'ai déviné avant! Mer6 quand même!
0