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 :

[SQL] problème de concaténation


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut [SQL] problème de concaténation
    bonjour,
    j"essais de récupérer une variable par la méthode GET car cette variable est passée par URL d'une autre page.
    ensuite je veux executer une requête SQL avec cette variable dans l'expression de la requête.

    $sql = 'DELETE FROM gestion_santep WHERE consultation = $_GET[id]';

    où $id est passé par URL : /destination.php?id=4

    malheureusement la variable $sql n'est pas equivalente a :

    $sql = 'DELETE FROM gestion_santep WHERE consultation = 4'; (je le sais en faisant echo $sql).

    quelle est la bonne syntaxe svp? Merci

    yvon

  2. #2
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Par défaut
    Citation Envoyé par yvonh
    bonjour,

    $sql = 'DELETE FROM gestion_santep WHERE consultation = $_GET[id]';

    où $id est passé par URL : /destination.php?id=4

    quelle est la bonne syntaxe svp? Merci

    yvon
    Essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $id = $_GET['id']; // N'oublie pas les simple quote ;) 
    $sql = "DELETE FROM gestion_santep WHERE consultation = ".$id;

  3. #3
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Je vois de plus en plus de posts, où chacun reprend ses variables $_GET (ou $_POST ou autre) et les réassigne dans des nouvelles variables... Je n'arrive pas trop à comprendre quelle est la stratégie là dedans, mais il doit certainement y en avoir une

    Sinon, c'est tout à fait possible (et ca évite de redéfinir des variables supplémentaires, inutiles) comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'DELETE FROM gestion_santep WHERE consultation = '.$_GET['id'];

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    Citation Envoyé par bkill
    Je vois de plus en plus de posts, où chacun reprend ses variables $_GET (ou $_POST ou autre) et les réassigne dans des nouvelles variables... Je n'arrive pas trop à comprendre quelle est la stratégie là dedans, mais il doit certainement y en avoir une

    Sinon, c'est tout à fait possible (et ca évite de redéfinir des variables supplémentaires, inutiles) comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'DELETE FROM gestion_santep WHERE consultation = '.$_GET['id'];
    il est vrai que cette maniere est utile si l'on utilise une seul fois la variable passé dans l'url car la création de varibale supplémentaire contraint a une baisse de performance au niveau de ton code... mais pour un simple site on ne verra pas de différence mais c'est quand même important de le savoir pour le jour où tu devras faire un site important !

  5. #5
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Citation Envoyé par cyrill
    il est vrai que cette maniere est utile si l'on utilise une seul fois la variable passé dans l'url car la création de varibale supplémentaire contraint a une baisse de performance au niveau de ton code... mais pour un simple site on ne verra pas de différence mais c'est quand même important de le savoir pour le jour où tu devras faire un site important !
    Je pense aussi que ca permet de savoir, à n'importe quel endroit du code, d'où provient la variable que tu utilises. En te forçant à toujours utiliser $_GET['id'], tu sais que cette variable à été passée en paramètre à ta page. En utilisant $id, tu peux en avoir fait n'importe quoi auparavant.
    Enfin bref, conventions de code, je dirais.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    ok merci beaucoup de tes informations

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    salut ! le mieu est de faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    extract($_GET[]);
    $sql = "DELETE FROM gestion_santep WHERE consultation ='".$id."'";
    la commande extract() va créer une variable pour chaque $_get[] que tu as passé dans ton url, en l'ocurence pour toi id. ensuite dans ta requete il ne reste plus qu'a définir ton get comme cela : $id

    bonne chance

  8. #8
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    wow, ca c'est un tout petit peu dangereux, le extract, si t'as par le plus grand des malheurs une variable locale qui porte le même nom qu'un de tes index de ton $_GET, adios!

    Aussi, la syntaxe correcte est (si je ne m'abuse):


  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    Citation Envoyé par bkill
    wow, ca c'est un tout petit peu dangereux, le extract, si t'as par le plus grand des malheurs une variable locale qui porte le même nom qu'un de tes index de ton $_GET, adios!
    hum interressant... je n'avais jamais pensé à cette option... peux-tu me donner un exemple concret s'il te plait ?

    merci

  10. #10
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Citation Envoyé par cyrill
    hum interressant... je n'avais jamais pensé à cette option... peux-tu me donner un exemple concret s'il te plait ?

    merci
    On peut gérer ces collisions, tout de même, avec des paramètres:

    "extract() vérifie l'existence de la variable avant de la créer. Le traitement des collisions est déterminé par extract_type"

    extract

    Mais l'option par défaut est EXTR_OVERWRITE, donc écrase une variable auparavant prédéfinie.

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $_GET['id'] = "123";
    $id = "456";
    extract($_GET);
    echo $id; // 123

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

Discussions similaires

  1. Problème de concaténation SQL Server 2005
    Par boubounz dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 08/01/2008, 11h54
  2. [SQL] Problème de concaténation
    Par Jumano dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/10/2007, 01h36
  3. Réponses: 6
    Dernier message: 31/05/2007, 15h54
  4. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  5. [Debutant][Join Sql] problème de join
    Par ultimax dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h01

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