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 :

Moteur de recherche sur plusieurs pages


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut Moteur de recherche sur plusieurs pages
    Bonjour , j'avais fais un moteur de recherche sur mon site et il marchais tres bien
    seulement les info contenu sur mon site deviennent assez nombreuse et j'aimerai que les résultats de mes recherches soit gérer sur plusieur page si il y en a trop ..
    par exemple autoriser uniquement 50 réponse par page ...

    pour se faire je me suis inspiré du site et notement du passage sur le livre d'or mais je bloque un peu donc si vous pouviez m'éclairer


    voila ce que j'ai fais :

    sur la page index (ou se trouve le moteur de recherche) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p>Recherche par mot clé : entrer un (ou plusieurs) mot clé(s)</p>
    <form action="recherche.php" method="post">
        <input type="text" size="20" maxlength="20" name="cherche"/>
        <input class="valider" type="submit" value="Rechercher" />
    </form>

    sur ma page recherche :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <?php
    <p><h1>Résultat de la recherche</h1>
    <?php
            $cherche = htmlentities ($_POST['cherche']);
            $sql = "SELECT * FROM liste where Groupe like '%$cherche%' 
            OR Titre like '%$cherche%' 
            OR Format like '%$cherche%' 
            OR Pays like '%$cherche%' 
            OR Etat like '%$cherche%' 
            OR Prix like '%$cherche%' 
            order by Groupe,Titre";
     
            $reponse = mysql_query ($sql);
     
    // si aucun disques ne correspond à la recherche 
            if (mysql_num_rows($reponse)==0)
            {
                echo "<p><center><strong>Il n'y a aucun disque répondant à votre recherche</center></strong></p>";>
    ?>
               <p><center><a href="index.html">Retour</a></center></p>
    <?php         
            }
     
    //si il y a au moin un disque qui correspond  à la recherche 
            else
            {
     
                    // On met dans une variable le nombre de disques  qu'on veut par page
                    $nombreDeDisquesParPage = 50;     
                    // On récupère le nombre total de messages correspond au criteres choisi        
                    $retour = mysql_query("SELECT COUNT(*) AS nb_disques FROM liste where Groupe like '$cherche%' OR Titre like '%$cherche%' 
            OR Format like '%$cherche%' 
            OR Pays like '%$cherche%' 
            OR Etat like '%$cherche%' 
            OR Prix like '%$cherche%'
            and Stand='N'
            and Genre='M'");
     
                    $donnees = mysql_fetch_array($retour) or die(mysql_error());
                    $totalDesDisques = $donnees['nb_disques'];
                    // On calcule le nombre de pages à créer
                    $nombreDePages  = ceil($totalDesDisques / $nombreDeDisquesParPage);
     
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
        echo '<a href="recherche.php?cherche='.$cherche.'&amp;page=' . $i . '">' . $i . '</a> ';
    }
            if (isset($_GET['page']))
            {
                    $page = $_GET['page'];  }
            else 
            {
                    $page = 1;
            }
            $premierMessageAafficher = ($page - 1) * $nombreDeDisquesParPage;
            $sql1=$sql. " LIMIT " . $premierMessageAafficher . "," . $nombreDeDisquesParPage;
            $reponse = mysql_query($sql1) or die(mysql_error()); 
            echo'<table BORDER=1>';
            while ($donnees = mysql_fetch_array($reponse))
            {
                    echo'<tr>
                            <td width="30px">'.$donnees['Groupe'].'</td>
                            <td width="100%">'.$donnees['Titre'].'</td>
                            <td width="6px">'.$donnees['Format'].'</td>
                            <td width="3px">'.$donnees['Pays'].'</td>
                            <td width="7px">'.$donnees['Etat'].'</td>
                            <td width="4px">'.$donnees['Prix'].'</td>
                    </tr>';
            }
            echo'</table>';
            }
            mysql_close();
    ?>

    je pense que c'est la partie ou j'affiche les pages qui ne marche pas bien ...

    en fait pour le moment j'ai bien la premiere partie de ma recherche qui est afficher mais si par exemple je clique su le lien 1 (qui devrai amener au meme résultat) j'ai une page bleu comme si il trouvais plus rien ...
    idem si il y a plusieur page lorsque je clique sur les liens correspondants

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Il faut faire passer le nombre de page en get :
    Code Récupération du GET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_GET['page']) && ereg('^[0-9]*$', $_GET['page'])) {
    	$nb = $_GET['page'] + (9 * $_GET['page']);
    }
    else {
    	$nb = 0;
    }
    Ensuite, il faut faire une requête pour récupérer le nombre de news (ici $nb_news['0'] :
    Code Lien page précédente et suivante : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (($nb + 50) < $nb_news['0']) {
    	$plus = '| <a href="?p='.(($nb/10) + 1).'">Suivant >>></a>';
    }
    if (($nb - 50) >= 0){
    	$moins = '<a href="?p='.(($nb/10) - 1).'"><<< Pr&eacute;c&eacute;dent</a> |';
    }
    Ensuite pour ta requête :
    Code Requête d'affichage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = 'SELECT * FROM liste where Groupe like \'%$cherche%\' 
            OR Titre like \'%$cherche%\' 
            OR Format like \'%$cherche%\' 
            OR Pays like \'%$cherche%\' 
            OR Etat like \'%$cherche%\' 
            OR Prix like \'%$cherche%\' 
            order by Groupe,Titre
            LIMIT '. $nb .',50';

    Je te laisse le soin de remettre de l'ordre dans ce que je te propose, et y voir ce qui pourrait être utile ...

    Bonne chance.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    merci mais malgres ton aide cela ne change pas grand chose

    déjà pour la requete ca done un warning enfin au dela de ca le probleme reste le meme car en cliquant sur les liens des différentes pages j'obtiens une page blanches ...

  4. #4
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, tu peux jeter un oeil sur cet exemple : Pagination d'un résultat de requête

    Bon développement

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    ah merci ; j'ignorais qu'il y avais un exemple la dessus

    je vais voir ca et je vous tiens au courant

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 109
    Par défaut
    Bonjour,

    Je me permet de remonter ce topic.

    Je vais procédé comme dans l'exemple du site
    "Pagination d'un résultat de requête".

    J'aurai juste aimé savoir si il y avait d'autre solution possible pour ce genre de problème?

    Est-il possible en php, de recuperer la resultat de toute la requête, de le mettre en session et de l'utiliser dans les autres pages?

    Je pense que non, mais sait on jamais.
    (je faisais comme ça en J2EE)

Discussions similaires

  1. [MySQL] moteur de recherche sur plusieur table php mysql
    Par chrisl46 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/04/2014, 18h33
  2. moteur de recherche sur plusieurs table liees
    Par oliv3400 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/02/2012, 12h30
  3. [MySQL] Moteur de recherche sur plusieurs tables
    Par lelectronique.com dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/01/2010, 14h12
  4. [AJAX] Resultats recherche sur plusieurs pages
    Par Borowsky dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/07/2008, 16h58
  5. [MySQL] moteur de recherche sur plusieurs tables
    Par harlock59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/04/2007, 15h23

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