2016-01-20 40 views
1

MySQL代碼如何在while()中劃分數據?

CREATE TABLE `images` (
    `id` bigint(20) NOT NULL, 
    `merek` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '', 
    `url` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '' 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; 

INSERT INTO `images` (`id`, `merek`, `url`) VALUES 
(1, 'gelang', 'Untitled-1.jpg'), 
(2, 'gelang', 'Untitled-2.jpg'), 
(3, 'gelang', 'Untitled-3.jpg'), 
(4, 'gelang', 'Untitled-4.jpg'), 
(5, 'gelang', 'Untitled-5.jpg'); 

和PHP代碼

<?php 
    $counter = 0; 
    $max = 2; 
    $query = "SELECT * FROM images ORDER BY RAND()"; 
    $result = $mysqli->query($query); 
    while($row = $result->fetch_array(MYSQLI_BOTH) and ($counter < $max)){ 
    $url=$row['url']; 
    echo $url; 
    echo "and"; 
    } 
?> 

也許結果會是這樣

Untitled-2.jpgUntitled-5.jpg

我想分裂Untitled-2.jpgUntitled-5.jpg。所以如果Untitled-2.jpg,使用class="first"。和Untitled-5.jpg使用class="second"。像這樣

 ..... 
     while($row = $result->fetch_array(MYSQLI_BOTH) and ($counter < $max)){ 
     $url=$row['url']; 
     echo "<img src=$url class="first">; 
     echo "<img src=$url class="second">; 
     } 
    ?> 

我可以從while()中分離數據嗎?

回答

2

您需要增加while循環中的$counter值。

然後,您可以添加一個條件來添加所需的類。以下是更新的代碼:

while($row = $result->fetch_array(MYSQLI_BOTH) and ($counter < $max)){ 
    $url=$row['url']; 

    $class = ($counter == 0) ? 'first' : 'second'; 

    echo "<img src='$url' class='$class'>"; 
    $counter++; 
} 
+0

你的回答並不滿足這一條件。如果Untitled-2.jpg,使用class =「first」。和Untitled-5.jpg use class =「second」 – Monty

+0

這是OP發佈的一個例子。您可以在問題中看到示例DB值。它不會工作,如果它是硬編碼。 – Samir

2

在while循環中添加一個計數器。

並檢查甚至奇怪的條件。

$i=0; 
while($row = $result->fetch_array(MYSQLI_BOTH) and ($counter < $max)){ 
    $url=$row['url']; 
    $class = ($i%2 == 0) ? 'first' : 'second'; 
    echo "<img src='$url' class='$class'>"; 
    ++$i; 
} 
0

這是最短的方法

寫這行while循環和img標籤定義的$ className。

$ className =($ url =='Untitled-2.jpg')? 'first': (($ url =='Untitled-5.jpg')?'second':'');

修改:

<?php 
    $query = "SELECT * FROM images ORDER BY RAND()"; 
    $result = $mysqli->query($query); 
    while($row = $result->fetch_array(MYSQLI_BOTH)){ 
    $url = $row['url']; 
     $className = ($url=='Untitled-2.jpg') ? 'first' : (($url=='Untitled-5.jpg') ? 'second' : ''); 
     echo "<img src=$url class=$className>"; 
    } 
?>