php et mysql

malus56
Invité n'ayant pas de compte PHPfrance

27 avr. 2011, 14:44

Bonjour,
je suis débutant dans l'utilisation de php et mysql et j'essai d'écrire le contenu de mon formulaire dans une base de donnée et je me retrouve avec des erreurs voici donc le code que j'ai utilisé et je n'arrive pas à trouver mon erreur:
le formulaire:
<form method="post" id="formulaire_client" action="testmysql.php">
<fieldset>
<legend>Vous :</legend>

<fieldset>
<legend>Civilité :</legend>
<p>
Monsieur:<input type="radio" name="civ" value="M" id="Monsieur"/>
Madamme:<input type="radio" name="civ" value="Mme" id="non" />
</p>
</fieldset>
<fieldset>
<legend>Identifiants</legend>
<p> Pseudo:<input type="text" name="pseudo" id="pseudo" /> </p>
<p> Nom:<input type="text" name="nom" id="nom" /></p>
<p> Prénom:<input type="text" name="prenom" id="prenom /></p>
<p> Date de naissance:
<select name="Jour">
<?php
for($i=1;$i<=31;$i++)
{

?>
<option value="choix1"><?php echo $i ?></option>
<?php
}
?>
</select>
<select name="Mois">
<option value="choix1">Janvier</option>
<option value="choix2">Fevrier</option>
<option value="choix3">Mars</option>
<option value="choix4">Avril</option>
<option value="choix1">Mai</option>
<option value="choix2">Juin</option>
<option value="choix3">Juillet</option>
<option value="choix4">Aout</option>
<option value="choix1">Septembre</option>
<option value="choix2">Octobre</option>
<option value="choix3">Novembre</option>
<option value="choix4">Dévembre</option>
</select>
<select name="Année">
<?php
for($i=1900;$i<=2010;$i++)
{

?>
<option value="choix1"><?php echo $i ?></option>
<?php
}
?>
</select>
</p>
</fieldset>
</fieldset>
<fieldset>
<legend>Vos coordonnées :</legend>
<p> Email:<input type="text" /></p>
<p>Adresse:<input type="text" /></p>
<p>Adresse complement:<input type="text" /></p>
<p>Code Postal:<input type="text" /></p>
<p>Ville:<input type="text" /></p>
<p>Pays:
<select name="choix">
<option value="choix1">France</option>
<option value="choix2">UK</option>
<option value="choix3">Espagne</option>
<option value="choix4">Italie</option>
</select>
</p>
</fieldset>
<fieldset>
<p>
<input type="submit" value="Envoyer" />
<input type="reset" value="Annuler" />
</p>
</fieldset>



</form>


et la page de traitemennt mysql:

<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=geolocalisation', 'root', '', $pdo_options);


$req = $bdd->exec('INSERT INTO client(Civilité,Nom,Prénom,Pseudo) VALUES(:$_POST['civ'], :$_POST['nom'], :$_POST['prenom'], $_POST['pseudo'])');


echo 'OK !';
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>


Merci d'avance pour votre aide.

ViPHP
ViPHP | 2577 Messages

27 avr. 2011, 14:58

Bonjour,

Quelle erreur ?

A mon avis, il faut que tu regardes dans la doc quelle est la syntaxe pour passer des variables avec PDO

Tu peux toujours remplacer les ' par des " sur la requete et les :$_POST['nom'] par '$_POST['nom']' ou '${_POST['nom']}'

Eléphant du PHP | 241 Messages

27 avr. 2011, 16:54

Salut,
avec PDO les :variable est un paramètre, ce paramètre attend une valeur lors de l'exécution de la requête.

Comme le signale Mazarini, il faut lire la doc ! http://php.net/manual/fr/book.pdo.php

Sinon juste pour aider dans le cas présent, il faudrait donc soit mettre directement les $_POST dans la requête mais sans les deux points, néanmoins cette solution N'EST PAS DU TOUT CONSEILLEE !!!
(De plus il y a une erreur au niveau des guillemet simple dans la requête etc.)

Il faudrait donc utiliser une requête preparé et ensuite bindValue ou bindParam pour associer une valeur à un paramètre.
<?php
try
{
	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
	$bdd = new PDO('mysql:host=localhost;dbname=geolocalisation', 'root', '', $pdo_options);

	$req = $bdd->prepare('INSERT INTO client(Civilité,Nom,Prénom,Pseudo) VALUES(:civ, :nom, :prenom, :pseudo)');
	$req->bindValue('civ',$_POST['civ'],PDO::PARAM_STR);
	$req->bindValue('nom',$_POST['nom'],PDO::PARAM_STR);
	$req->bindValue('prenom',$_POST['prenom'],PDO::PARAM_STR);
	$req->bindValue('pseudo',$_POST['pseudo'],PDO::PARAM_STR);

	$req->execute();

	echo 'OK !';
}

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