2017-08-12 14 views
0

ASCという名前のデータベースのデータを表示するためにPHPコードを書いた後、データをそれぞれ20レコードまで保持するページに分割しました。どのページで最初と最後の行の最初の文字を取得するには?

私はそれにさらに情報を追加したいと思います。各ページ番号の後にいくつかの情報が最初の名字(第1のレコード) - 姓の最初の文字(最後のレコード)を表示するように表示されます。

同様:ここ

1(A-H), 2(H-P), 3(P-U), 4(U-Z) 

、最初のページにはレコードが含まれ、その最初のレコード(名前の最初の文字)と最後のレコード(姓の最初の文字)

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "tssolutions"; 

$results_per_page = 20; 

//create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

//check connection 
if ($conn->connect_error) 
    { 
     die("Connection failed: " . $conn->connect_error); 
    } 

//echo "connected successfully"; 

if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * $results_per_page; 

//actual query to show 
$sql = "select name, phone, details, photo from phone order by name asc LIMIT $start_from, ".$results_per_page; 
$result = $conn->query($sql); 

     echo "<div class='w3-row-padding w3-grayscale'>"; 
     echo "<style> 
img.chip 
{ 
    float:left; 
    height:25%; 
    width:25%; 
    border-radius: 50%; 
} 

</style>"; 
if ($result->num_rows > 0) 
{ 
    //output data of each row 
    while($row = $result->fetch_assoc()) 
    { 
     echo "<div class='w3-col 3 m3 w3-margin-bottom w3-border w3-btn w3-padding w3-white' style='text-color:black;min-width:300px;'>"; 
     echo "<div class='w3-half'>"; 
     if(base64_encode($row['photo'])== !NULL) 
     { 
     echo '<img src="data:image/jpeg;base64,'.base64_encode($row['photo']).'" class="chip" style="height:120px;width:120px;margin-top:20px;">';   
     } 
     else 
     { 
     echo "<img src='./images/noimage.jpg' alt='Jane' class='chip' style='height:120px;width:120px;margin-top:20px;'>"; 
     } 
     echo "</div><div class='w3-half'>"; 
     echo "</h3>" .$row['name']. "</h3>"; 
     echo "<p class='w3-opacity'>" .$row['phone']. "</p>"; 
     echo "<p style='text-align:justify'>" .$row['details']. "</p>"; 
     echo "<p><button class='w3-button w3-light-grey w3-block'>Contact</button></p>"; 
     echo "</div>"; 
     echo "</div>"; 

    } 
      echo "</div>"; 
} 
else { 
    echo "0 results"; 
} 

$anothersql = "SELECT COUNT(name) AS total FROM phone"; 
$anotherresult = $conn->query($anothersql); 
$anotherrow = $anotherresult->fetch_assoc(); 

$total_pages = ceil($anotherrow["total"]/$results_per_page); // calculate total pages with results 
    echo" 
    <style> 
    a 
    { 
     text-decoration:none; 
    } 
    .curPage 
    { 
    text-decoration:underline; 
    font-size:30px; 
    } 

    </style> 
    "; 


       echo"<div style='text-align:center;margin-bottom:3px;';><h4>"; 

    for ($i=1; $i<=$total_pages; $i++) { // print links for all pages 

      echo "<a href='alumni.php?page=".$i."'"; 
      if ($i==$page) echo "class='curPage'"; 
      echo ">".$i."</a>&nbsp;&nbsp;"; 
}; 
    echo "</h4></div>"; 

mysqli_close($conn); 

echo "<hr>"; 
?> 
+2

あなたは私たちに何を望みますか? –

答えて

0

の内側に私は理解している場合正しく、各ページのファーストネームの頭文字をページネーションに追加します。

私が考えることができる唯一の方法は、ページの最初のエントリだけを選択し、最初の文字のみを表示するように結果をフォーマットするページネーションループでクエリを追加することですが、それはパフォーマンスが賢明ではありません。私はどうなるのか

は、各文字(ALL ABC D ...)で始まるすべてのエントリ

echo "<a href='alumni.php'>ALL </a>"; 
foreach (range('A', 'Z') as $char) { 
    echo "<a href='alumni.php?name=" . $char . "'>" . $char . " </a>"; 
} 

を表示し、何かに「表示する実際のクエリ」コメントしている部分を変更するフィルタを作成していますlike

if(isset($_GET['name'])) {  
    $letter = substr($_GET['name'], 0, 1);  
    $sql = "select name, phone, details, photo from phone WHERE name LIKE '".$letter."%' order by name asc LIMIT $start_from, ".$results_per_page; 
} else 
    $sql = "select name, phone, details, photo from phone order by name asc LIMIT $start_from, ".$results_per_page; 
} 
+0

私は選択した文字で結果が始まるグループでレコードをソートしますか? 私はそれを(あなたの答え)試してみましたが、何とかうまくいきませんでした。 –

+0

申し訳ありませんが、最初のコードをひどく書いて、もう一度コピー&ペーストしてください。 – gravi

+0

ありがとう、役に立った あなたは今日を保存しました:)。 –

関連する問題