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 requête SELECT


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut [SQL] Problème requête SELECT
    J'ai créé un formulaire GET de recherche contenant 6 champs (listes déroulantes). Quand l'utilisateur clique sur Submit je le renvoie sur la page resultats.php?champ1=""&champ2=""....
    Pou l'instant j'utilise la requete suivante pour afficher les resultats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    SELECT champ1,champ2,champ3,champ4,champ5,champ5 FROM 
    matable WHERE champ1 LIKE '$champ1' AND champ2 LIKE '$champ2' 
    AND champ3 LIKE '$champ3' AND..... ORDER BY date DESC";
    seulement avec AND ca affiche si tous les champs correspondent donc dans mon cas ca n'affiche rien quand je selectionne un seul champ.

    J'ai essaye avec OR et la ca affiche les resultats si l'un des champs correspond.

    Moi je veux que ca affiche uniquement les resultats qui correspondent à tous les champs mais je veux pouvoir selectionner le nombre de champ que je veux. POur l'instant si je selectionne pas tous les champs rien ne s'affiche.

    Comment je peux faire?

    N'hesitez pas à me dire si vous ne comprenez pas c pas tres bien explique

    Merci d'avance

    Dolf

  2. #2
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    tu as testé ta requête sur phpMyAdmin?

  3. #3
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    J'ai pas compris grand chose mais je crois que tu vas devoir construire ta requête dynamiquement, c'est à dire que tu devras faire une boucle pour ajouter les conditions de ton WHERE.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    la requete fonctionne bien car si je selectionne TOUS LES criteres ca affiche les bons resultats seulement je voudrais affciher des resultats meme si 1, 2, 3 etc criteres sont selectionnes.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par JWhite
    J'ai pas compris grand chose mais je crois que tu vas devoir construire ta requête dynamiquement, c'est à dire que tu devras faire une boucle pour ajouter les conditions de ton WHERE.
    je sais pas faire ca. Tu as un exemple si ca te derange pas. Merci

    De plus j'utilise la méthode GET mais je suis pas sure que ca soit la plus adaptée qu'en penses tu?

    Dolf

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est juste une question de réflexion, je te montre le principe, le code est pas testé il faut peut-être adapter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $bool = 0;
    $req  = "SELECT champ1,champ2,champ3,champ4,champ5,champ5 FROM matable WHERE ";
    if($champs1 != "")
    {
      $req .= " champ1 LIKE '$champ1'";
      $bool = 1;
    }
    if($champs2 != "")
    {
       if($bool == 1)
          $req .= " AND";
        $req .= " champ2 LIKE '$champ1'";
    }
    $bool permet de gérer les AND.

    C'est juste le principe, c'est à améliorer, d'ailleurs existe-t-il des règles spécifiques sur tes champs (par exemple le champ1 est forcément rempli, le champ5 ne peut être rempli que si les champs 1 à 4 sont remplis, ...).
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    Merci bien
    et pour la methode utilisée (GET) est ce la plus appropriée???

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par dolf13
    Merci bien
    et pour la methode utilisée (GET) est ce la plus appropriée???
    Oui ça change pas grand chose avec le POST (à part que les données apparaissent dans la barre d'adresse)... Il y a quelques subtilités mais bon je pense pas que ton application soit ultrasensible.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    ok
    par contre je ne vois pas pourquoi dans l'url il y a le champ submit=afficher+les+resultats
    c normal???
    est ce qu'il faut l'enlever? si oui comment?

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par dolf13
    ok
    par contre je ne vois pas pourquoi dans l'url il y a le champ submit=afficher+les+resultats
    c normal???
    est ce qu'il faut l'enlever? si oui comment?
    Tu as dû mettre un attribut NAME à ton bouton SUBMIT, ça fait quoi en l'enlevant ?
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    Voici le code de mon bouton ubmit

    <input type="submit" name="submit" value="Afficher les résultats" style="width: 180px">

  12. #12
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est bien ce que je pensais, et donc en l'enlevant comme demandé ça donne quoi ?!?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" value="Afficher les résultats" style="width: 180px">
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    c bon il n'y a plus le champ dans l'adresse
    Encore merci

  14. #14
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par dolf13
    c bon il n'y a plus le champ dans l'adresse
    Encore merci
    Cool. Un chti alors...

    Bon courage pour la suite.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  15. #15
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Points : 66
    Points
    66
    Par défaut
    Juste pour te dire comme ça, c'est que GET par rapport à POST est un peu moins "sécuritaire" dans le sens ou l'utilisateur peut mettre les parametres qu'il veut. Sur un post, tu peux mettre des input de type "hidden" qui vont passer des valeurs sans que l'utilisateur puisse les modifier !

  16. #16
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Oui c'est d'ailleurs bien pour ça que j'ai parlé de sensibilité de l'application...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    oui ca je le savais. Au depart je voulais utiliser POST mais je ne suis pas arrivé à récupérer les valeurs quand j'ai plusieurs pages de résultats. Je sais pas encore si je vais y arriver avec GET je suis en train de le faire....

  18. #18
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par dolf13
    oui ca je le savais. Au depart je voulais utiliser POST mais je ne suis pas arrivé à récupérer les valeurs quand j'ai plusieurs pages de résultats. Je sais pas encore si je vais y arriver avec GET je suis en train de le faire....
    C'est pas en mettant GET à la place de POST que ça va résoudre le problème, l'utilisation étant la même.
    Si tu veux propager des variables à plusieurs pages, il faut passer par des variables de session.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    ah m.... je sens que ca va me prendre la tête à nouveau

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    J'ai ajouté le code suivant pour la pagination et j'ai seulement un petit problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    if(!isset($_GET['page'])){
        $page = 1;
    } else {
        $page = $_GET['page'];
    }
     
    $max_results = 2;
     
    $from = (($page * $max_results) - $max_results); 
     
    $total_pages = ceil($result / $max_results);
     
    echo "<center><p><b>";
     
    if($page > 1){
        $prev = ($page - 1);
        echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev&champ1=$champ1&champ2=$champ2\">Précédente</a> ";
    }
     
    for($i = 1; $i <= $total_pages; $i++){
        if(($page) == $i){
            echo "$i ";
            } else {
                echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i&champ1=$champ1&champ2=$champ2\">$i</a> ";
        }
    }
     
     
    if($page < $total_pages){
        $next = ($page + 1);
        echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next&&champ1=$champ1&champ2=$champ2\">Suivante</a>";
    }
    echo "</b></p></center>";
     
    ?>

    J'ai bien les résultats qui s'affichent seulement ca n'affiche pas le bon nombre de résultats par page. Ca ne prend pas en compte la variable $max_results et donc tous les resultats sont sur une seule page. Ca affiche aussi les liens vers les autres pages et sur celles ci se sont les memes resultats qu'en page 1. Une idée pour résoudre ce probleme SVP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. SQL Problème requête SELECT
    Par Seth_75 dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2009, 15h02
  2. [SQL] Problème avec SELECT COUNT(*)
    Par jpascal dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 12h37
  3. [SQL] Problème requêtes SQL
    Par djedje37et28 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/07/2006, 21h31
  4. [SQL] Problème requête sql,rajouter une valeur,checbox
    Par snakejl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 11h18
  5. [SQL] Problème requête sur 2 tables
    Par temperature dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/04/2006, 12h05

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