2016-09-23 37 views
1

我試圖在表中進行圖像預覽,只是爲了檢查提交的文件。該表不能超過3個列,並且行數和cels數是可變的,因爲我跳過了DB中的「未找到」圖像。 我做了下面的代碼,但不能自己解決邏輯。該表顯示了同一行的圖像,併爲下一個圖像跳轉2個結果。PHP列數有限的變量表大小

<?php 
     $dados  = mysql_fetch_array (mysql_query("SELECT id,placa,usuario FROM dados WHERE id='".$_SESSION['novaOS']."'")); 
     $itens  = mysql_result (mysql_query("SELECT itens_acessorios FROM vist_aval WHERE idp='".$_SESSION['novaOS']."'"),0); 

     $sqlFotos = "SELECT * FROM imagens WHERE idp='".$_SESSION['novaOS']."'"; 
     $qrFotos = mysql_query($sqlFotos) or die(); 
     $rowFotos = mysql_fetch_array($qrFotos) or die(); 
    ?> 

    (...) 

    <div> 
     <table> 
      <?php 
       $dir_img = "../uploads/fotos/"; 
       for($f=2;$f<=33;){ 
        $foto = $rowFotos[$f]; 
        $td = '<td><img src="'.$dir_img.''.$foto.'" style="margin:0;width:100%;height:auto"></td>'; 
        $tr = '<tr id="gridpreview"></tr>'; 
        if ($foto != false){ 
         for ($r=0;$r<=3;$r++){ 
          if ($r>0){ 
           echo $td; 
           $f++; 
          } 
          else{ 
           echo $tr; 
          } 
         } 
        } 
       } 
      ?> 
     </table> 
    </div> 

Generated Table

在成癮,消息 「致命錯誤:用C超過3000秒最大執行時間:\ XAMPP \ htdocs中\應用\上線88 Finalizar.php」 出現在負載。第88行是指if ($foto != false)

+0

** WARNING **:如果你剛開始學習PHP,請不要使用['mysql_query'](http://php.net /manual/en/function.mysql-query.php)接口。它是如此可怕和危險的,它是PHP 7.更換喜歡[PDO是不難學(http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps刪除-pdo-for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南介紹了最佳實踐。您的用戶參數** **不[正確轉義(http://bobby-tables.com/php)和有[SQL注入漏洞(http://bobby-tables.com/),可以利用。 – tadman

+0

@tadman是的,我在不久前處理PHP。我只是用這種方式來使用它,因爲功能性的東西很急。之後,我將有更多時間閱讀和應用最佳實踐。所以我可能會改變很多東西。非常感謝您的警告。 –

回答

1

這不是你如何做柱狀輸出。它應該更像

$col = 0; 
echo '<tr>'; 
while($row = ... fetch row from result ...) { 
    echo "<td>$row[whatever]</td>"; 
    $col++; 
    if ($col > 2) { 
     echo '</tr><tr>'; 
     $col = 0; 
    } 
} 
echo '</tr>'; 

你不需要兩個循環,只是一個循環,不斷重複,直到有更多的留在DB沒有結果。

+0

在這種情況下,是不是創建了的一個在另一個裏面? –

+0

我在這段代碼中做了相同的改變,它的工作原理。 感謝您的幫助! –

0

只需註冊功能代碼:

<table> 
<?php 
$dir_img = "../uploads/fotos/"; 
$col=0; 
$f=2; 
echo "<tr>"; 
while ($f<=33){ 
$foto = $rowFotos[$f]; 
if ($foto != false){ 
if ($col>2){ 
echo "</tr><tr>"; 
$col = 0; 
} 
else{ 
echo "<td><img src='".$dir_img."".$foto."' style='margin:0;width:100%;height:auto'></td>"; 
$col++; 
$f++; 
} 
} 
else{ 
    $f++; 
} 
} 
echo '<td>'; 
?> 
</table>