Page 1 sur 1

ajouter une ligne mysql php avec un formulaire

Posté : 27 août 2014, 19:55
par anthoony
Bonjour à tous,

j'ai un problème quand je veux ajouter une ligne dans ma base de donnée mysql à partir d'un formulaire.

voilà mon code:
<?php
try
{
	$bdd = new PDO('mysql:host=localhost;dbname=cours_particulier', 'root', '');
	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
	$prenom= $_POST['prenom'];
	$ville= $_POST['ville'];
	$annee_et_option= $_POST['annee_et_option'];
	$email= $_POST['email'];
	$numero_telephone= $_POST['numero_telephone'];
	$tarif= $_POST['tarif'];
	$disponibilité= $_POST['disponibilité'];
	
 if(!empty($_POST))
    {
$req = $bdd->prepare('INSERT INTO cours_particulier(prenom, ville, annee_et_option, email, numero_telephone, tarif, disponibilité) VALUES ($prenom, $ville, $annee_et_option, $email, $numero_telephone, $tarif ,$disponibilité)');
$req->execute(/*array(
	$prenom=> $_POST['prenom'],
	$ville=> $_POST['ville'],
	$annee_et_option=> $_POST['annee_et_option'],
	$email=> $_POST['email'],
	$numero_telephone=> $_POST['numero_telephone'],
	$tarif=> $_POST['tarif'],
	$disponibilité=> $_POST['disponibilité'])*/);
echo "Le formulaire a bien été envoyé";
}else{
echo "echec";
}
?>

Re: ajouter une ligne mysql php avec un formulaire

Posté : 27 août 2014, 20:06
par xTG
Et même pas un message d'erreur... Heureusement que l'erreur est toute bête sinon on était bon pour sortir notre boule de cristal...

Les simples quotes n'interprètent pas les variables.
Exemple :
$variable = "test";
echo '$variable'; // $variable
echo "$variable"; // test
echo $variable; // test
Ensuite pour utiliser correctement les requêtes préparées je te conseille de lire les exemples de la documentation de la fonction. ;)
http://fr2.php.net/manual/fr/pdostatement.execute.php

Re: ajouter une ligne mysql php avec un formulaire

Posté : 27 août 2014, 20:16
par anthoony
probleme.png
Ah voici le message d'erreur --'

Merci, j'avais déjà lu cette page, mais je ne sais pas comment l'adapter à mon test car les exemples qu'il propose n'est pas un ajout d'une ligne de bdd.

Re: ajouter une ligne mysql php avec un formulaire

Posté : 27 août 2014, 22:11
par moogli
salut

utilise un try / catch pour la requête.

Ta requête sql n'est pas syntaxiquement correct, même avec l’interprétation des variables ne changes rien.

utilise la méthode quote ou une requête préparée comme l'indique xTG


@+

Re: ajouter une ligne mysql php avec un formulaire

Posté : 28 août 2014, 08:05
par xTG
Merci, j'avais déjà lu cette page, mais je ne sais pas comment l'adapter à mon test car les exemples qu'il propose n'est pas un ajout d'une ligne de bdd.
Non mais tu n'as pas besoin de ça puisque tu sais déjà la rédiger.
Ce qu'il te faut c'est injecter correctement les variables et ça la page te le montre...

:calories dans une requête sera injecté grâce à :
$sth->execute(array(':calories' => $calories));
C'est le même principe pour toi sauf que les variables n'ont pas le même nom. Tu penses pouvoir t'en sortir ?  :)

Re: ajouter une ligne mysql php avec un formulaire

Posté : 28 août 2014, 12:06
par anthoony
Non mais les gars, là ça fonctionne pas, j'ai beau essayer 36000 méthodes, il y a toujours le même message d'erreur qui apparaît.
#-o

Re: ajouter une ligne mysql php avec un formulaire

Posté : 28 août 2014, 14:16
par xTG
Je vois pas comment expliquer autrement que "il faut remplacer calories par le nom de ton champ"... 8-|

Montres nous ce que tu as tenté de faire ?

Re: ajouter une ligne mysql php avec un formulaire

Posté : 28 août 2014, 14:23
par anthoony
Donc voilà ce que j'ai mis:
<?php
try
{
	$bdd = new PDO('mysql:host=localhost;dbname=cours_particulier', 'root', '');
	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
	
	
 if(!empty($_POST))
    {
$req = $bdd->prepare('INSERT INTO cours_particulier(prenom, ville, annee_et_option, email, numero_telephone, tarif, disponibilité) VALUES (:prenom, :ville, :annee_et_option, :email, :numero_telephone, :tarif ,:disponibilité)');

	$prenom= "$_POST[prenom]";
	$ville= "$_POST[ville]";
	$annee_et_option= "$_POST[annee_et_option]";
	$email= "$_POST[email]";
	$numero_telephone= "$_POST[numero_telephone]";
	$tarif= "$_POST[tarif]";
	$disponibilité= "$_POST[disponibilité]";
	
$req->execute(array(':prenom' => $prenom,':ville' => $ville,':annee_et_option' => $annee_et_option,':email' => $email,
':numero_telephone' => $numero_telephone,':tarif' => $tarif,':disponibilité' => $disponibilité
));

echo 'Le formulaire a bien été envoyé';
}else{
echo 'echec';
}
?>
L'erreur est toujours au même endroit : il y a une erreur sur "));" avant le "echo 'Le formulaire a bien été envoyé';"

Re: ajouter une ligne mysql php avec un formulaire

Posté : 28 août 2014, 15:21
par moogli
pas besoin d'utiliser des " pour affecter une variable à une autre.
les chaines de caractère DOIVENT être délimitée 'par des " ou des ') mais il faut le faire.

l'affectation d'un tableau à une variable est inutile utilise directement le tableau.

ton code simplifié
<?php
try {
    $bdd = new PDO('mysql:host=localhost;dbname=cours_particulier', 'root', '');
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if (!empty($_POST)) {
        $req =
            $bdd->prepare('INSERT INTO cours_particulier(prenom, ville, annee_et_option, email, numero_telephone, tarif, disponibilité) VALUES 
                                                     (:prenom, :ville, :annee_et_option, :email, :numero_telephone, :tarif ,:disponibilite)');

        $req->execute(array(
            ':prenom'           => $_POST['prenom'],
            ':ville'            => $_POST['ville'],
            ':annee_et_option'  => $_POST['annee_et_option'],
            ':email'            => $_POST['email'],
            ':numero_telephone' => $_POST['numero_telephone'],
            ':tarif'            => $_POST['tarif'],
            ':disponibilite'    => $_POST['disponibilité']
        ));

        echo 'Le formulaire a bien été envoyé';
    } else {
        echo 'echec';
    }
} catch (Exception $e) {
    die('Erreur : ' . $e->getMessage() . '<br />'.$e->getTraceAsString());
}
Maintenant est ce que le message d'erreur est plus long que ce que tu nous a donné ?
est ce que tu nous fournir le formulaire html que tu utilises avec ce code ?
est ce que tu peux nous fournir le create table de la table en question pour tester (au besoin) ?

@+

Re: ajouter une ligne mysql php avec un formulaire

Posté : 28 août 2014, 15:45
par anthoony
Merci ça fonctionne !
Merci beaucoup ;-)