2017-02-02 4 views
0

Ich habe Suchseite und Sucheingabe in der Kopfzeile meiner Website, und wenn der Benutzer die Abfrage eingibt, wird er an search.php gerichtet und ich werde zeigen, was das Ergebnis der Benutzer will.Wie wird das Suchergebnis paginiert?

Aber wenn ich habe eine Menge Ergebnis, das ich wirklich hart wird angezeigt oder diese Ergebnisse zu lesen, so dass ich brauche eine Paginierung zu machen ..

Ich bin eine Paginierung Funktion in meiner Website, aber es ist nicht Arbeiten, wenn ich mit dieser Suchseite zu tun habe, denke ich der Grund, weil ich die gleiche Abfrage auf jeder Seite sende .. so zeigt die Ergebnisse der Seite 1 auf allen Seiten ..

Kann jemand Bitte erklären Sie mir, wie Sie Seitenumbrüche für die Suchseite erstellen können. indem Sie zum Beispiel 15 Ergebnisse pro Seite anzeigen?

Dies ist das Suchformular, das ich habe:

<form class="navbar-form navbar-left" action="search" method="POST"> 
<div class="form-group"> 
    <input type="search" name="searchFor" class="form-control" placeholder="Search for Articles" dir="auto" 
     <?php 
      echo isset($_POST['searchFor']) && !empty($_POST['searchFor']) ? 
      'value="' . htmlentities($_POST['searchFor']) . '"' : '' 
     ?> 
    > 
</div> 
<button type="submit" class="btn btn-default">Search</button> 

+0

Bitte lesen Sie [Wie eine Antwort Arbeit nicht zu akzeptieren?] (Http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work) – Quentin

Antwort

1

Ich werde mein Beispiel der Seitennummerierung meines eigenen Projekts zeigen. Ich habe einige Kommentare abgegeben, aber sie sind auf Französisch, weil ich französisch bin, aber ich denke, dass sie leicht zu übersetzen sein werden. Ich hoffe, dies wird dir helfen. Ich glaube nicht, dass Sie meine "configuraiton.php" brauchen, es ist für die lokale Serververbindung, versuchen Sie einfach, mein Beispiel zu verstehen. Au und meine Suche ist auf 3 Kriterium, deshalb habe ich einen Schalter und einen Fall.

//This is foncitons.php purpose limit items and create page for pagination 

    <?php 

if(isset($_GET['limite'])) 

    $limite=$_GET['limite']; 
else $limite=0; 

function verifLimite($limite,$total,$nombre) { 

if(is_numeric($limite)) { 

    if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) { 

     $valide = 1; 

    }  

    else { 

     $valide = 0; 

    } 

} 

else { 


    $valide = 0; 

} 

return $valide; 

} 


function displayNextPreviousButtons($nb,$page,$total,$limite) { 
    $limiteSuivante = $limite + $nb; 
    $limitePrecedente = $limite - $nb; 


    echo '<nav><ul class="pagination">'."\n"; 

    if($limite != 0) { 
     echo '<li><a href="'.$page.'?limite='.$limitePrecedente.'" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'; 
    } 
    $nbpages=ceil($total/$nb); 
    $numeroPages = 1; 
    $compteurPages = 1; 
    $limite = 0; 
    while($numeroPages <= $nbpages) { 
     echo '<li><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></li>'."\n"; 
     $limite = $limite + $nb; 
     $numeroPages = $numeroPages + 1; 
     $compteurPages = $compteurPages + 1; 
     if($compteurPages == 10) { 
      $compteurPages = 1; 
     } 
    } 


    if($limiteSuivante < $total) { 
     echo '<li><a href="'.$page.'?limite='.$limiteSuivante.'" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>'; 
    } 


    echo '</ul></nav>'."\n"; 
} 

?> 

Dies ist meine Suchseite für Autos.

<?php 

// Variables de connexion 
include("configuration.php"); 

// Fonctions AffichePages, Bouton Suivant/Précédent, VérifLimite 
include ("fonctions.php"); 

// Connexion à la base 
$link = mysqli_connect($hote,$login,$pass,$base); 






// Nombre d'entrées par page 
$nombre=6; 

// Au début limite inférieur = 0 
if (!$limite) 
{ 
    $limite = 0; 
} 

// On recherche le lien de la page 
$path_parts = pathinfo($_SERVER['PHP_SELF']); 

$page = $path_parts["basename"]; 


