Page 1 sur 2
Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 13:24
par AleMatt
Bonjour,
Maintenant que mon livre d'or fonctionne parfaitement en lecture, voila que je galére en écriture. Voici mes deux fichiers PHP:
Le formulaire:
Code : Tout sélectionner
<!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" lang="fr">
<head>
<title>Livre d'Or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<BODY BGCOLOR=black>
<form method='POST' action="./write_Livredor.php" method="get">
<font face='Arial' size='2'color=white>
Votre nom : <input type='text' name='$nom' size='50' value=''><br>
Votre prénom : <input type='text' name='$prenom' size='50' value=''><br>
Votre Pseudo : <input type='text' name='$pseudo' size='50' value=''><br>
URL de votre site : <input type='text' name='$siteweb' size='50' value=''><br>
Votre Email : <input type='text' name='$mail' size='50' value=''><br>
Message : <input type='text' name='$message' size='100' value=''><br>
<input type='submit' value='Valider'></font></form>
</body>
</html>
Et ma fonction (write_Livredor.php)
Code : Tout sélectionner
<?php
$date=DATE_FORMAT('dd-mm-0000', NOW())
// Vérification des champs nom et prenom (si il ne sont pas vides ?)
if($nom != "" && $prenom != "")
{
// Connexion a Mysql
$mysql_link = mysql_connect('localhost', 'secret', 'encoreplussecret');
// Vérification de la validité de la connexion MYSQL
if($mysql_link)
{
// Requete d'insertion MYSQL
$requete = "INSERT INTO Messages (Nom,Prénom,Date,Pseudo,Mail,siteWeb,Message) VALUES ('$nom','$prenom','$date','$pseudo','$mail','$siteweb','$message')";
// Execution de cette requete dans la base essai
$execution = mysql_db_query("alematt_livredor", $requete);
echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans le livre d'or <b>valeurs</b></font>";
}
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION : Le champs nom ou prénom n'a pas été remplis correctement, veuillez vérifier</font></body></html>";
?>
Le formulaire s'affiche bien, mais à la validation, rien ne se passe. J'ai vérifier sur mon FTP, ma base n'a pas changée.
Si vous voyez quelques choses qui clochent, je suis prenuer!
Merci
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 13:54
par Mazarini
Bonjour,
Sur la première ligne PHP ($date=...) il manque un ";"
Pour les appels à mysql, il faut tester mysql_errno() et afficher mysql_error() et éventuellement le SQL pour voir s'il y a une erreur.
Lorsque ca marchera, fait un test en sasissant une quote.
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 16:28
par AleMatt
Merci Mazzarini,
j'ai donc fait cela:
Code : Tout sélectionner
<?php
$date=DATE_FORMAT('dd-mm-0000', NOW());
// Vérification des champs nom et prenom (si il ne sont pas vides ?)
if($nom != "" && $prenom != "")
{
// Connexion a Mysql
$mysql_link = mysql_connect('localhost', 'secret', 'encoreplussecret');
echo mysql_errno($mysql_link) . ": " . mysql_error($mysql_link). "\n";
// Vérification de la validité de la connexion MYSQL
if($mysql_link)
{
// Requete d'insertion MYSQL
$requete = "INSERT INTO Messages (Nom,Prénom,Date,Pseudo,Mail,siteWeb,Message) VALUES ('$nom','$prenom','$date','$pseudo','$mail','$siteweb','$message')";
// Execution de cette requete dans la base essai
$execution = mysql_db_query("alematt_livredor", $requete);
echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans le livre d'or <b>valeurs</b></font>";
}
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION : Le champs nom ou prénom n'a pas été remplis correctement, veuillez vérifier</font></body></html>";
?>
Mais cela ne change rien. J'appelle le premier fichier dans un frame de ma page, le formulaire s'affiche, je saisie chaque cas, je valide, et là, rien ne se passe, pas de message d'erreur non plus!

Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 16:44
par Mazarini
Pour récupérer les données, il faut les prendre dans $_GET['$nom'] par exemple.
L'utilisation du $ n'est pas une bonne idée, mettre par exemple sans le $ :
<input type='text' name='nom' size='50' value=''>
et récupérer $_GET['nom']
Pour les erreurs, controle aussi après le mysql_db_query()
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 17:00
par devlop78
Active les erreurs, il devrait y avoir un E_PARSE
Ensuite, je ne connais pas de fonction NOW() en php
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 17:42
par AleMatt
Merci pour ces remarques,
Code : Tout sélectionner
<!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" lang="fr">
<head>
<title>Livre d'Or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<BODY BGCOLOR=black>
<form method='POST' action="http://marc-beuvain.com/write_Livredor.php" method="get">
<font face='Arial' size='2'color=white>
Votre nom : <input type='text' name='nom' size='50' value=''><br>
Votre prénom : <input type='text' name='prenom' size='50' value=''><br>
Votre Pseudo : <input type='text' name='pseudo' size='50' value=''><br>
URL de votre site : <input type='text' name='siteweb' size='50' value=''><br>
Votre Email : <input type='text' name='mail' size='50' value=''><br>
Message : <input type='text' name='message' size='100' value=''><br>
<input type='submit' value='Valider'></font></form>
$nom=$_GET['nom'];
$prenom=$_GET['prenom'];
$pseudo=$_GET['pseudo'];
$siteweb=$_GET['siteweb'];
$mail=$_GET['mail'];
$message=$_GET['message'];
</body>
</html>
Mais rien ne change!

Il y a forcement un truc qui ne va pas...Arrgggg!
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 17:51
par macgawel
Bonjour.
1. C'est normal que tu utilises la variable
$_GET pour récupérer les données envoyées par un formulaire en POST ?
2. Au niveau de tes requêtes, essaye de vérifier ce que tu envoies et le résultat :
// Si on n'arrive pas à se connecter, afficher la raison
$mysql_link = mysql_connect('localhost', 'secret', 'encoreplussecret') or die("Erreur à la connexion : ".mysql_error());
// Requete d'insertion MYSQL
$requete = "INSERT INTO Messages (Nom,Prénom,Date,Pseudo,Mail,siteWeb,Message) VALUES ('$nom','$prenom','$date','$pseudo','$mail','$siteweb','$message')";
// Execution de cette requete dans la base essai. Pareil, si echec de la requête, afficher le message d'erreur
$execution = mysql_db_query("alematt_livredor", $requete) or die ("Erreur de requête : ".mysql_error());
Au passage... la fonction
mysql_db_query() est obsolète, utilise plutôt mysql_select_db() et mysql_query() à la place.
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 18:19
par AleMatt
Merci,
J'ai oublié de préciser que j'ai commencé le langage PHP et SQL samedi soir, donc désolé pour mes maladresses!
Je vais voir tout cela!

Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 18:53
par AleMatt
Bon, je récapitule,
L’appel du formulaire (Form_livredor.php) est placé dans une frame de ma page.
Form_livredor.php
Code : Tout sélectionner
<!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" lang="fr">
<head>
<title>Livre d'Or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<BODY BGCOLOR=black>
<form action="./write_Livredor.php" method="get">
<font face='Arial' size='2'color=white>
Votre nom : <input type='text' name='nom' size='50' value='TOTO'><br>
Votre prénom : <input type='text' name='prenom' size='50' value='EDDY'><br>
Votre Pseudo : <input type='text' name='pseudo' size='50' value='TODY'><br>
URL de votre site : <input type='text' name='siteweb' size='50' value='http://www.totoeddy.com'><br>
Votre Email : <input type='text' name='mail' size='50' value='[email protected]'><br>
Message : <input type='text' name='message' size='100' value='Cest quand que ça marche?'><br>
<input type='submit' value='Valider'></font></form>
$date = date("j/n/Y");
$nom=$_GET['nom'];
$prenom=$_GET['prenom'];
$pseudo=$_GET['pseudo'];
$siteweb=$_GET['siteweb'];
$mail=$_GET['mail'];
$message=$_GET['message'];
</body>
</html>
Le formulaire s'afiche bien, et il est sensé appeler le fichier write_livredor.php
Code : Tout sélectionner
<?php
// Vérification des champs nom et prenom (si il ne sont pas vides ?)
if($nom != "" && $prenom != "")
{
// Si on n'arrive pas à se connecter, afficher la raison
$mysql_link = mysql_connect('localhost', 'secret', 'encoreplussecret') or die("Erreur à la connexion : ".mysql_error());
// Requete d'insertion MYSQL
$requete = "INSERT INTO Messages (Nom,Prénom,Date,Pseudo,Mail,siteWeb,Message) VALUES ('$nom','$prenom','$date','$pseudo','$mail','$siteweb','$message')";
// Execution de cette requete dans la base essai. Pareil, si echec de la requête, afficher le message d'erreur
$execution = mysql_db_query("alematt_livredor", $requete) or die ("Erreur de requête : ".mysql_error());
}
?>
Mais rien n'est ajouté à la BDD.
Voila, j'ai l'impression que le lien entre le formulaire (Form_livredor.php) et la requete (Write_livredor.php) ne se fait pas...
Donc, AU SECOURS!
Ha oui, ma BDD
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 19:07
par Cyrano
remplace donc
mysql_db_query() par
mysql_query() pour commencer...
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 20:17
par AleMatt
C'est fait, mais cela ne change rien, du moins pas visiblement...

Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 21:27
par moogli
salut,
ta façon de coder est prévu pour une configuration non standard (register globals = on)
une tuto sur la validation des formulaires
http://www.phpdebutant.org/article56.php
@+
Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 23:34
par AleMatt
Merci Moogli
J'ai remanié l'ensemble
Code : Tout sélectionner
<!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" lang="fr">
<head>
<title>Livre d'Or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<BODY bgcolor="#CC7005">
<form action="write_Livredor.php" method="post">
<font face='Arial' size='2'color=black>
Votre nom : <input type='text' name='nom' size='50' value='TOTO'><br>
Votre prénom : <input type='text' name='prenom' size='50' value='EDDY'><br>
Votre Pseudo : <input type='text' name='pseudo' size='50' value='TODY'><br>
URL de votre site : <input type='text' name='siteweb' size='50' value='http://www.totoeddy.com'><br>
Votre Email : <input type='text' name='mail' size='50' value='[email protected]'><br>
Message : <input type='text' name='message' size='100' value='Cest quand que ça marche?'><br>
<input type='submit' value='Valider'></font></form>
</body>
</html>
ET write_Livredor.php
Code : Tout sélectionner
<?php
// Vérification des champs nom et prenom (si il ne sont pas vides ?)
// Today=date("d-m-y");
// Si on n'arrive pas à se connecter, afficher la raison
$mysql_link = mysql_connect('localhost', 'Login', 'Pass') or die("Erreur à la connexion : ".mysql_error());
if (!$mysql_link)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("alematt_livredor", $mysql_link);
// Requete d'insertion MYSQL
$sql=("INSERT INTO Messages(Nom, Prénom, Mail, siteWeb, Message, Pseudo) VALUES ('$POST[nom]','$POST[prenom]','$POST[mail]','$POST[siteweb]','$POST[message]','$POST[pseudo]')");
if (!mysql_query($sql,$mysql_link))
{
die('Error: ' . mysql_error());
}
echo <font face="Arial" color="white" size="3">"1 entrée ajoutée";
mysql_close($mysql_link)
?>
Et ça ne marche toujours pas, je suis désespéré!

Re: Ecriture sur BDD en SQL...Galère!
Posté : 20 sept. 2011, 23:54
par moogli
Et ça ne marche toujours pas, je suis désespéré!

explique plus
ton code formulaire plus valide :
<!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" lang="fr">
<head>
<title>Livre d"Or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body bgcolor="#CC7005">
<form action="write_Livredor.php" method="post">
<p style="font-family: Arial, font-size:2,color=black>
Votre nom : <input type="text" name="nom" size="50" value="TOTO" /><br />
Votre prénom : <input type="text" name="prenom" size="50" value="EDDY"><br />
Votre Pseudo : <input type="text" name="pseudo" size="50" value="TODY"><br />
URL de votre site : <input type="text" name="siteweb" size="50" value="http://www.totoeddy.com"><br />
Votre Email : <input type="text" name="mail" size="50" value="[email protected]" /><br />
Message : <input type="text" name="message" size="100" value="Cest quand que ça marche?" /><br />
<input type="submit" name="submit" value="Valider" />
</p>
</form>
</body>
</html>
ta page de validation du formulaire ne tiens pas du tout compte du formulaire donc heu ben ça marche pas XD
voila a quoi peux ressembler la validation du formulaire
<?php
// Vérification des champs nom et prenom (si il ne sont pas vides ?)
// Today=date("d-m-y");
// Si on n'arrive pas à se connecter, afficher la raison
$mysql_link = mysql_connect('localhost', '*****', '******') or die("Erreur à la connexion : ".mysql_error());
if (!$mysql_link){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("alematt_livredor", $mysql_link);
// validation du formulaire
if (!empty($_POST['submit'] && $_POST['submit'] == 'Valider') {
if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['pseudo']) && !empty($_POST['siteweb']) && !empty($_POST['mail']) && !empty($_POST['message']) ) {
$sql = 'INSERT INTO Messages(Nom, Prénom, Mail, siteWeb, Message, Pseudo)
VALUES (\''.mysql_real_escape_string($_POST['nom']).'\',
\''.mysql_real_escape_string($_POST['prenom']).'\',
\''.mysql_real_escape_string($_POST['email']).'\',
\''.mysql_real_escape_string($_POST['siteweb']).'\',
\''.mysql_real_escape_string($_POST['message']).'\',
\''.mysql_real_escape_string($_POST['pseudo']).'\')';
if (!mysql_query($sql,$mysql_link)){
die('Error: ' . mysql_error());
}
echo '<p style="font-family=Arial,color:white,font-size:12px">1 entrée ajoutée</p>';
}
else {
echo '<p style="color:red; border: 1px solid red">Il faut remplire tous les champs les gens ^^';
}
}
mysql_close($mysql_link)
?>
A tester
@+
Re: Ecriture sur BDD en SQL...Galère!
Posté : 21 sept. 2011, 00:21
par AleMatt
Une c'tite erreur!
Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ')' in /home/alematt/public_html/write_Livredor.php on line 11
Ligne 11:
if (!empty($_POST['submit'] && $_POST['submit'] == 'Valider') {