PHP ET MYSQL
Résolule père -
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>
Configuration: Windows Vista Firefox 3.0.10
- PHP ET MYSQL
- Expert php - Télécharger - Langages
- Mysql community server - Télécharger - Bases de données
- Easy php - Télécharger - Divers Web & Internet
- Ide php - Télécharger - Web & Internet
- Php?id=1 - Forum PHP
38 réponses
- 1
- 2
Plusieurs échanges portent sur l'insertion de données dans une base MySQL via PHP à partir d'un formulaire HTML, avec des erreurs de manipulation et des incohérences dans les noms de champs. Des interventions insistent sur la correspondance entre les noms de champs du formulaire et les clés de $_POST, et sur la correction d'erreurs courantes comme des parenthèses manquantes dans la requête INSERT. En cas de débogage, il est recommandé d'ajouter une clause d'erreur et de corriger la syntaxe de l'insertion, notamment en vérifiant la parenthèse fermante et les guillemets autour des valeurs. D'autres précisent qu'il faut harmoniser les noms des champs (par exemple prenom vs prénom) et tester avec print_r($_POST) pour vérifier le flux de données avant l'insertion.
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
<!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>
http://www.commentcamarche.net/forum/affich 11787850 recuperer mes infos dans une base de donnee?#7
Cordialement
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionaidez moi please
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_...
<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+
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
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
si oui, ajoute coucou AVANT <?php
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
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
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
<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
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!!
table(civilite ,nom ,prenom, adresse, codepostal,ville,telephone,mail,message) ?
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!!
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
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();
?>
- 1
- 2