// On vérifie si on a effectué une recherche et on compte le nombre de données a retourner 
if (((isset($_REQUEST["marque"])) && ($_REQUEST["marque"] !="")) || ((isset($_REQUEST["modele"])) && ($_REQUEST["modele"] !=""))) { 

    // Si on a effectué la recherche, on stock 
    $nom=$_REQUEST["marque"]; 
    $categorie=$_REQUEST["modele"]; 

    // On remplace les accents dans la variable $nom avec les codes appropriés 
    $nom=str_replace("é", "&eacute", $nom); 
    $nom=str_replace("è", "&egrave", $nom); 
    $nom=str_replace("ê", "&ecirc", $nom); 
    $nom=str_replace("à", "&agrave", $nom); 
    $nom=str_replace("â", "&acirc", $nom); 
    $nom=str_replace("ç", "&ccedil", $nom); 


    if($nom !=""){ 
    $choix=1; 
    } 
    if($categorie !=""){ 
    $choix=2; 
    } 
    if($nom !="" and $categorie !=""){ 
    $choix=3; 
    } 
    Switch($choix){ 
    case 1: 

    $sqlcount = "SELECT COUNT(*) FROM voitures WHERE marque LIKE '%$nom%'"; 
    $result = mysqli_query($link,$sqlcount); 
    $row = mysqli_fetch_row($result); 
    $total = $row[0]; 

      // On calcule la limite 
    $verifLimite= verifLimite($limite,$total,$nombre); 

    if(!$verifLimite) { 

    $limite = 0; 

    } 

      // On va lire les données de la table 
    $sql = "SELECT idvoitures, marque, modele, LEFT(details,70), images, annee, lien, kilometrage, puissance, couleur FROM voitures WHERE marque LIKE '%$nom%' ORDER BY marque, modele LIMIT $limite, $nombre"; 
    break; 

    case 2: 
    $sqlcount = "SELECT COUNT(*) FROM voitures WHERE modele LIKE '$categorie'"; 
    $result = mysqli_query($link,$sqlcount); 
    $row = mysqli_fetch_row($result); 
    $total = $row[0]; 

      // On calcule la limite 
    $verifLimite= verifLimite($limite,$total,$nombre); 

    if(!$verifLimite) { 

    $limite = 0; 

    } 

      // On va lire les données de la table 
    $sql = "SELECT idvoitures, marque, modele, LEFT(details,70), images, annee, lien, kilometrage, puissance, couleur FROM voitures WHERE modele LIKE '%$categorie%' ORDER BY marque, modele LIMIT $limite, $nombre"; 
    break; 

    case 3: 
    $sqlcount = "SELECT COUNT(*) FROM voitures WHERE marque LIKE '%$nom%' and modele LIKE '%$categorie%'"; 
    $result = mysqli_query($link,$sqlcount); 
    $row = mysqli_fetch_row($result); 
    $total = $row[0]; 

       // On calcule la limite 
    $verifLimite= verifLimite($limite,$total,$nombre); 

    if(!$verifLimite) { 

    $limite = 0; 

    } 

       // On va lire les données de la table 
    $sql = "SELECT idvoitures, marque, modele, LEFT(details,70), images, annee, lien, kilometrage, puissance, couleur FROM voitures WHERE marque LIKE '%$nom%' and modele LIKE '%$categorie%' ORDER BY marque, modele LIMIT $limite, $nombre"; 

    break; 
} 

} 

else 
{ 
    $sqlcount = 'SELECT COUNT(*) FROM voitures'; 
    $result = mysqli_query($link,$sqlcount); 
    $row = mysqli_fetch_row($result); 

    $total = $row[0]; 

    // On calcule la limite 
    $verifLimite= verifLimite($limite,$total,$nombre); 

    if(!$verifLimite) { 

    $limite = 0; 

    } 

    // On va lire les données de la table 
    $sql = "SELECT idvoitures, marque, modele, LEFT(details,70), images, annee, lien, kilometrage, puissance, couleur FROM voitures ORDER BY marque, modele LIMIT $limite, $nombre"; 
} 







$result = mysqli_query($link,$sql); 

echo '<div class="container">'; 
echo '<div class="row">'; 

// Variable qui compte le nombre d'affichage par rangée 
$i = 0; 
// On affiche les résultats à travers la boucle 
if($total) { 

    while($row = mysqli_fetch_array($result)) { 

    $idvoitures=$row["idvoitures"]; 
    $marque=$row["marque"]; 
    $modele=$row["modele"]; 
    $details=$row["LEFT(details,70)"]; 
    $images=$row["images"]; 
    $couleur=$row["couleur"]; 
    $annee=$row["annee"]; 
    $kilometrage=$row["kilometrage"]; 
    $lien=$row["lien"]; 

    // On affiche 3 par rangée -> après chaque trois affichages on met une nouvelle rangée 
    // if (($i%3 == 0) && ($i != 0)) 
    // { 
    // echo '<div class="row">'; 
    // } 

    echo '<div class="col-md-4">'; 
    echo "<div class=\"view view-forth\">"; 
    echo "<img class=\"thumb\" src=\"images/$images\" />"; 
    echo "<div class=\"mask\">"; 
    echo "<h2>$marque $modele</h2>"; 
    echo "<p>$details...</p>"; 
    echo "<a href=\"afficheVoiture.php?id=$idvoitures\" class=\"info\">Découvrir</a>"; 
    echo "</div>"; 
    echo "</div>"; 
    echo "</div>"; 

    // On ferme la balise div à chaque fois qu'on crée une nouvelle rangée 
    // if (($i%3 == 0) && ($i != 0)) 
    // { 
    // echo '</div>'; 
    // } 

    } 
} 
echo '</div>'; 
echo '</div>'; 

?> 
+0

Sie Sir Danke, ich habe das Problem gelöst, indem eine Funktion, die das Ergebnis paginieren, seine wie folgt aus: http: // pastebin.com/EmQBMb0J –

+0

Sie sind herzlich willkommen und gute Arbeit! –

0

Ich denke, diese Form nicht ändert benötigt. Sie müssen die Datei search.php (und die Datei, die Ergebnisse anzeigen) ändern. Fügen Sie der sql-Abfrage ein Limit hinzu und fügen Sie Auszeichnungsschaltflächen zum Markup hinzu. Wie this.

+0

Gibt es einfachere Art und Weise zu mach das Ding? Ich verstehe diesen Code nicht wirklich! –

+0

Ich fürchte, \t gibt es nicht einfacher Weg) können Sie Ihre search.php Datei anzeigen? – questlooking

+0

Dies ist mein search.php Datei: http://pastebin.com/zXxy3zzR . Hinweis: Ich habe die POST geändert in meinem Formular GET –

Verwandte Themen