2016-04-29 3 views
-1

Ich habe eine Datenbank mit Benutzern aus verschiedenen Ländern. Meine Seitennummerierung funktioniert, weil die Abfrage alle Zeilen zählt. Es gibt also 5 Seiten und sagen wir, dass die Gesamtzahl der Datensätze auf Seite 3 endet.Wie können bestimmte Zeilen basierend auf Daten in Tabellenfeldern für die Paginierung gezählt werden?

Meine Frage ist:

1) Wie kann ich nur die Datensätze von einem Land wir zählen sagen „Australien“? Und die Paginierung sollte mir nur Seiten mit Ergebnissen ohne zusätzliche Seiten ohne Ergebnisse geben?

Mein Code für Paginierung ist unten:

 <?php 

     $per_page = 1; 
     $pages_query = mysql_query("SELECT COUNT(*) FROM `users`"); 
     $pages = ceil(mysql_result($pages_query,0)/$per_page); 

     if (!isset($_GET['page'])) 

     { 
      header("location: blood.php?page=1"); 

     } 
     else 

      { 
      $page = $_GET['page']; 

      } 

      $start = (($page - 1)*$per_page); 

      $colours = mysql_query("SELECT * FROM users WHERE country ='australia' LIMIT $start,$per_page"); 

      while($row = mysql_fetch_assoc($colours)) 
      { 
      $username = $row['first_name']; 

      echo "$username<br>"; 

      } 

      for($number=1; $number<=$pages; $number++) 
      { 
      echo '<a href= "?page='.$number.'">'.$number.'&nbsp;</a>'; 
      echo"&nbsp;"; 
      } 

     echo "<br>Current Page: $page"; 
     ?> 

, wie ich den obigen Code verstehen sich zusammen mit der Korrektur in dem unten stehenden Code vorgeschlagen, wenn die Ergebnisse nach Benutzer Suche nach einem Benutzernamen und Nachname zurückgegeben werden.

 <?php 

     include 'core/init.php'; 
     include 'includes/overall/oheader.php'; 
     ?> 

     <?php 
     if(isset($_POST['submit'])) 
     { 
     $query = $_POST['uname_search']; 
     $queryl = $_POST ['lname_search']; 

     $min_length = 3; 
     if(strlen($query) >= $min_length && strlen($queryl) >= $min_length) 
     { 
     $query = htmlspecialchars($query); 
     $query = mysql_real_escape_string($query); 
     $queryl = htmlspecialchars($queryl); 
     $queryl = mysql_real_escape_string($queryl); 
     echo "<table border='1' width='250px' align='center' cellpadding='1' cellspacing='1'>"; 
    echo "<tr align='center' bgcolor='#002C40' style='color:#FFF'> 
    <td height='30px' width='150px'>Username</td> <td>first_name</td> <td>last_name</td><td>email</td><td>Mobile_Number</td><td>gender</td><td>county</td><td>blood_group</td> 


    $raw_results = 

    mysql_query("SELECT * FROM `users` WHERE (`username` LIKE '%".$query."%') AND (`last_name` LIKE '%".$queryl."%')"); 
    if(mysql_num_rows($raw_results) > 0) 
    { 
    while($results = mysql_fetch_array($raw_results)) 
    { 

    $image = "images/profile/1a4671c319.jpg" ; 

    echo "<tr align='center' bgcolor='#002C40' style='color:#FFF'> 


    <td rowspan='4'>"."<img src=".$results['profile']." width=100px height=100px> "."</td> 
    <td >Username</td> 
    <td >first_name</td> 
    <td>last_name</td> 
    <td>email</td> 


    </tr>"; 

    echo "<tr align='center' bgcolor='#0f7ea3'> 
     <td>".$results['username']."</td> 
    <td>".$results['first_name']."</td> 
    <td>".$results['last_name']."</td> 
    <td>".$results['email']."</td> 

    </tr>" ; 

    echo "<tr align='center' bgcolor='#002C40' style='color:#FFF'> 




    <td>Mobile_Number</td> 
    <td>gender</td> 
    <td>county</td> 
    <td>blood_group</td> 

    </tr>"; 

     echo "<tr align='center' bgcolor='#0f7ea3'> 

     <td>".$results['Mobile_Number']."</td> 
     <td>".$results['gender']."</td> 
     <td>".$results['county']."</td> 
     <td>".$results['blood_group']."</td> 

    </tr>" ; 
    } 

    } 
    else{ 
    echo "<tr align='center' bgcolor='#6C0000'> 

     <td colspan='8' height='25px'>No results</td><tr>"; 
    echo "</table>"; 
    } 
    } 
    else{ 
     echo "Minimum length is ".$min_length; 
    } 

     } 

     include 'includes/overall/ofooter.php'; 

    ?> 
+0

Warum brauchen Sie 'SELECT COUNT (*) FROM "Benutzer"' überhaupt? Ich kann mir nur so eine Abfrage vorstellen, wenn man "14 User aus Australien/100 User insgesamt" gleich Nachrichten anzeigen möchte – agustin

+0

wie schließe ich die Variable ein wenn ich den User durchsuchen lassen soll. Ich habe folgendes versucht, aber es gibt mir nur 1 Ergebnis anstelle von 3 und keine Links zu anderen Seiten. '' mysql_query ("SELECT COUNT (*) FROM Benutzer WHERE country =". $ country. ""); '' – hardeep

Antwort

2

Sie könnten die gleiche where Klausel auf die erste Abfrage anzuwenden, die die Benutzer zählt:

$pages_query = 
    mysql_query("SELECT COUNT(*) FROM `users` WHERE country ='australia'"); 
    # Here -----------------------------------^ 
+0

danke es hat funktioniert .. ich weiß nicht, wie ich das verpasst habe. – hardeep

+0

Was passiert, wenn ich das Land von einer Benutzersuchseite aus betrachte und in der PHP-Variable $ country abspeichere? Wie würde ich es in die Abfrage aufnehmen. Ich habe folgendes versucht, aber es gibt mir keine Ergebnisse. Es sollte 1 Ergebnis zeigen, dann zeige mir Links zu anderen Seiten. tut das nicht. ** mysql_query ("SELECT COUNT (*) FROM' Benutzer' WHERE country = ". $ country." "); ** – hardeep

Verwandte Themen