Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2011, 16h52   #1
Invité de passage
 
Inscription : juin 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
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 :
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 :
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.
quentin74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h07   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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 :
INSERT INTO newdevis(id, description, nom, societe, mail) VALUES(null, :descriptions, :nom, :societe, :mail)
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h13   #3
Invité de passage
 
Inscription : juin 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
Ca ne marche point :/

Mais c'est gentils d'avoir essayer.
quentin74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h15   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
On peut voir un desc de la table en question ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h49   #5
Invité de passage
 
Inscription : juin 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
http://www.quentingodillon.com/07.png
quentin74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h54   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
La commande c'est dans la console MySQL
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h57   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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 :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 30/06/2011, 18h13   #8
Invité de passage
 
Inscription : juin 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
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.
quentin74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 18h20   #9
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 16h47   #10
Invité de passage
 
Inscription : juin 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
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.
quentin74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 10h36   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Pas de quoi.

Tout ce qu'il te reste à faire est de cliquer sur
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h49.


 
 
 
 
Partenaires

Hébergement Web