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

Langage PHP Discussion :

Concaténation sur un select


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Concaténation sur un select
    Bonjour

    Je suis en train de développer une fonction de recherche sur mon site, et j'ai un petit souci de concaténation dans un SELECT.

    Pour l'instant cette instruction fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT id_membre, id_pays, actif FROM identification WHERE actif = 1 AND id_pays = '.$id_pays.' ORDER BY RAND(' . $_SESSION['key'] . ') LIMIT '.($page * $nb).','.$nb.'';
    Mais je voudrais rajouter une condition sur la variable $id_pays dans le select, car la recherche va devenir multi-critères. J'ai donc essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo '$sql = "SELECT id_membre, id_pays, actif FROM identification WHERE actif = 1'; 
     
    if ($id_pays != '0')
    echo ' AND id_pays = '.$id_pays.' ORDER BY RAND(' . $_SESSION['key'] . ') LIMIT '.($page * $nb).','.$nb.''"';
    Mais ça ne fonctionne pas il y a un souci sur la concaténation... J'ai essayé plusieurs autres solutions sans succès...

    Merci de votre aide

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    C'est à dire, qu'est-ce qui ne fonctionne pas ?
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Parse error
    Parse error: syntax error, unexpected '"', expecting ',' or ';'

    Problème de concaténation...

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Oui, ça veut dire que tu t'es embrouillé dans les guillemets dans cette ligne, à la fin je crois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ' AND id_pays = '.$id_pays.' ORDER BY RAND(' . $_SESSION['key'] . ') LIMIT '.($page * $nb).','.$nb.''"';
    PS : ce serait pas mal de reconnaître les messages d'erreur qui sont assez parlants. Apprendre un langage de programmation implique souvent d'acquérir un minimum de connaissance de l'anglais...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut To be or not to be...
    Rassures toi JML je suis plus fort en anglais qu'en PHP... !

    J'ai bien compris la parse error, le tout étant mainteannt de corriger le PHP...!

    J'avais déjà essayé ta solution, mais ça me renvoie la même erreur...

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut


    Rhôô, j'avais pas vu ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '$sql = "SELECT id_membre, id_pays, actif FROM identification WHERE actif = 1';
    Tu voulais dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id_membre, id_pays, actif FROM identification WHERE actif = 1";
    Je te laisse corriger la suite sur le même principe.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Une solution parmi tant d'autres :

    Code php non testé : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $sql = "SELECT id_membre, id_pays, actif FROM identification WHERE actif = 1"; 
    if ($id_pays != '0')
        $sql .= sprintf(' AND id_pays=%d ORDER BY RAND(%s) LIMIT %d, %d', $id_pays, $_SESSION['key'], $page*$nb, $nb); 
    echo $sql;
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Ouch...
    Ok !

    Finalement je garde ta solution avec le sprintf, car la recherche allant devenir multi-critères, ça va apparemment me faciliter la tâche au niveau des concaténations...!

    Tu m'as fait découvrir cette commande que je ne connaissais pas !

    Merci !

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

Discussions similaires

  1. Question sur un SELECT...... AS....
    Par geant63 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 15/09/2009, 17h17
  2. Erreur ORA-01555 sur un select
    Par LRI dans le forum Oracle
    Réponses: 2
    Dernier message: 13/05/2005, 10h42
  3. Faire apparaître un champ texte en cliquant sur un select
    Par yoyot dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/03/2005, 16h16
  4. ajout de colonnes sur une selection
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/08/2004, 17h44
  5. Concaténation de 2 select en 1 seul
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/08/2003, 11h38

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