Probleme pagination sur script recherche

Signaler
Messages postés
26
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
1 décembre 2013
-
Messages postés
26
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
1 décembre 2013
-
Bonjour

Je reviens vers vous car j'ai un soucis pour faire une pagination. Chaque fois que je met un code de pagination cela m'affiche plus de 5000 pages j'ai tout essayé et pas moyen d'y arriver j'essaie avec ce tuto http://antoine-herault.developpez.com/tutoriels/php/pagination-automatique-en-php/ mais voila cela m'affiche trop de page

Voici mon code
<?php
mysql_connect('localhost','users','mot de passe');
mysql_select_db('base de donnée');
//On determine l'expression a rechercher
if(isset($_GET['search']) && strlen($_GET['search'])>2)
{
        $rec =  mysql_real_escape_string(htmlspecialchars($_GET['search']));

//On determine le type de recherche
if(isset($_GET['type']))
{
        if($_GET['type']=='un')//Un des mots
        {
                $type = 1;
        }
        elseif($_GET['type']=='all')//Tout les mots
        {
                $type = 2;
        }
        else//L'expression exacte
        {
                $type = 3;
        }
}
else
{
        $type = 1;//type par defaut: L'expression exacte
}
//On determine si on doit surligner les mots dans les resultats
if(!isset($_GET['surligner']) or $_GET['surligner']!='true')
{
        $surligner = false;
}
else
{
        $surligner = true;
}
//On dertermine les identifiants, les noms et les informations des utilisateur
$req = 'SELECT image1, name, keywords FROM download WHERE ';
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
              $req .= ' keywords LIKE "%'.$mot.'%" OR (name LIKE "%'.$mot.'%") OR';
        }
        $req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .' (online \'yes\' AND (keywords LIKE "%'.$mot.'%") OR (name LIKE "%'.$mot.'%")) AND';
        }
        $req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
        //$req .= 'keywords LIKE "%'.$rec.'%"';
$req .' (online \'yes\' AND (keywords LIKE "%'.$rec.'%") OR (name LIKE "%'.$rec.'%"))';
}

//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc';
$requete = mysql_query($req);
//Le formulaire de recherche
?>
<form action="" method="get">
Expression à rechercher: " />

Type de recherche:  /> Un des mots  /> Tout les mots  /> Expression exacte

Mettre en gras les mots recherchés:  />


</form>
Résultats

 Affiche  |
Titre |
Mots clefs |

<?php
//On affiche les resultats
while($dnn  = mysql_fetch_array($requete))
{
?>
----

<?php echo ''; ?>,
<?php echo $dnn['name']; ?>,
<?php
if($surligner)//Si il faut surligner les mots, on les surligne
{
if($type==3)
{
echo preg_replace('#('.preg_quote($rec).')#i', '$1', $dnn['keywords']);//On surligne l'expression exacte
}
else
{
echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '$1', $dnn['keywords']);//On surligne les mots cles de la recherche
}
}
else
{
echo $dnn['keywords'];//On ne surligne pas
}
?>,

<?php
}

?>

<?php
}else{
?>
<form action="" method="get">
Expression à rechercher: " />

Type de recherche:  /> Un des mots  /> Tout les mots  /> Expression exacte

Mettre en gras les mots recherchés:  />


</form>
<?php
}
?>


merci de votre aide

3 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonjour

$req .= ' order by id asc'; // limit ?

comment se présente ta requête de pagination


Bonne programmation !
Messages postés
26
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
1 décembre 2013

desolé je ne l'ai pas mis voici le code avec la pagination merci de ton aide
<?php 
mysql_connect('localhost','users','mot de passe');
mysql_select_db('base de donnée');
//pagination
$messagesParPage= 2; //Nous allons afficher 5 messages par page.

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM download'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle<$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
//On determine l'expression a rechercher
if(isset($_GET['search']) && strlen($_GET['search'])>2)
{
        $rec = mysql_real_escape_string(htmlspecialchars($_GET['search']));

//On determine le type de recherche
if(isset($_GET['type']))
{
        if($_GET['type']=='un')//Un des mots
        {
                $type = 1;
        }
        elseif($_GET['type']=='all')//Tout les mots
        {
                $type = 2;
        }
        else//L'expression exacte
        {
                $type = 3;
        }
}
else
{
        $type = 1;//type par defaut: L'expression exacte
}
//On determine si on doit surligner les mots dans les resultats
if(!isset($_GET['surligner']) or $_GET['surligner']!='true')
{
        $surligner = false;
}
else
{
        $surligner = true;
}

//On dertermine les identifiants, les noms et les informations des utilisateur
$req = 'SELECT * FROM download WHERE ';
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
              $req .= ' keywords LIKE "%'.$mot.'%" OR (name LIKE "%'.$mot.'%") OR';
        }
        $req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .' (online \'yes\' AND (keywords LIKE "%'.$mot.'%") OR (name LIKE "%'.$mot.'%")) AND';
        }
        $req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
        //$req .= 'keywords LIKE "%'.$rec.'%"';
$req .' (online \'yes\' AND (keywords LIKE "%'.$rec.'%") OR (name LIKE "%'.$rec.'%"))';
}

//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc LIMIT '.$premiereEntree.', '.$messagesParPage.'';
$requete = mysql_query($req);
//Le formulaire de recherche
?>
<form action="" method="get">
Expression à rechercher: " />

Type de recherche:  /> Un des mots  /> Tout les mots  /> Expression exacte

Mettre en gras les mots recherchés:  />


</form>
Résultats

 Affiche  |
Titre |
Mots clefs |

<?php
echo 'Page : '; //Pour l'affichage, on centre la liste des pages
for($i =1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' '.$i.' ';
}
}
echo '

';
//On affiche les resultats
while($dnn = mysql_fetch_array($requete))
{
?>
----

<?php echo ''; ?>,
<?php echo $dnn['name']; ?>,
<?php
if($surligner)//Si il faut surligner les mots, on les surligne
{
if($type==3)
{
echo preg_replace('#('.preg_quote($rec).')#i', '$1', $dnn['keywords']);//On surligne l'expression exacte
}
else
{
echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '$1', $dnn['keywords']);//On surligne les mots cles de la recherche
}
}
else
{
echo $dnn['keywords'];//On ne surligne pas
}
?>,

<?php
}

?>

<?php
}else{
?>
<form action="" method="get">
Expression à rechercher: " />

Type de recherche:  /> Un des mots  /> Tout les mots  /> Expression exacte

Mettre en gras les mots recherchés:  />


</form>
<?php
}
?>
Messages postés
26
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
1 décembre 2013

Personne ne peux m'aider????