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

PHP & Base de données Discussion :

Formulaire contenant des cote et des guillemets [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut Formulaire contenant des cote et des guillemets
    Bonjour, j'apprend a programmer en PHP.

    J'ai réussit à me faire un petit formulaire en HTMLqui as pour BUT de lancer une requête SQL sous phpmyadmin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    include "connector.php"
    mysql_query("INSERT INTO Waranty (id,Prénom,Nom,Mail,TEL,société,Adresse1,Adresse2,Pays,Région,Ville,CP,Matériel,Marque,Type,SN,Certificat) VALUES ('','$Nom','$Prenom','$Mail','$TEL','$société','$Adresse1','$Adresse2','$Pays','$Région','$Ville','$CP','$Matériel','$Marque','$Type','$SN','$Certificat') ") or die ("erreur insert ".mysql_error());
    //et on referme la connexion
    mysql_close()

    Tout fonctionne correctement.
    Le problème c'est que quand dans mon formulaire je mes des ' ou " j'ai une erreur de syntaxe qui sort.

    comment faire pour que je puisse entré des cote ou double cote (' ou ") dans mon formulaire PHP ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    mysql_query est complétement obsolète.
    Puisque tu debutes, il faut directement passer à PDO et aux requêtes préparées pour ton problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $pdo = new PDO ('mysql:host=localhost;dbname=tabase', 'login', 'motdepasse');
    $sth = $pdo->prepare('INSERT INTO Waranty (Prénom,Nom,Mail,TEL,société,Adresse1,Adresse2,Pays,Région,Ville,CP,Matériel,Marque,Type,SN,Certificat) VALUES
    (:nom, :prenom, :mail, :tel, :societe, :adresse1, :adresse2, :pays, :region, :ville, :cp, :materiel, :marque, :type, :sn, :certificat)');
     
    $sth->execute(array($Nom,$Prenom,$Mail,$TEL,$société,$Adresse1,$Adresse2,$Pays,$Région,$Ville,$CP,$Matériel,$Marque,$Type,$SN,$Certificat));
    Et ne pas de majuscules et accents au petit bonheur la chance dans tes noms (base de données, variables etc.) c'est source d'erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut
    là sa marche plus

    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /var/www/Prog/index.php on line 117
    qui correspond à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth->execute(array($Nom,$Prenom,$Mail,$TEL,$société,$Adresse1,$Adresse2,$Pays,$Région,$Ville,$CP,$Matériel,$Marque,$Type,$SN,$Certificat));
    mais sa devrais résoudre mon problème de quotte (') dans mon formulaire ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    sauf erreur, sabotage à mixé 2 syntaxes de requêtes préparées :

    1- avec placeholder anonymes (points d'interrogation) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sth = $pdo->prepare('INSERT INTO Waranty 
    (Prénom,Nom,Mail,TEL,société,Adresse1,Adresse2,Pays,Région,Ville,CP,Matériel,Marque,Type,SN,Certificat) 
    VALUES 
    (?,?,?,?,.........)'); // Avec autant de ? que de variables
    $sth->execute(array($Nom,$Prenom,$Mail,$TEL,$société,$Adresse1,$Adresse2,$Pays,$Région,$Ville,$CP,$Matériel,$Marque,$Type,$SN,$Certificat));
    2- avec placeholder nommés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $sth = $pdo->prepare('INSERT INTO Waranty 
    (Prénom,Nom,Mail,TEL,société,Adresse1,Adresse2,Pays,Région,Ville,CP,Matériel,Marque,Type,SN,Certificat) 
    VALUES
    (:nom, :prenom, :mail, :tel, :societe, :adresse1, :adresse2, :pays, :region, :ville, :cp, :materiel, :marque, :type, :sn, :certificat)');
     
    $sth->execute(array(
    ':nom' => $Nom,
    ':prenom' => $Prenom,
    ... // et ainsi de suite...
    ));
    À TOI de lire des tutos :


  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Alors je pense que si tu utilises la fonction addslashes ca devrait marcher.
    Ex : 
    $Prenom = addslashes($_POST["TB_Pnom"]);
    Sur d'autre forum, on ma aidé directement sans tourné au tour du pot.
    mais je vais m’intéressé a ce que tu m'a dit.

    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    addslashes n'est pas la solution.

    Sauf si tu veux continuer à coder comme ma grand-mère...

    La solution est là :
    Citation Envoyé par sabotage Voir le message
    ... passer à PDO et aux requêtes préparées ....

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

Discussions similaires

  1. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  2. Réponses: 4
    Dernier message: 02/04/2008, 17h51
  3. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  4. Réponses: 3
    Dernier message: 23/01/2007, 08h14

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