[RESOLU] ajouter une ligne mysql php avec un formulaire

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 : [RESOLU] ajouter une ligne mysql php avec un formulaire

Re: ajouter une ligne mysql php avec un formulaire

par anthoony » 28 août 2014, 15:45

Merci ça fonctionne !
Merci beaucoup ;-)

Re: ajouter une ligne mysql php avec un formulaire

par moogli » 28 août 2014, 15:21

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

par anthoony » 28 août 2014, 14:23

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

par xTG » 28 août 2014, 14:16

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

par anthoony » 28 août 2014, 12:06

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

par xTG » 28 août 2014, 08:05

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

par moogli » 27 août 2014, 22:11

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

par anthoony » 27 août 2014, 20:16

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

par xTG » 27 août 2014, 20:06

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

ajouter une ligne mysql php avec un formulaire

par anthoony » 27 août 2014, 19:55

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";
}
?>