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 :

[Conception] Recherche interne+résultats


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut [Conception] Recherche interne+résultats
    Je sollicite encore votre aide et vais encore abuser de votre temps afin que vous m'orientiez sur une piste

    Toujours concernant mon application membres et département, j'aimerais à partir d'une saisie cette fois que l'internaute puisse taper un chiffre entre 1 et 100 par exemple et que les résultats s'affichent.

    Exemple : si je tape 41, j'aimerais que la 41ème fiche membre apparaisse suivie des 10 suivantes (c a d 42,43,44,...,51)

    Pour l'instant avec ce que j'ai mis en place, c a d une recherche par 'id' , si je tape 2 , la fiche 2 apparaît ainsi que ... la 12, la 22, 32 ... ainsi que toute celle avec un chiffre 2 au lieu d'afficher la 2, la 3,4,5,6,...,12

    Voici mon code pour la saisie :

    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
     
    <?php
    include "configuration.php";
    include "page_haut.inc";
    $query = mysql_query("SELECT * FROM $mbmembres");
     ?>
     
    <form action="resultats.php" method="post" target="main">
      <p>
        <table border="0">
      </p>
      <tr>
          <td valign=top>Aller au membre N°
              <input type='text' size="10" name='word'>
              <input name="submit" type='submit' value='OK'>
          </table>

    Concernant ma page de résultat voici mon code :

    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
     
    <?php
     
    include "configuration.php";
     
    	if (!empty($word)) {
     
     
    		$search = mysql_query("SELECT * FROM $mbmembres WHERE id LIKE '%$word%' LIMIT 0,100") or die ("ERROR:" . mysql_error());
    		$num = mysql_num_rows($search);
     
    if ($num == 0) {
     
    while ($row = mysql_fetch_row($search)) { 
     
    echo "<tr>"; 
    echo "$img<td><b><center></td>"; 
     
    }
     
    ?>
    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE id LIKE '%$word%'
    et que $word contient 2, la requête te renvoie toutes lignes où l'id contient 2.

    Si tu veux récupérer les lignes où l'id est 2 et +, il faut le faire avec l'opérateur > et non LIKE.
    Et bien sûr ne pas oublier le "ORDER BY id " pour s'assurer que les lignes soient ordonnées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE id >= %$word ORDER BY id LIMIT 0,10

  3. #3
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Je viens de modifier mon code comme tu me l'as indiqué ci-dessus, mais les résultats s'affichent de 1 à 10 sans prendre en compte l'id que je rentre...
    J'ai peut être pas fais ce qu'il fallait ?

    Voici mon code :

    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
     
    <?php
     
    include "configuration.php";
     
    	if (!empty($word)) {
     
     
    		$search = mysql_query("SELECT * FROM $mbmembres WHERE id >= '%$word' ORDER BY id LIMIT 0,10") or die ("ERROR:" . mysql_error());
    		$num = mysql_num_rows($search);
     
    if ($num == 0) {
     
    while ($row = mysql_fetch_row($search)) { 
     
    echo "<tr>"; 
    echo "$img<td><b><center></td>"; 
     
    }
     
    ?>

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Moi je dirais que délimiter la recherche dans le where. Par exemple, tu tapes 41 tu fais ton where comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE nomduchamp >= 41 AND nomduchamp <= 41 +10
    Tiens il faudrait tester que les 10 prochains existent.

    Hum il faudrait vérifier si un fonction n'existe pas déjà

  5. #5
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    J'ai du mal à comprendre pourquoi le code ci dessous me renvoi les résultats avec toutes les fiches où le 2 apparaît par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $search = mysql_query("SELECT * FROM $mbmembres WHERE id LIKE '%$word%' LIMIT 0,10") or die ("ERROR:" . mysql_error());
    et que le code de Biglo ci-dessous me renvoi tous les résultats de 0 à 10 sans prendre en compte l'id préalablement renseigné...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $search = mysql_query("SELECT * FROM $mbmembres WHERE id >= '%$word%' LIMIT 0,10") or die ("ERROR:" . mysql_error());


    lol jai posté en même temps que toi ma réponse Biglo... Je m'empresse de réctifier

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Tiens tu peux aussi utiliser le BETWEEN qui renvoie les valeurs comprises entre deux limites

  7. #7
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Citation Envoyé par Angelik
    Je viens de modifier mon code comme tu me l'as indiqué ci-dessus, mais les résultats s'affichent de 1 à 10 sans prendre en compte l'id que je rentre...
    J'ai peut être pas fais ce qu'il fallait ?
    Oui tu as laissé un % ==> MySQL tente de convertir ta chaîne en entier (eh oui en laissant les ' ', ça oblige une conversion) ==> il n'y arrive pas ==> 0

    Citation Envoyé par Kerod
    Tiens il faudrait tester que les 10 prochains existent.

    Hum il faudrait vérifier si un fonction n'existe pas déjà
    Oui, une seule suppression et ça ne marche plus avec le +10

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/02/2006, 11h52
  2. [Conception] [Recherche logiciel] Modélisation rapide d'écrans de sites
    Par nicolas.charlot dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 28/11/2005, 09h38
  3. [Conception] Recherche d'algoritme
    Par MASSAKA dans le forum Général Java
    Réponses: 11
    Dernier message: 19/10/2005, 12h07
  4. Un moteur de recherche interne
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/02/2005, 18h47

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