IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème INSERT des donnée provenant d'un formulaire


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème INSERT des donnée provenant d'un formulaire
    Bonjour, je vient vers vous après 48h de prise de tête intense.

    Je vous expose la situation, j'ai une page devis.php avec un formulaire qui renvoie vers validations_devis.php, qui contient le code php censé vers un INSERT des donnée récoltés ...
    ... et ca marche pas.

    La vrai frustration est que ce même script fonctionne parfaitement avec un autre site que j'ai fait, et je ne voit vraiment pas quel erreur je commet. Je précise que je fait tourner mon site en local sur wamp si ca a de l'importance.

    Donc si quelque passe par là et à la courtoisie de plancher sur mon problème, ca serait vraiment gentil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="post" action="validations_devis.php"><br/><br/>
                            <textarea name="descriptions" rows="8" cols="45"></textarea><br/><br/>
                <input type="text" name="nom" /><br/><br/>
                            <input type="text" name="societe" /><br/><br/>
                            <input type="text" name="mail" /><br/><br/>
     
                            <input type="submit" value="Valider" />
             </form>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=testqg', 'root', '', $pdo_options);
     
    $req = $bdd->prepare('INSERT INTO newdevis(id, description, nom, societe, mail) VALUES(\'\', :descriptions, :nom, :societe, :mail)');
    $req->execute(array(
            'descriptions' => $_POST['descriptions'],
            'nom' => $_POST['nom'],
            'societe' => $_POST['societe'],
            'mail' => $_POST['mail'],
            ));
     
    echo "Valider"; ?>
            </div>
     
        <footer>
            <?php include 'footer.php'; ?>

    Liste des erreurs
    http://www.quentingodillon.com/03.png

    Merci de m'avoir lu.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Pour MySQL, une chaine vide n'est pas NULL (à moins de passer le paramètre PDO::ATTR_ORACLE_NULLS à PDO::NULL_EMPTY_STRING dans les option, voir ici: http://php.net/manual/en/pdo.setattribute.php).

    Remplace ta requête avec ça et ça devrait rouler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO newdevis(id, description, nom, societe, mail) VALUES(null, :descriptions, :nom, :societe, :mail)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ca ne marche point :/

    Mais c'est gentils d'avoir essayer.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    On peut voir un desc de la table en question ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    La commande c'est dans la console MySQL

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Aaaaah pardon. Vraiment désolé, j'avais l'erreur sous les yeux dès le départ mais ça m'a échapé. Les index dans le tableau passé à PDOStatement::execute doit IMPERATIVEMENT correspondre aux placeholders dans la requête.

    Dans ton cas ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req->execute(array(
            ':descriptions' => $_POST['descriptions'],
            ':nom' => $_POST['nom'],
            ':societe' => $_POST['societe'],
            ':mail' => $_POST['mail'],
            ));
    Il ne faut pas oublier les :

    Au passage, je te recommande de sécuriser un peu mieux que ça car les entrées dans $_POST ne seront pas forcément présentes.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    La console ne me renvoie rien quand je fait un desc 'matable'.

    Ta solutions était logique mais elle marche pas, c'est bizarre

    Et sinon oui une fois que je me serait sortit de cette galère je sécuriserai mon code.

  9. #9
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    La console MySQL renvoie toujours quelque chose, t'es sûr d'être dans la bonne DB ?

    Bref, quelle est l'erreur retournée par MySQL lors de l'execution de la requête ? Erreur que tu peux récupérer avec PDO::errorInfo.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    La grosse erreur venait bien du problème venait bien des index dans le tableau passé à PDOStatement::execute.

    L'autre erreurs était juste un 's' que j'avais omis.

    Merci de m'avoir aider Benjamin, c'était gentil de ta part.

  11. #11
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Pas de quoi.

    Tout ce qu'il te reste à faire est de cliquer sur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion des données saisies sur un formulaire
    Par vanesa dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/08/2008, 17h28
  2. Traitement des données provenant d'un formulaire
    Par captainflex dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 03/05/2007, 15h21
  3. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17
  4. Réponses: 6
    Dernier message: 15/02/2006, 14h02
  5. [C#] problème avec l'insertion des données dans MySQL
    Par madica dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/11/2005, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo