douyuliu9527 2016-09-23 17:44
浏览 30
已采纳

PHP变量表大小,列数受限制

I'm trying to make an image preview in a table, just for checking the submitted files. The table can't have more than 3 cols, and the number of rows and cels is variable, because I skip the "not found" images in DB. I did the code below, but couldn't solve the logic by myself. The table shows the same image for row, and jumps 2 results for the next one.

    <?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

In addiction, the message "Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\app\Finalizar.php on line 88" appears on loading. The line 88 refers to if ($foto != false).

  • 写回答

2条回答 默认 最新

  • dongyong1942 2016-09-23 17:48
    关注

    That's not how you do a columnar output. It should be more like

    $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>';
    

    You don't need two loops, just the one loop, which keeps repeating until there's more no results left in the DB.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了