Votre question

Problème HTML

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
29 Décembre 2009 16:31:42

Bonjour à tous.

J'essaie de créer un livre d'or sur mon site mais je encontre quelques difficultées.

Donc tout d'abord j'ai crée une table:

CREATE TABLE `livredor`.`livredor` (
`Nom` INT NOT NULL ,
`Genre` INT NOT NULL ,
`Satisfaction` INT NOT NULL ,
`Commentaires` INT NOT NULL
) ENGINE = MYISAM ;

Ensuite Traitement.php

<html>
<head>
<title> Traitement.php</title>
</head>
<body>

<?php
mysql_connect('localhost','root','');
mysql_select_db('livredor');
$maRequete="insert into livredor values('$v1','$v2','$v3',$v4')";
mysql_query($maRequete);
$v1=$_POST['Nom'];
$v2=$_POST['Genre'];
$v3=$_POST['Satisfaction'];
$v4=$_POST['Commentaires'];
echo "valeurs : $v1 $v2 $v3 $v4";
?>

</body>
</html>

Et enfin livredor.php pour afficher le formulaire :

<!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" />

<style type="text/css">
form, .pages
{
text-align:center;
}
</style>
</head>
<B>
<a href= "http://localhost/MonSiteWeb/Page%20accueil.php"> <font color="#CC0033" size=3 face="Calisto MT"> ← Retour à la page d'accueil </font> </a>
                                             
                                             
             

<font color="#660066" size=6 face="Calisto MT">
Votre avis sur le site
                             
</hr>
</font>
</B>
<br> <br> <br> <br>

<body BGCOLOR="#DFF1A5">

<font face="Calisto MT">

<form name="Traitement.php"
method="POST"
action="Traitement.php">
Nom <input type="text" name="Nom" value=""/>

<br> <br>

Genre <input type="radio" name="Genre" value="M"/> M
<input type="radio" name="Genre" value="F"/> F

<br> <br>

Votre avis sur le site

<select name="Satisfaction">
<option value="1">Pas du tout satisfait </option>
<option value="2"> Juste satisfait </option>
<option value="3"> Satisfait </option>
<option value="4"> Très satisfait </option>
</select>

<br> <br>

Mettez ici vos commentaires <br>
<textarea name="Commentaires" rows="10" cols="50">
</textarea>

<br> <br>

<input type="submit" value="envoyer"/>

</form>

</font>

</body>

</html>


Mon formulaire s'affiche correctement mais quand j'envoie j'obtiens ces erreurs :

Notice: Undefined variable: v1 in C:\wamp\www\MonSiteWeb\Traitement.php on line 10

Notice: Undefined variable: v2 in C:\wamp\www\MonSiteWeb\Traitement.php on line 10

Notice: Undefined variable: v3 in C:\wamp\www\MonSiteWeb\Traitement.php on line 10

Notice: Undefined variable: v4 in C:\wamp\www\MonSiteWeb\Traitement.php on line 10
valeurs : dupond F 3 site intéressant


Voilà j'ai du faire des erreurs, si quelqu'un pourrait m'aider ca serait super !

Merci!

Autres pages sur : probleme html

29 Décembre 2009 18:24:25

salut,

faut définir tes variables, avant de les utiliser :) 

  1. <?php
  2. $v1=$_POST['Nom'];
  3. $v2=$_POST['Genre'];
  4. $v3=$_POST['Satisfaction'];
  5. $v4=$_POST['Commentaires'];
  6.  
  7. mysql_connect('localhost','root','');
  8. mysql_select_db('livredor');
  9. $maRequete="insert into livredor (Nom, Genre, Satisfaction, Commentaires) values('$v1','$v2','$v3',$v4')";
  10. mysql_query($maRequete);
  11.  
  12. echo "valeurs : $v1 $v2 $v3 $v4";
  13. ?>

m
0
l
29 Décembre 2009 21:51:17

Et un petit conseil met des noms assez claire pour test variable comme: $nom
m
0
l
Contenus similaires
30 Décembre 2009 15:35:11

Merci pour votre aide!

En suivant vos conseils j'ai réussi à faire deux enregistrement dans la table et maintenant ça ne fonctionne plus alors que je n'ai rien modifier entre temps.

Comment est-ce possible ?
m
0
l
a c 145 L Programmation
30 Décembre 2009 15:43:33

Le souci vient peut-être de ta base de données qui n'a pas de clé primaire:
  1. CREATE TABLE `livredor`.`livredor` (
  2. `Id` int(11) NOT NULL auto_increment ,
  3. `Nom` varchar(50) NOT NULL ,
  4. `Genre` char(1) NOT NULL ,
  5. `Satisfaction` int(1) NOT NULL ,
  6. `Commentaires` blob NOT NULL,
  7. PRIMARY KEY (`Id`)
  8. ) ENGINE = MYISAM ;

m
0
l
30 Décembre 2009 15:51:53

Oui en effet dans ma première table je n'avais pas mis de clé primire, ce que j'ai donc modifié par la suite.
Mais les enregistrements ne se font toujours pas. A part les 2 fois où ça a fonctionner.
m
0
l
a c 145 L Programmation
30 Décembre 2009 16:02:42

Peux tu copier ton code actuel, ainsi que la structure de ta table stp ?
m
0
l
30 Décembre 2009 16:22:41

salut,

