2016-09-23 18 views
1

投稿されたファイルをチェックするためだけに、テーブル内に画像プレビューを作成しようとしています。テーブルには3つ以上のcolを指定することはできません。また、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に超えた30秒の最大実行時間:\ xamppの\ htdocsに\アプリ\ Finalizar.phpライン88には、" 読み込みに表示されます。 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

これは、円柱出力の仕方ではありません。それはあなたが二つのループ、DBに残っよりは結果がありませんになるまで繰り返し続けるだけで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>'; 

ようにする必要があります。ただ、機能コード登録する

+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> 
関連する問題