marche plus en ligne...

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 : marche plus en ligne...

Re: marche plus en ligne...

par Dr@ke » 30 mars 2010, 21:27

Parfais, et bien joué :wink:

Re: marche plus en ligne...

par mooom » 30 mars 2010, 21:25

salut,
Merci,
c'est bon j'ai repris le code , et rajouter l'extension .php5...sur le formulaire et le resultat
et ça a marcher, :)

Re: marche plus en ligne...

par stealth35 » 30 mars 2010, 14:33

t'es chez quelle hébergeur ?

Re: marche plus en ligne...

par Dr@ke » 30 mars 2010, 13:16

je suis sous php4, et j'ai changé l'extension pour en .php5, j'ai une erreur SQL...
je crains de ne pas dépasser le stade débutant :s
Rien avoir avec le stade débutant :)

Car:
PDO est fournit avec PHP 5.1 et est disponible en tant qu'extension PECL pour PHP 5.0 ; PDO requiert les nouvelles fonctionnalités OO fournies par PHP 5 et donc, ne fonctionne pas avec les versions antérieures de PHP.
Donc ceci explique cela :wink:

Re: marche plus en ligne...

par mooom » 30 mars 2010, 13:13

j'ai revérifier les codes connexion a la base, il n'y a pas d'erreur,
et le code donnée plus haut,ne fonctionne pas non plus...
je suis sous php4, et j'ai changé l'extension pour en .php5, j'ai une erreur SQL...
je crains de ne pas dépasser le stade débutant :s

Re: marche plus en ligne...

par stealth35 » 30 mars 2010, 09:45

sinon sur ton serveur t'as quel version de PHP ?

Re: marche plus en ligne...

par Dr@ke » 30 mars 2010, 03:54

J'ai testé un code basé sur l'exemple que je t'avais donné et cela fonctionne parfaitement.

tu as peut-être une erreur de syntaxe ici:
(à la place des xxx)
 $bdd = new PDO('mysql:host=xxxx', 'xxx', 'xx');
Tu peux aussi tester comme ceci:
(On peut aussi utiliser catch(PDOException $e))
$pseudo = 'pseudo';
$modele = 'modele';
$chevaux = 'chevaux';
$contact = 'contact';
$choix = 'choix';

try {
 $bdd = new PDO('mysql:host=xxxx', 'xxx', 'xx');
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $req = $bdd->prepare('INSERT INTO `voiture`(`pseudo`, `modele`, `chevaux`, `contact`, `choix`) VALUES(?, ?, ?, ?, ?)');
 $req->execute(array($pseudo, $modele, $chevaux, $contact, $choix));

 echo 'enregistrement pris en compte.';
 $bdd = null;
} catch(PDOException $e) {
 echo 'Erreur: ' . $e->getMessage();  
}
Mais suivant mes tests, les erreurs (produites manuellement pour les tests) retournées par l'exception que ce soit à la connexion, dans la requête ou même à ces deux endroits sont de type SQL.
Que ce soit avec catch(PDOException $e) ou catch(Exception $e) d'ailleurs.
Et encore une fois -> aucun bug :wink:

CF:
http://dev.mysql.com/tech-resources/art ... l-pdo.html

Autre méthode:
 function exceptionHandler($e) {
     echo 'Erreur: ' . $e->getMessage();
}
 
$pseudo = 'pseudo';
$modele = 'modele';
$chevaux = 'chevaux';
$contact = 'contact';
$choix = 'choix';

 set_exception_handler('exceptionHandler');

 $bdd = new PDO('mysql:host=xxxx', 'xxx', 'xx');
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $req = $bdd->prepare('INSERT INTO `voiture`(`pseudo`, `modele`, `chevaux`, `contact`, `choix`) VALUES(?, ?, ?, ?, ?)');
 $req->execute(array($pseudo, $modele, $chevaux, $contact, $choix));

 echo 'enregistrement pris en compte.';
 $bdd = null;

Re: marche plus en ligne...

par mooom » 30 mars 2010, 01:16

c'est ce que j'avais compris, mais comme j'avais trjs le meme message d'erreur, j'ai pensé que je devais le spécifier..
du coup,j'ai essayer plussieurs écritures, mais aucune ne marche...
et là, je viens de remettre les ?, mais rien n'y fait...

Re: marche plus en ligne...

par Dr@ke » 30 mars 2010, 01:10

Remplace:
VALUES(`pseudo`, `modele`, `chevaux`, `contact`, `choix`)
Par:
VALUES(?, ?, ?, ?, ?)
Il remplace lui même les ?
C'est justement un des buts des requêtes préparées.
Il faut donc mettre des ?

Ensuite mon code était surtout un exemple :wink:
Reprends ton code si tu préfères mais remplace ce que je te dis plus haut.

Re: marche plus en ligne...

par mooom » 30 mars 2010, 01:03

donc la page validation.php
aprés les modification qu'on m'a donné :
<?php

$pseudo = $_POST['pseudo'];
$modele = $_POST['modele'];
$chevaux = $_POST['chevaux'];
$contact = $_POST['contact'];
$choix = $_POST['choix'];

try {
 $bdd = new PDO('mysql:host=xxxx;dbname=xxx', 'xxxx', 'xxx');
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $req = $bdd->prepare("INSERT INTO `voiture`(`pseudo`, `modele`, `chevaux`, `contact`, `choix`)  VALUES(`pseudo`, `modele`, `chevaux`, `contact`, `choix`)");
 $req->execute(array($pseudo, $modele, $chevaux, $contact, $choix));

 echo 'enregistrement pris en compte.';
 $bdd = null;
} 
catch (Exception $e) {
 echo 'Erreur: ' . $e->getMessage();
}
?> 
code erreur : Parse error: syntax error, unexpected '{' in /XXX/XXX

Merci stealth35 , mais c'est ce que j'avais fait, il me semble au début, mais ça marché pas...

Re: marche plus en ligne...

par Dr@ke » 30 mars 2010, 00:54

Je repete , je n'ai aucune erreur a date merci.
Revenons au sujet.

Re: marche plus en ligne...

par stealth35 » 30 mars 2010, 00:53

Steal si tu as me parler utilise les MP stp.
Son problème n'est pas celui la
Merci :roll:
tu donnes un code qui n'est pas bon faut bien corriger, sinon ils va se retrouver avec encore plus d'erreurs

Re: marche plus en ligne...

par Dr@ke » 30 mars 2010, 00:51

Steal si tu as à me parler utilise les MP stp.
Son problème n'est pas celui la
Merci :roll:

Quand j'aurais besoin d'un cours de pdo, je te ferais signe

Re: marche plus en ligne...

par stealth35 » 30 mars 2010, 00:49

oui ca fonctionne mes c'est pas correct, si tu veux mélanger les Exception et les PDOException faut faire 2 bloc catch
try
{
    //blabla
}
catch(Exception $e)
{
    echo $e->getMessage();
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

Re: marche plus en ligne...

par Dr@ke » 30 mars 2010, 00:46

Ok si c marche pas, car ce genre de syntaxe fonctionne parfaitement sur mes sites.
(Celle que j'ai donné)

C'est que l'erreur est autrepart.

Montre ton script en entier stp