php et mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : php et mysql

Re: php et mysql

par misterflo » 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());
}
?>

Re: php et mysql

par Mazarini » 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']}'

php et mysql

par malus56 » 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.