Je n'arrive pas a faire de champs supplémenta
Résolu
Cyril-like
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
Cyril-like Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
Cyril-like Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
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)
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)
A voir également:
- Je n'arrive pas a faire de champs supplémenta
- Word mettre à jour tous les champs - Forum Word
- Champs calculé tcd formule si - Forum Excel
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
- ERREUR nom du champ du tableau croisé dynamique non valide - Forum Excel
- Tableau Croisé Dynamique ✓ - Forum Excel
4 réponses
Bonjour
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
$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
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 ..
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 ..
Bonjour
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 ?
<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 ?
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
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