une clé primaire n'est pas indispensable, mais plus pratique pour gérer les requetes...
par contre le type des champs lui est important, et un "INT Not Null" pour Commentaires, cela n'est pas vraiment adapté pour un commentaire :) 
donc modifies bien le type de chaque champs...
moi j'ai déjà eu le tour sur un type INT, au bout d'un certain nombre d'insertion, j'ai du passer à BIGINT pour permettre à des nouveaux insertions :) 

ps : je te conseille le type TEXT pour Commentaires, blob étant pour insérer des fichiers binaires, par exemple une image...
m
0
l
30 Décembre 2009 16:33:29

Merci pour ces conseils!

Donc ma nouvelle table est :

CREATE TABLE `livredor`.`livredor` (
`Ident` MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Nom` VARCHAR( 50 ) NOT NULL ,
`Genre` VARCHAR( 2 ) NOT NULL ,
`Satisfaction` VARCHAR( 10 ) NOT NULL ,
`Commentaires` TEXT NOT NULL
) ENGINE = MYISAM ;


Mais les enregistrements ne fonctionnent toujours pas :sweat: 
m
0
l
a c 145 L Programmation
30 Décembre 2009 16:38:46

Et ton code est toujours celui donné par Freemaster plus haut ?
Fais donc un echo de $maRequete pour voir ce qu'elle contient.
m
0
l
30 Décembre 2009 16:43:44

Voilà mon code :

Traitement.php :

<!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> Traitement.php</title>
</head>
<body>
<?php
require_once("config.php");
if ((isset($_POST['ident']))&&(isset($_POST['Nom']))&&(isset($_POST['Genre']))&&(isset($_POST['Satisfaction']))&&(isset($_POST['Commentaires'])))
{
mysql_connect(HOST,USER,PASSWORD);
mysql_select_db(DB);
$Nom=$_POST['Nom'];
$Genre=$_POST['Genre'];
$Satisfaction=$_POST['Satisfaction'];
$Commentaires=$_POST['Commentaires'];

$Commentaires=mysql_real_escape_string($Commentaires);
$Nom=mysql_real_escape_string($Nom);

$sql = "SELECT * FROM `livredor` LIMIT 0, 30 ";
$maRequete="insert into livredor (ident,Nom,Genre,Satisfaction,Commentaires) values ('$ident','$Nom','$Genre','$Satisfaction','$Commentaires')";
mysql_query($maRequete);
}
?>
<a href= "http://localhost/MonSiteWeb/Page%20accueil.php" > <font color="#CC0033" size=3 face="Calisto MT"> ← Retour à la page d'accueil </font> </a>
<br><br><br>
<center>
<font color="#2D002F" size=6 face="Calisto MT"> Merci pour votre message ! </font>
</center>

</body>

</html>


config.php

<?php
define("HOST","localhost");
define("USER", "root");
define("PASSWORD", "");
define("DB","livredor");
?>

livredor.php pour le formulaire

<!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" />
<style type="text/css">
form, .pages
{
text-align:center;
}
</style>
</head>
<B>
<a href= "http://localhost/MonSiteWeb/Page%20accueil.php" > <font color="#CC0033" size=3 face="Calisto MT"> ← Retour à la page d'accueil </font> </a>
                                             
                                             
             
<font color="#660066" size=6 face="Calisto MT">
Votre avis sur le site
                             
</hr>
</font>
</B>
<br> <br> <br> <br>
<body BGCOLOR="#DFF1A5">
<font face="Calisto MT">
<form
method="POST"
action="Traitement.php">
Nom <input type="text" name="Nom"/>
<br/><br/>
Genre <input type="radio" name="Genre" value="M"/> M
<input type="radio" name="Genre" value="F"/> F
<br/><br/>
Votre avis sur le site
<select name="Satisfaction">
<option value="1">Pas du tout satisfait </option>
<option value="2"> Juste satisfait </option>
<option value="3"> Satisfait </option>
<option value="4"> Très satisfait </option>
</select>
<br/> <br/>
Mettez ici vos commentaires <br/>
<textarea name="Commentaires" rows="10" cols="50">
</textarea>
<br/> <br/>
<input type="submit" value="envoyer"/>
</form>
</font>
</body>
</html>
m
0
l
30 Décembre 2009 16:44:03

est-ce bien cette requete ?

"insert into livredor (Nom, Genre, Satisfaction, Commentaires) values('$v1','$v2','$v3',$v4')";

m
0
l
30 Décembre 2009 16:47:14

j'avais pas vu ta réponse :) 

$maRequete="insert into livredor (ident,Nom,Genre,Satisfaction,Commentaires) values ('$ident','$Nom','$Genre','$Satisfaction','$Commentaires')";

le $ident tu n'as pas à le mettre ici... puisqu'il est en auto-incrément, il sera inséré de lui même...

donc essaye :

$maRequete="insert into livredor (Nom, Genre, Satisfaction, Commentaires) values ('$Nom','$Genre','$Satisfaction','$Commentaires')";


de plus :
  1. mysql_connect(HOST,USER,PASSWORD);
  2. mysql_select_db(DB);


remplace par
  1. mysql_connect($HOST,$USER,$PASSWORD);
  2. mysql_select_db($DB);

m
0
l
30 Décembre 2009 16:48:17

Oui j'ai modifié le nom des variables.
m
0
l
30 Décembre 2009 16:51:21

Oui super!!!
Ca marche!! C'était en effet le $ident qui était de trop!

MERCI BEAUCOUP BAUCOUP!!
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS