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 :

Requête mysql avec des variables $_sessions


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut Requête mysql avec des variables $_sessions
    bonjour

    j'essaie d'enregistrer sur ma base de données plusieurs informations avec des variables $_session et je ne suis pas sure de ma syntaxe car ca ne marche pas !!!!

    je vous montre ce que j'ai ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("insert into client values(' '," .$_SESSION['nom']. "," .$_SESSION['prenom']. "," .$_SESSION['adresse']. "," .$_SESSION['code_postal']. "," .$_SESSION['ville']. ",$ref_pays," .$_SESSION['telephone'].  "," .$_SESSION['email']) or die (mysql_error());
    le premier champ de ma table est un auto-increment.
    j'ai des doutes sur comment mettre ces variables entre guillemet ou non mais j'ai essayé plusieurs choses et rien n'y fais.

    merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    tu n'as pas de message d'erruers ? les variables ne sont pas vide ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    a priori il faut que t'énumères tes colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (a,b,c) VALUES (1,2,3)
    et pour ton auto-incrément pas d'espace entre les quotes ''.

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    Salut,
    a priori il faut que t'énumères tes colonnes
    Pas forcement

    Citation Envoyé par Djakisback Voir le message
    et pour ton auto-incrément pas d'espace entre les quotes ''.
    La je pense que tu as raison mais pas sur ...
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut
    le message d'erreur est le suivant :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rue costeseque,34500,beziers,FR,0468333254,mazezf@sqef.fr' at line 1

    les données ne sont pas vides j'ai vérifié.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut
    g enlever l'espace de debut mais ca ne change rien

  7. #7
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Pas forcement
    Je me suis posé la question en fait ^^ mais dans la doc la syntaxe sans énumération n'est pas proposée.

    Sinon il faut aussi que tu mettes des quotes pour tes données qui sont des chaînes de caractères et il te manque une parenthèse fermante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("insert into client values('','" .$_SESSION['nom']. "','" .$_SESSION['prenom']. "','" .$_SESSION['adresse']. "','" .$_SESSION['code_postal']. "','" .$_SESSION['ville']. "','".$ref_pays."','" .$_SESSION['telephone'].  "','" .$_SESSION['email']."')") or die (mysql_error());
    Mysql (pas toutes les versions je crois) tolère les quotes pour les champs numériques donc en fait tu peux en mettre partout.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut
    j'ai fais ce que tu m'a dis mais maintenant ca me met ce message

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    la je sais plus...

  9. #9
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    C'est peut-être un problème d'échappement, d'ailleurs normalement tu dois protéger tes données avec mysql_real_escape_string(). Sinon essaie d'afficher ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "insert into client values('','" .$_SESSION['nom']. "','" .$_SESSION['prenom']. "','" .$_SESSION['adresse']. "','" .$_SESSION['code_postal']. "','" .$_SESSION['ville']. "','".$ref_pays."','" .$_SESSION['telephone'].  "','" .$_SESSION['email']."')";
    mysql_query($sql) or die (mysql_error()." - ".$sql);

  10. #10
    Invité
    Invité(e)
    Par défaut
    Salut,

    Quels sont les champs de ta table ainsi que leur type?

    est-ce le champ correspondant à ta clé primaire? est-il en autoincrément?

    Je te conseille de mettre les champs de tes tables dans ton insert pour des raisons de clarté et pour éviter de chercher longtemps.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut
    voila j'ai protéger mes données et j'ai mis le nom des colonnes

    $nom = mysql_real_escape_string($_SESSION['nom']);
    $prenom = mysql_real_escape_string($_SESSION['prenom']);
    $adresse = mysql_real_escape_string($_SESSION['adresse']);
    $CP = mysql_real_escape_string($_SESSION['code_postal']);
    $ville = mysql_real_escape_string($_SESSION['ville']);
    $tel = mysql_real_escape_string($_SESSION['telephone']);
    $mail = mysql_real_escape_string($_SESSION['email']);

    mysql_query("insert into client (ref_client, nom_client, prenom_client, adresse_client, code_postal_client, ville_client, ref_pays, telephone_client, email_client) values('', $nom, $prenom, $adresse, ".$CP.", $ville, $ref_pays, ".$tel.", $mail") or die (mysql_error());

    ref_client est bigint en autoincrement et cle primaire
    nom prenom adresse ville sont en text
    codepostal en smallint
    ref_pays en varchar
    telephone en mediumint
    email en varchar


    et le message d'erreur est maintenant :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rue costeseque, 34500, beziers, FR, 0468333254, maninna@hotmail.com' at line 1

    je comprend pas car il commence l'enumération en plein milieu de l'adresse alors que j'ai tester mes variables une par une et tout s'affiche correctement.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut
    j'ai oublier de preciser que $ref_pays est une variable classique qui ait créer un peu plus haut dans le script et elle s'affiche egalement

    merci

  13. #13
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    ref_client est bigint en autoincrement et cle primaire
    Comme ref_client est une clé primaire auto-incrémentée, il ne faut pas mettre cette colonne dans l'INSERT.
    Il faut donc citer toutes les colonnes qui vont recevoir des données et bien sûr leur faire correspondre les VALUES dans le même ordre.

    nom prenom adresse ville sont en text
    Des VARCHAR seraient plus appropriés.

    codepostal en smallint
    Mauvaise conception !
    Un code postal n'est pas un nombre mais, comme son nom l'indique, un code.
    On ne fait pas d'opération avec un code postal.
    Si le code postal ne concerne que des données françaises, mettre cette colonne en CHAR(5).

    telephone en mediumint
    Idem ci-dessus pour la même raison.

    On devrait donc arriver à quelque chose qui ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysql_query(
    "insert into client (nom_client, prenom_client, adresse_client, code_postal_client, ville_client, ref_pays, telephone_client, email_client) 
    values('$nom', '$prenom', '$adresse', '$CP', '$ville', '$ref_pays', '$tel', '$mail' ") 
    or die (mysql_error());
    Pour débugger, il est même préférable de passer ça en deux étapes (en plus c'est plus facile à lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "insert into client (nom_client, prenom_client, adresse_client,   code_postal_client, ville_client, ref_pays, telephone_client, email_client) 
    values('$nom', '$prenom', '$adresse', '$CP', '$ville', '$ref_pays', '$tel', '$mail' ";
     
    echo "<br />SQL : $sql"; //Ligne à commenter une fois le débuggage fait
     
    mysql_query($sql) or die (mysql_error());
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Par défaut
    merci beaucoup pour votre réponse, je suis encore en formation de developpeur donc cela m'aide bien.

    encore merci

Discussions similaires

  1. [AC-2003] creer une requête en VBA avec des variables
    Par qung88 dans le forum VBA Access
    Réponses: 14
    Dernier message: 23/02/2011, 15h19
  2. [MySQL] Mettre des conditions dans une requête mysql avec pdo
    Par shima5 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/10/2010, 21h11
  3. [MySQL] Enregistrer en BDD une requête Mysql contenant des variables PHP puis l'exécuter
    Par ChriGoLioNaDor dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/11/2009, 02h13
  4. Intégrer requête MySQL avec des CSS
    Par bruno7619 dans le forum Langage
    Réponses: 6
    Dernier message: 25/05/2009, 09h15
  5. syntaxe requete mysql avec des variables
    Par harlock59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/09/2006, 17h53

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