Je n'arrive pas a faire de champs supplémenta

Résolu/Fermé
Cyril-like Messages postés 26 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 26 juillet 2011 - 25 mars 2011 à 21:14
Cyril-like Messages postés 26 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 26 juillet 2011 - 27 mars 2011 à 21:22
Bonjour, Suite a des essais de base de donnée mySQL fait avec un tuto du site du
zero(le TP du mini chat) j'ai voulu pour voir coller un autre champ au formulaire
j'ai fait ça pour voir si j'avais bien compris car avec deux champs ça fonctionnait impeccable et du premier coup j'ai même fait un autre formulaire d'essai avec
une autre base de donnée différente basée cette fois sur le livre "php et mysql
pour les nuls "et ça fonctionne aussi par contre,
le TP du tuto du site du zero je n'arrive pas a y mettre
des champs supplémentaires !

voila le code:

<body>

<form action="minichat_post.php" method="post">
<p>

<label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
<br />

____________________________________________________________________________________________________________________________________________________________________________________________

<label for=" email ">Votre email </label> : <input type="text" name="email " id=" nom "/><br />

<br />
_________________________________________________________________________________________________________________________________________________________________________________________


<label for="message">Message</label> : <input type="text" name="message" id="message" /><br />
<br />




<input type="submit" value="Envoyer" />
</p>
</form>


<?php
// Connexion à la base de données
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);

// Récupération des 10 derniers messages
$reponse = $bdd->query('SELECT* FROM minichat ORDER BY ID DESC LIMIT 0, 10');

// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
while ($donnees = $reponse->fetch())
{
echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) .
'</strong> : ' . htmlspecialchars($donnees['email ']).
htmlspecialchars($donnees['message']).
'</p>';
}

$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

?>
</body>
</html>

Voici le texte de la page appelée:
___________________________________

<?php
// Connexion à la base de données
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);

// Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO minichat (pseudo , email , message) VALUES(?, ?)');
$req->execute(array($_POST['pseudo'],$_POST['email,'] , $_POST['message'] ));

// Redirection du visiteur vers la page du minichat
header('Location: minichat.php');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>

Je dois ajouter que j'ai crée une case "email " dans la base de donnée "minichat"
avec phpmyadmin et que si j'enleve "$_POST ['email']" j'obtiens un bon fonctionnement
du minichat .

Pourriez vous me dire ou ça coince ?
Merci






(sur et souligné les lignes que j'ai rajoutée)

4 réponses

Bonjour

$req = $bdd->prepare('INSERT INTO minichat (pseudo , email , message) VALUES(?, ?)'); 

Les '?' après VALUES représentent les paramètres que tu passes à la requête.
Si tu passes une valeur de plus qu'avant, il faut mettre un '?' de plus
0
Cyril-like Messages postés 26 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 26 juillet 2011 1
26 mars 2011 à 00:11
Bonjour en réalité j'avais remis un 3eme point d'interrogation je n'ai pas fait attention au copié collé que j'ai mis celui que j'envoies est corrigé mais j'ai
un message d'erreur qui me dit :

Notice: Undefined index: email in /opt/lampp/htdocs/tests/minichat_post.php on line 10
Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column '$pseudo' in 'field list'

la ligne 10 c'est celle ci :

$req->execute(array($_POST['pseudo'],$_POST['email] , $_POST['message'] ));

et la ligne corrigée est celle ci :

$req = $bdd->prepare('INSERT INTO minichat (pseudo ,email , message) VALUES(?,?,?)');

Je pense qu'elle est correcte maintenant ?

Bon je tourne en rond !En plus j'ai mon serveur sendmail qui se déconfigure
tout seul (mais ça c'est une autre histoire )!
Merci pour la réponse ..
0
Bonjour
<label for=" email ">Votre email </label> : <input type="text" name="email " id=" nom "/><br />
<br /> 

Il y a un espace en trop à la fin de l'input champ "email " . D'où l'Undefined index

Quant au Unknown column '$pseudo', y a-t-il un $ ou non à pseudo ? Il y en a un dans le message d'erreur, mais pas dans la requête. Ce n'est pas possible. Encore un problème de recopie ?
0
Cyril-like Messages postés 26 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 26 juillet 2011 1
27 mars 2011 à 21:22
Hé bien grand merci je pense qu'il faut que je change et mon clavier et mes
lunettes car je ne l'avais vraiment pas vu l'espace
Non dans le pseudo c'est encore un de mes copiés collés a côté de la plaque
le problème c'était effectivement les espaces de trop ...
Super et Merci encore une fois
je mets en résolu
0