Impasse avec PDO

Eléphanteau du PHP | 30 Messages

11 oct. 2015, 05:05

Bonjour,
je Suis nouveau en programmation et depuis un certain temps je me suis mis en PDO depuis que j'ai appris que la procédure de connexion à une base de donnée par Mysql_connect et Mysql_query étaient périmé
maintenant j’éprouve d'énormes difficultés et je ne trouve pas de solution par rapport à une question très simple , comment parvenir à alimenter une table contenue dans une base via un petit formulaire avec PDO . J'ai consulté toute la littérature ,les tutos , etc faits sur PDO je ne trouve rien qui puisse répondre à ma préoccupation.
J'ai créé une base de donnée avec phpMyadmin nommée  : ''amateurs'' et
une table nommée :''inscription''
La table est constituée des 3 champs suivants : ''prénom'' , ''nom'' , ''adresse''
Je comprend comment faire pour me connecter à la base j'ai parfaitement réussi cette étape avec le code suivant :

<?php
$bdd = new PDO('mysql:host=localhost;dbname=amateurs','root','');
echo"Connection a la base réuissie"
?>

maintenant je cherche quelqu'un pour m'aider à écrire le reste du code qui me permettra :
de construire un formulaire pour remplir ma table et la requette appropriée pour transférer les données saisies dans le formulaire vers la table.
Ca me sera d'un grand apport si quelqu'un pourrait m'apporter son aide
merci d'avance

Eléphanteau du PHP | 30 Messages

12 oct. 2015, 00:22

j'ai pu essayé de faire de construire ceci pour resoudre mon probleme quelqu'un pourrait il regarder et me rectifier s'il y'a lieu
Wamp me signale une erreur à la ligne l 31 c'est au niveau de la ligne '' $req->bindValue(:prenom, '$prenom', PDO: ARAM_STR); ''
j'ai beau cherché mais je sais pas à quoi cela est dû
le méssage d'erreur est le suivant:
Parse error: syntax error, unexpected ':' in C:\wamp\www\Nouveau dossier (2)\Site2\mon quatrieme site.php on line 31
merci

[quotej'ai pu essayé de faire de construire ceci pour resoudre mon probleme quelqu'un pourrait il regarder et me rectifier s'il y'a lieu
Wamp me signale une erreur à la ligne l 31 c'est au niveau de la ligne '' $req->bindValue(:prenom, '$prenom', PDO: ARAM_STR); ''
j'ai beau cherché mais je sais pas à quoi cela est dû
le méssage d'erreur est le suivant:
Parse error: syntax error, unexpected ':' in C:\wamp\www\Nouveau dossier (2)\Site2\mon quatrieme site.php on line 31
merci

<html>
<head>
</head>
<body>

<?php

$prenom = $_POST['prenom'] ;
$nom = $_POST['nom'] ;
$adresse = $_POST['adresse'] ;

echo"

<form method='post' action='form.php'>
Prenom :
<br/>
<input type='text' name='prenom'/>
Nom :
<br/>
<input type='text' name='nom'/>
Adresse :
<br/>
<input type='text' name='adresse'/>
<input type='submit' value='Inscription'/>

</form>
";
$bdd = new PDO('mysql:host=localhost;dbname=amateurs','root','');

$req = $bdd->prepare("INSERT INTO agent(prenom,nom,adresse) VALUE (:prenom, :nom, :adresse)");
$req->bindValue(:prenom, '$prenom', PDO: ARAM_STR);
$req->bindValue(:nom, '$nom', PDO: ARAM_STR);
$req->bindValue(:adresse, '$adresse', PDO: ARAM_STR);
$req->execute();

?>

</body>
</html>][/quote

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 oct. 2015, 09:31

Bonjour,

L'erreur vient du fait qu'il manque les apostrophes autour des noms de tes paramètres lors de l'appel à bindValue() afin que php les considère comme des chaines de caractères et non comme des variables. Par ailleurs, tu as ajouté ces apostrophes autour de tes variables contenant les valeurs, résultat, c'est la chaine et non la valeur contenue dans la variable qui serait utilisée :)
// utilise 
$req->bindValue(':prenom', $prenom, PDO:ARAM_STR);
// au lieu de 
$req->bindValue(:prenom, '$prenom', PDO: ARAM_STR);

http://php.net/manual/fr/pdostatement.bindvalue.php
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

12 oct. 2015, 20:09

Bonsoir, j'ai essayé de rectifier mon code comme vous me l'aviez suggère maintenant wamp ne me signale plus aucune erreur et m'affiche correctement mon formulaire , le seul problème auquel je suis actuellement confronté est que lorsque je tente de saisir des informations avec le formulaire, dés que j'appuis sur le bouton ''ENVOYER'' le navigateur m'affiche ''PAGE WEB INTROUVABLE''
quel est le problème

Code : Tout sélectionner

<html> <head> </head> <body> <?php if ( isset( $_POST['prenom'] )) { $prenom = $_POST['prenom'] ; $nom = $_POST['nom'] ; $adresse = $_POST['adresse'] ; $bdd = new PDO('mysql:host=localhost;dbname=amateurs','root',''); $req = $bdd->prepare("INSERT INTO agent(prenom,nom,adresse) VALUE (:prenom, :nom, :adresse)"); $req->bindValue(':prenom', $prenom, PDO::PARAM_STR); $req->bindValue(':nom', $nom, PDO::PARAM_STR); $req->bindValue(':adresse', $adresse, PDO::PARAM_STR); $req->execute(); echo'Merci de vous être enregistré'; } else { echo" // Le formulaire // <form method='post' action='form.php'> Prenom : <br/> <input type='text' name='prenom'/> <br/> Nom : <br/> <input type='text' name='nom'/> <br/> Adresse : <br/> <input type='text' name='adresse'/> <input type='submit' value='Inscription'/> </form> "; } ?> </body> </html>

Mammouth du PHP | 2703 Messages

12 oct. 2015, 20:20

ton fichier php ne s’appelle vraisemblablement pas form.php

Eléphanteau du PHP | 30 Messages

12 oct. 2015, 21:32

s'agit il du fichier que j'ai créé au début avec Notap++ et que j'ai logé dans le repertoire www de Wamp ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 oct. 2015, 09:48

Bonjour,

D'après ton code, le formulaire envoi les données saisie vers une page nommée "form.php" (<form method='post' action='form.php'>) et qui se trouve dans le même répertoire que la page que tu es en train de consulter. Est-ce bien comme ça que s'appelle ton script ? (Attention : les majuscules/minuscules sont importantes)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...