Page 1 sur 1

php et mysql

Posté : 27 avr. 2011, 14:44
par malus56
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.

Re: php et mysql

Posté : 27 avr. 2011, 14:58
par Mazarini
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']}'

Re: php et mysql

Posté : 27 avr. 2011, 16:54
par misterflo
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());
}
?>