2012-12-07 71 views
0

我有一個命名爲容器和容器內的div我有兩個格列1和column2.Inside列1列2和我必須從數據庫中提取記錄,並必須證明它here.My代碼看起來象循環錯過處理?

<div id="container" style="height:600px; width:600px; border:1px solid #990000"> 
<?php $str=mysql_query("SELECT * FROM users") or die(mysql_error()); 
    while($rec=mysql_fetch_array($str){ 
?> 
<div id="column1" style="height:200px; width:295px; border:1px solid #0000FF;float:left;"> 

    /*Here this record should be of id=1 */ 
<img src="<?php echo $rec['pic'];?>" alt="No image" /> 
<?php echo $rec['detail']; 
</div> 
<div id="column2" style="height:200px; width:295px; border:1px solid #0000FF;float:left;"> 

/*Here this record should be of id=2 */ 
<img src="<?php echo $rec['pic'];?>" alt="No image" /> 
<?php echo $rec['detail']; 
</div> 
<?php } ?> 

我想在第1列記錄的用戶id = 1和第2列id = 2,再次在第1列id = 3和列2 id = 4等等。任何幫助我在這個循環?

+0

這個問題與'css'有什麼關係? –

+0

**請勿**將這些ID用於列。每個ID只能在文檔中存在一次。當需要使用它的多個實例時,請選擇類。 – inhan

回答

1

順便說一句,您正在使用不推薦的擴展名。我強烈建議你使用新的MySQLiPDO擴展名與PHP中的MySQL數據庫接口,以便進行新的開發,因爲這樣可以讓你的工作變得更加簡單。

你想要做什麼的答案只是遍歷結果集的兩倍,這可以通過PDO擴展來實現,如下所示。

<div id="container"> 
<?php 
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'mysqlusername', 'mysqlpassword'); 
$stmt = $pdo->query('SELECT * FROM users'); 
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

/* And now do your loop in pairs of two */ 

foreach (array_chunk($result, 2) as $pair) { 
    ?> 
    <div id="1"> 
     <?php echo $pair[0]['detail']; ?> 
    </div> 
    <div id="2"> 
     <?php echo $pair[1]['detail']; ?> 
    </div> 
    <?php 
} 
?> 
</div> 

另一種選擇是使用一個計數器,並在每次迭代翻轉然後按照通過的條件,以確定哪些DIV要輸出本次迭代循環。

<div id="container"> 
<?php 
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'mysqlusername', 'mysqlpassword'); 
$stmt = $pdo->query('SELECT * FROM users'); 
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

/* And now do your loop in pairs of two */ 

$div = 0; 
foreach ($result as $row) { 
    $div ^= 1; // bitwise XOR 
    if ($div) { // If it's odd show the first div 
     ?> 
     <div id="1"> 
      <?php echo $row['detail']; ?> 
     </div> 
     <?php 
    } else { // If it's even show the second div 
     ?> 
     <div id="2"> 
      <?php echo $row['detail']; ?> 
     </div> 
     <?php 
    } 
} 
?> 
</div> 
+0

額外的+1(如果我可以添加)按位XOR部分。唯一的問題是,我會更新ID的,因爲具有相同ID的多個元素不應該存在於DOMDocument中。 – inhan

+0

嗯,我也可以添加一個模數選項,但我不想壓倒OP :) – Sherif

+0

我認爲按位仍然是最聰明的方法。我只是自己寫了一個模數,但我沒有發表,因爲我發現你們已經回答了這個問題。 – inhan

0

這就是循環的全部內容。應該看起來像這樣:

<div id="container" style="height:600px; width:600px; border:1px solid #990000"> 
<?php 
$count = 0; 
$result = mysql_query("SELECT * FROM users") or die(mysql_error()); 
if (mysql_num_rows($result) > 0) { 
    while ($row = mysql_fetch_array($result)) { 
     $count++; 
?> 
    <div id="column<?php if($count&1) { echo "1"; } else { echo "2"; } ?>" style="height:200px; width:295px; border:1px solid #0000FF;float:left;"> 
     <img src="<?php echo $row['pic']; ?>" alt="No image" /> 
     <?php echo $row['detail']; ?> 
    </div> 
<?php 
    } 
} 
?> 
</div> 
+0

請解釋這個<?php if($ count&1).. part? – user1885057

+0

它檢查計數是偶數還是奇數。 :) –