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 :

affichages resultats requête avec un champ texte [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut affichages resultats requête avec un champ texte
    bonjour,
    je cherche à afficher les résultats d'une requête qui provient d'un formulaire, composé de 3 listes et d'un champ texte libre. Tant que je ne mets que les "if" correspondant aux listes, tout est OK.
    Mais depuis que j'ai inclus le if avec le champ texte libre, tous les résultats qui s'affichent, comme $data['activite'], $data['description'] etc reprennent la valeur qui a été trouvée , et non le contenu véritable de la cellule.
    par exemple, si j'ai demandé de rechercher "parti92" et qu'il y a bien un "reparti923", c'est ce résultat, "reparti923" qui va être affiché pour chaque $data.
    Merci d'avance à ceux qui pourront m'aider.



    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
    $requete = " SELECT * FROM aide_ac,aide_st WHERE aide_ac.structure = aide_st.s_clef "; 
     
    if (isset($_POST['public'])&&($_POST['public'])!="#") 
    { 
       $requete .= ' AND  public = "'.$_POST['public'].'"'; 
    } 
     
    if (isset($_POST['lieu'])&&($_POST['lieu'])!="#") 
    { 
        $requete .= ' AND  lieu = "'.$_POST['lieu'].'"'; 
    } 
     
    if (isset($_POST['activite'])&&($_POST['activite'])!="#") 
    { 
       $requete .= ' AND  activite = "'.$_POST['activite'].'"'; 
    } 
    if  (($_POST['mot'])!="") 
    { 
       $requete .= " AND  activite LIKE '%".strtolower($mot)."%' OR specifique LIKE '%".strtolower($mot)."%'  OR description LIKE '%".strtolower($mot)."%' "; 
    } 
    $requete .= ' ORDER BY activite;'; 
     
     // exécution de la requête 
    $req = mysql_query($requete) or die (mysql_error().$requete); 
     
    while ($data = mysql_fetch_array($req)) { 
    //affichage des résultats        
     
         echo '<table><tr><td class="txtg">Activités</td><td class="txtp">' , stripslashes(htmlentities(trim($data['activite']))) , '</td></tr>'; 
          echo '<tr><td class="txtg">Description</td><td class="txtp">' , stripslashes(htmlentities(trim($data['description']))) , '</td></tr>';
    	  echo '<tr><td class="txtg">Organisateur</td><td class="txtp">' , stripslashes(htmlentities(trim($data['s_nom']))) , '</td></tr>'; 
          echo '<tr><td class="txtg">Horaires</td><td class="txtp">' , stripslashes(htmlentities(trim($data['horaires']))) , '</td></tr>'; 
          echo '<tr><td class="txtg">Dates</td><td class="txtp">' , stripslashes(htmlentities(trim($data['dates']))) , '</td></tr>'; 
          echo '<tr><td class="txtg">Tarifs</td><td class="txtp">' , stripslashes(htmlentities(trim($data['tarifs']))) , '</td></tr></table><br />'; 
    }
    }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je n'ai pas d'explications à ton problème

    cependant, il me semble que dans tes instructions echo, tu fais des concaténations avec des virgules, j'aurais préféré des points

    dans ta requête, je mettrais bien la partie concernant le mot entre parenthèses, car il y a des AND et OR mélangés et cela me paraît plus judicieux

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 178
    Points : 201
    Points
    201
    Par défaut
    non il faut bien utiliser les virgules
    les points servent a concatener.
    les virgules servent a déclarer des paramètre supplémentaire. ainsi les chaines sont directement affiché au lieu d'être concaténé puis affiché

  4. #4
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    merci, ca a fonctionné avec les parenthèses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql .= ' AND  (description LIKE "%'.$_SESSION['mot'].'%" OR  lieu LIKE "%'.$_SESSION['mot'].'%" OR  dates LIKE "%'.$_SESSION['mot'].'%" OR  specifique LIKE "%'.$_SESSION['mot'].'%")';

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

Discussions similaires

  1. [AC-2007] Requête sur un champ texte avec liste de choix
    Par chrisbou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/03/2010, 11h00
  2. [MySQL] affichage requête dans simple champ texte formulaire
    Par romeskira dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/10/2008, 10h50
  3. Réponses: 2
    Dernier message: 09/04/2008, 17h54
  4. PB sur requête avec un champs texte
    Par nomade333 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/04/2008, 22h12
  5. Requête avec un champ cumulatif ?
    Par Neilos dans le forum Langage SQL
    Réponses: 7
    Dernier message: 12/08/2005, 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