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 :

Pagination sur un moteur de recherche


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut Pagination sur un moteur de recherche
    Bonsoir,

    je souhaite mettre sur mon site un moteur de recherche, au niveau de la recherche en elle même pas de soucis, c'est au niveau de la pagination que je m'en sors pas, cela ne fonctionne pas.
    je pense que mon soucis se trouve au niveau del a variable page.

    voici le 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
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    <?php
    /****************************************************************** 
    *    VARIABLES A MODIFIER 
    ******************************************************************/
    // NOMBRE DE RESULTATS PAR PAGE 
    $limit=2;
    // NOM DE CE SCRIPT 
    $script_name="moteur.php";
    // SERVEUR SQL 
    $sql_serveur="localhost";
    // LOGIN SQL 
    $sql_user="root";
    // MOT DE PASSE SQL 
    $sql_passwd="XXXXXX";
    // BASE DE DONNEE 
    $database="deploiement";
    // RECHERCHE AVEC TOUS LES titre : METTEZ "and" 
    // RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or" 
    $et_ou="or";
    mysql_connect('localhost','root',XXXXXXXX);
    mysql_select_db('deploiement'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter à votre site.
     
    /****************************************************************** 
    *    PROGRAMME PRINCIPAL 
    ******************************************************************/
    $mot = htmlspecialchars($_POST['mot']); 
    $titre=split(" ",$mot);
    $nombre_titre=count($titre);
     
    $z=1;
    $texte="Pages contenant <b>&quot;$titre[0]&quot;</b>";
    $phrase="%$titre[0]%";
     
    while($z<$nombre_titre)
        {
        $phrase.=" '.$et_ou.' titre like '%$titre[$z]%'";
        $texte.=" ";
        if($et_ou=="and" ){$texte.="et";}else{$texte.="ou";}
        $texte.=" <b>&quot;$titre[$z]&quot;</b>";
        $z++;
        }
     
    if($debut=="" ){$debut=0;}
    $page =0;
    $debut=$page*$limit;
     
    // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE 
     
    $query = mysql_query("SELECT count(*) FROM contenu WHERE titre LIKE '%$phrase%' ORDER BY content_id DESC") or die (mysql_error()); $nb_total=mysql_result($query,0,"count(*)" );
     
    $query = mysql_query("SELECT * FROM contenu WHERE titre LIKE '%$phrase%' ORDER BY content_id DESC limit $debut,$limit") or die (mysql_error()); 
    $num = mysql_num_rows($query);
     
    // DEFINITION DU MESSAGE A AFFICHER  ///////////////////////// a revoir ici ////////////////////////////
    if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";}
    else if ($mot=="" )     {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";}
    else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
     
    // AFFICHAGE DES RESULTATS 
     
    else {
    echo "<b>$nb_total</b> r&eacute;ponse";
    if ($nb_total>1) {echo "s";}
    echo "<br>$texte";
     
    $i=0;
    while($i<$num)
        {
        //$url=mysql_result($query,$i,"url" );
        $description=mysql_result($query,$i,"description" );
        $titre=mysql_result($query,$i,"titre" );
        //echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
    	echo "<br><br><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
        $i++;
        }
    echo "<br><br>";
    // AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST 
    // (LA PREMIERE PAGES EST 0) 
    if ($page>0)
        {
        $precedent=$page-1;
        print  "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a>&nbsp;\n";
        }
    // AFFICHAGE DES NUMEROS DE PAGE 
    $i=0;$j=1;
    if($nb_total>$limit)
        {
        while($i<($nb_total/$limit))
       {
            if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a> )&nbsp;";}
            else {echo "<b>($j)</b>&nbsp;";}
            $i++;$j++;
            }
        }
    // AFFICHAGE DU LIEN SUIVANT SI BESOIN EST 
    if($debut+$limit<$nb_total)
        {
        $suivant=$page+1;
        echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>";
        }
    }
    // DECONNEXION DE LA BASE DE DONNEE 
    mysql_close($db_link);
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    bonjour,

    Avant qu'on se lance dans la lecture de tout ton code, tu pourrais nous décrire ce que tu souhaites obtenir precisemment et ce que tu obtiens actuellement ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    C'est parce que vous faites passer les mots clef en POST,

    Chaque fois, quand vous passer à la page suivante, vous perdez ces mots clef. Donc mettez les mots en GET.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $url = '';
    foreach($_GET as $key =>$value){
        if($key != 'page')
            $url .= urlencode($_GET($key)).'&';
    }
     
    if($num_pages > 1){
        echo '<a href="?'.$url.'page=1" target="_self">First</a>';
        echo '<a href="?'.$url.'page='.($page - 1).'" target="_self">Previous</a>';
        .... .... ....
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Oui mais pourquoi alors je retrouve quand même dans l'url le mot cléf lorsque je passe à la page suivante.
    ex :
    http://127.0.0.1/recherche/recherche...mot=aa&pages=2

    j'ai fais en GET et j'ai le même résultat.

    en fait lorsque je clic sur la page "2" il me renvoit :
    Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !

    cela implique donc que ma varialble mot est vide.
    il faut dans ce cas utiliser comem vous dites GET mais même résultat.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    Huh .. peut-être les mots clefs sont pas récupérés correctement.
    Vous avez fait comment?
    ?

    Essayez à faire un
    Pour vérifier le contenu de cette variabe.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    non j'ai fais un href,
    le test de la variable est correct.
    j'ai mis tout le contenu du code dans le premier message.
    Merci

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    Ok, mais dans le code de votre premier message, j'ai vu la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mot = htmlspecialchars($_POST['mot']);
    C'est normal que vous n'avez rien de $mot.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    bonjour,
    pourtant le test de m'affiche bien le texte

Discussions similaires

  1. Avoir un bon référencement sur les moteurs de recherche
    Par dot-_-net dans le forum Référencement
    Réponses: 1
    Dernier message: 26/10/2008, 17h32
  2. Retour sur le moteur de recherche des FAQs
    Par veevee dans le forum Evolutions du club
    Réponses: 9
    Dernier message: 29/04/2008, 17h44
  3. Réponses: 1
    Dernier message: 20/09/2007, 12h52
  4. Stats sur les moteurs de recherche..
    Par titoumimi dans le forum Référencement
    Réponses: 5
    Dernier message: 15/03/2006, 18h31

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