PHP ET MYSQL

Résolu/Fermé
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009 - 1 mai 2009 à 17:46
 le père - 1 mai 2009 à 23:08
Bonjour,

j'essai d'ajouter des données dans ma base sql a laide de php, j'y suis parvenu tt à l'heure une fois et j'ai du faire une erreur de manip et ca ne fonctionne plus je cherche mais je ne vois pas mon erreur voila le script :

aidez moi svp je galère!merci d'avance

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Accueil</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design3.css" />
</head>
<body>

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("camping");


if (isset($_POST['civilite'])
AND isset($_POST['nom'])
AND isset($_POST['prenom'])
AND isset($_POST['adresse'])
AND isset($_POST['codepostal'])
AND isset($_POST['ville'])
AND isset($_POST['telephone'])
AND isset($_POST['mail'])
AND isset($_POST['message']))

{

$civilite = mysql_real_escape_string(htmlspecialchars($_POST['civilite'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
$adresse = mysql_real_escape_string(htmlspecialchars($_POST['adresse']));
$codepostal = mysql_real_escape_string(htmlspecialchars($_POST['codepostal']));
$ville = mysql_real_escape_string(htmlspecialchars($_POST['ville']));
$telephone = mysql_real_escape_string(htmlspecialchars($_POST['telephone']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

// On peut enfin enregistrer :o)
mysql_query("INSERT INTO clients VALUES('', '" . $civilite . "', '" . $nom . "', '" .$prenom.'", "'.$adresse."', '".$codepostal."', '".$ville."', '".$telephone."', '".$mail."', '".$message."')");

}

mysql_close();
?>


</body>
</html>
A voir également:

38 réponses

infor3lmd Messages postés 111 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 13 mai 2009 2
1 mai 2009 à 17:52
tu n'as pas envoyé le code html du formulaire

normalement tu as mis dans ton formulaire un bouton submit

et sur ton code php ce bouton n'est pas présent,d'où l'erreur
montre nous ton formulaire en html pour qu'on puisse t'aider plus
1
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009
1 mai 2009 à 17:55
voila mon formulaire html merci de m'aider!!


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Nous contacter</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="form" href="form.css" />

</head>
<body>


<form method="post" action="cible_formulaire.php">

<fieldset>

<legend>Vos cordonnées</legend>



<label for="nom">Nom:</label><br />
<input type="text" name="nom" id="nom" tabindex="10" /><br />

<label for="Prénom">Prénom: </label><br />
<input type="text" name="prénom" id="prénom" tabindex="20" /><br />

<Label for="adresse">Adresse:</label><br />
<input type="text" name="adresse" id="adresse" tabindex="30" /><br />


<Label for="cp">Code Postal:</label><br />
<input type="text" name="cp" id="cp" tabindex="40" /><br />

<label for="ville">Ville:</label><br />
<input type="text" name="ville" id="ville" tabinfo="50" /><br />

<label for="mail">E-mail:</label><br />
<input type="texte" name="mail" id="mail" tabindex="60" /><br />

<label for="tel">Téléphone:</label><br />
<input type="texte" name="tel" id="tel" tabindex="70" /><br />

</fieldset>
<fieldset>
<legend>Votre message:</legend>
<p>
<label for="message">Votre message</label><br />
<textarea name="message" id="message" rows="7" cols="40" ></textarea>
</p>

</fieldset>
<p>
<input type="submit" /> <input type="reset" />
<p>

</form>
</body>
</html>
0
newtech83 Messages postés 187 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 10 avril 2011 15
1 mai 2009 à 17:56
salut essaye de voir le mien . Peut etre qu'il pourra te venir en aide

http://www.commentcamarche.net/forum/affich 11787850 recuperer mes infos dans une base de donnee?#7

Cordialement
0
Bonjour

Dans ton formulaire, tu appelles des champs 'prénom' et 'tel' alors que dans le traitement tu cherches 'prenom' (sans accent) et 'telephone'.
Je n'ai pas vérifié tous tes champs, mais corrige ceux-là et regarde bien les autres
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009
1 mai 2009 à 18:15
j'ai modifier tous dans le formulaire.html mais ca ne change rien visiblement j'ai pourtant tt renommer comme dans la base!!

aidez moi please
0
Ça n'a strictement ***aucune*** importance que tes variables aient le même nom que les champs de ta base.
Ce qui compte, c'est que quand tu mets name ='pre' dans un formulaire, la variable que tu récupères soit bien $_POST['pre'] et pas $_POST['prenom'].

Peux-tu ajouter print_r($_POST); au début de ton script de traitement ?
et echo "coucou"; entre le { et le $civilite = mysql_...
0
infor3lmd Messages postés 111 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 13 mai 2009 2
1 mai 2009 à 18:31
<input type="submit" /> sa c'est ton bouton il faut que tu lui donne a nom c'est a dire :
<input type="submit" name="valider" value="valider" />

et dans ton code php :
au lieu de faire sa :
if (isset($_POST['civilite'])
AND isset($_POST['nom'])
AND isset($_POST['prenom'])
AND isset($_POST['adresse'])
AND isset($_POST['codepostal'])
AND isset($_POST['ville'])
AND isset($_POST['telephone'])
AND isset($_POST['mail'])
AND isset($_POST['message']))
  

essai sa :
if(isset($_POST['valider'])){
   $civilité='';  if(isset($_POST['civilité'])) $civilité= $_POST['civilité'] ;
 // meme chose pour les autre champs
 //suivie de ta requete d'insertion 'sql' 
 }


<input type="reset" /> : je ne sais pas que ce que tu veux dire pas sa !!
essai ce que je t'ai montré espérons que sa marche
a+
0
Il est totalement inutile de donner un nom au bouton et de tester chaque variable du formulaire avant de l'affecter. Un AND entre tous les isset est plus simple et plus efficace, sauf si on a envie d'envoyer un mesage d'erreur ciblé ce qui n'est pas le cas ici.
0
infor3lmd Messages postés 111 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 13 mai 2009 2
1 mai 2009 à 18:47
mes ces données comment vont être insérer dans la base ,si il ne valide pas son formulaire ?

" l'utilisateur doit valider ses information pour que l'enregistrement sera ajouté dans la base "
0
Qu'appelles-tu "valider ses informations " ?
Si tu veux dire les envoyer, il suffit d'avoir un bouton submit, peu importe qu'il ait un nom ou pas.
Si tu veux dire vérifier le contenu des informations, c'est une autre question. C'est vrai que ce serait bien qu'il le fasse, mais il peut très bien le faire à l'intérieur du if après avoir vérifié que toutes sont présentes.
Mais pour l'instant, il devrait quand même enregistrer quelque chose.
C'est pour ça que je lui ai demandé d'afficher "coucou" après le if
0
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009
1 mai 2009 à 19:03
j' ai essayer de mettre le echo coucou mai rien ne s'affiche mais j'ai pas bien saisi par contr pour :
print_r($_POST); je doi placer ca ou ???

sinn j ai egalement essaye rla solution renommer le bouton..; ne fonctionne pas non plus aidez moi jdesespere vraiment la ^^ merci a vous
0
il faut mettre le print_r($_POST) juste avant
if (isset($_POST['civilite']) ...
0
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009
1 mai 2009 à 19:15
j ai fait comme tu m'a dit quand je valide le formulaire j'ai une page vide qui s'affiche et toujours rien dans ma base!! que faire que faire!
0
C'est absolument anormal que ça n'affiche rien du tout. Le script où tu as mis le print_r est bien celui que tu as montré dans ton premier message, c'est à dire cible_formulaire.php ?
si oui, ajoute coucou AVANT <?php
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
1 mai 2009 à 19:26
tu n'a pas simplement precise les champs dans lesquels tu inserait tes valeurs ..

mysql_query("INSERT INTO clients VALUES('', '" . $civilite . "', '" . $nom . "', '" .$prenom.'", "'.$adresse."', '".$codepostal."', '".$ville."', '".$telephone."', '".$mail."', '".$message."')");

j'ai pas regardé en detail mais je pense que cela vient de la

essaye ca
mysql_query("INSERT INTO clients (champ civilite, champ nom, champ prenon,..etc ) VALUES('', '" . $civilite . "', '" . $nom . "', '" .$prenom.'", "'.$adresse."', '".$codepostal."', '".$ville."', '".$telephone."', '".$mail."', '".$message."')");


petite precision si ton champ id est autoinccrement, inutile de mettre " au debut de tes values
n'utilise JAMAIS d'accent pour appeler un champ, une variable ou une requete
la page blanche est due à une erreur de syntaxe php , un ; une ' ou " qui manque verifie ton code
0
Il est inutile de donner les noms des champs quand on met toutes les valeurs. Et pour les mettre toutes, il faut mettre '' pour le champ autoincrémenté
La page blanche peut avoir des tas de causes et n'est généralement pas due à une erreur de syntaxe PHP car une erreur de syntaxe provoque l'affichage d'un message d'erreur
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352 > le père
1 mai 2009 à 19:51
sur certain serveur si .. ;-)
page blanche=erreur de typo en php
msg d'erreur= syntaxe d'une requete incorrete


code original
<?PHP
echo'coucou';
$today = getdate();
print_r($today); // ca m'affiche un array des variables d'aujourd'hui
?>

// page blanche
<?PHP
echo'coucou'
$today = getdate();
print_r($today);
?>

//msg erreur =>  $ today undefined mais coucou est visible car placé avant l'erreur
<?PHP
echo'coucou';
print_r($today);
?>


de plus il est preferable et conseillé de marquer les champs dans lesquels tu insere tes données.
Ce n'est pas obligatoire mais fortement conseillé.
Tout cecik n'est qu'une question de principe de codage, cela fait un truc plus propre et plus efficace au niveau serveur
0
infor3lmd Messages postés 111 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 13 mai 2009 2
1 mai 2009 à 19:28
le père a remarqué sa :


<input type="text" name="prénom" id="prénom" tabindex="20" />

AND isset($_POST['prenom'])
</code>
et on ne sait si tu as modifier sa ou pas
$_POST['prénom']
puisque tu dis que coucou n'est pas affiché c'est a dire la condition if est fausse
0
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009
1 mai 2009 à 19:43
j ai modifier ts les champs de façon a ce qu'il n'y est plus d'espace ni d'accent dans le form.html et cible.php pour qu'il n'y ai pas de confusion entre les noms.


Par contre maintenant les données que j'insère dans la rubrique message de mon formulaire s'insère dans ma base mysql mais pas comme je voudrais c'est a dire que le message du formulaire s'enregistre dans ma base a la place du nom du client et le prénom a une valeur de 0 et d'autres champs ont des symboles bizard comme valeur!!
0
infor3lmd Messages postés 111 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 13 mai 2009 2
1 mai 2009 à 19:52
les champs de table sont dans cette ordre :
table(civilite ,nom ,prenom, adresse, codepostal,ville,telephone,mail,message) ?
0
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009
1 mai 2009 à 19:57
oui entre temps j'ai enlevé civilité et j'ai pas mi de clé primaire donc ca donne :

nom, prenom, adresse, codepostal, ville, telephone, mail, message

jcomprens pas ce qui se passe en debut d'aprem j'avais réussi a mettre un enregistrement j'ai du toucher a qq chose parsqu'apres plus rien!!
0
infor3lmd Messages postés 111 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 13 mai 2009 2
1 mai 2009 à 20:03

Oui entre temps j'ai enlevé civilité et j'ai pas mi de clé primaire donc ca donne

que veut dire sa ?
d'après ton code tu as une clé primaire qui est auto-incrément donc:
table (id,civilité,nom,prenom,adresse,codepostale,ville,telephone,mail,message)

et si vous avez enlever le champs civilité de ta table alors la variable $civilité de ton code
0
damien35 Messages postés 80 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 1 décembre 2009
1 mai 2009 à 20:06
j'ai plus que huit champs nom prenom adresse codepostal, ville, telephone, mail, message sans clé primaire dans ma table et mon code je l'avai modifié au passage quand j'ai enlevé civilité

voici le code modifié :

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("camping");



if (isset($_POST['nom'])
AND isset($_POST['prenom'])
AND isset($_POST['adresse'])
AND isset($_POST['codepostal'])
AND isset($_POST['ville'])
AND isset($_POST['telephone'])
AND isset($_POST['mail'])
AND isset($_POST['message']))

{


// On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
$adresse = mysql_real_escape_string(htmlspecialchars($_POST['adresse']));
$codepostal = mysql_real_escape_string(htmlspecialchars($_POST['codepostal']));
$ville = mysql_real_escape_string(htmlspecialchars($_POST['ville']));
$telephone = mysql_real_escape_string(htmlspecialchars($_POST['telephone']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

// On peut enregistrer

mysql_query('INSERT INTO clients (nom, prenom, adresse, codepostal, ville, telephone, mail, message) VALUES("'.$nom.'", "' .$prenom.'", "'.$adresse.'", "'.$codepostal.'", "'.$ville.'", "'.$telephone.'", "'.$mail.'", "'.$message.'"') or die (mysql_error());

}

mysql_close();
?>
0