2017-02-02 1 views
0

나는 내 웹 사이트의 헤더에서 검색 페이지와 검색 입력을 가지고 있으며 사용자가 쿼리를 입력 할 때 그는 search.php로 이동하고 사용자가 원하는 결과를 표시합니다.검색 결과를 페이지 매기기하는 방법은 무엇입니까?

하지만 난 표시하거나 그 결과를 읽기 위해 정말 열심히하게 결과를 많이 가지고, 그래서 나는 ..

나는 내 웹 사이트에 페이지 매김 기능을 사용하고

,하지만하지를 페이지 매김을해야 할 때 이 검색 페이지를 처리 ​​할 때 작동합니다. 모든 페이지에서 동일한 쿼리를 보내고 있기 때문에 그 이유가 생각납니다. 페이지의 결과가 모든 페이지에 표시됩니다.

누구든지 가능합니다. 검색 페이지의 페이지 매김을 만드는 방법을 설명해주십시오. 예를 들어 페이지 당 15 개의 결과를 보여줌으로써?

내가 가진 것을 검색 형태 :

<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

[어떻게 응답 작업을 허용합니까?] 읽어 보시기 바랍니다 (http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work가) – Quentin

답변

1

내 프로젝트의 페이지 매김에 대한 예를 보여 드리겠습니다. 나는 약간의 논평을했다. 그러나 나는 프랑스어 다. 그러나 나는 그들이 번역하기 쉽다라고 생각한다. 이게 당신을 도울 수 있기를 바랍니다. 나는 당신이 내 ''configuraiton.php ''을 필요로하지 않는다고 생각한다. 어쨌든 내 예제를 이해하려고 시도하면 로컬 서버 연결을위한 것이다. 오우와 내 검색은 3 가지 기준을 가지고 있기 때문에 나는 스위치와 케이스를 가지고있다.

//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"; 
} 

?> 

자동차에 대한 나의 검색 페이지입니다.

<?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

당신에게 선생님 감사이 어떤 방식으로 해결했습니다 시간 ( –

+0

당신은 위대한 직업입니다! –

0

내가이 양식 변경이 필요하지 않습니다 생각합니다. search.php 파일 (및 결과를 보여주는 파일)을 변경해야합니다. sql-query에 제한을 추가하고 마크 업에 페이지 매기기 단추를 추가하십시오. this처럼.

+0

가 간단한 방법이 있나요 이거 만드시겠습니까? 나는 그 코드를 정말로 이해하지 못한다! –

+0

두려워 \t 더 간단한 방법이 아닙니다. search.php 파일을 표시 할 수 있습니까? http://pastebin.com/zXxy3zzR 참고 :. 나는 거기에 약간의 코딩을 필요가 내 양식 – questlooking

+0

이 내 search.php 파일입니다 . 내가 –

관련 문제