使用php switch语句在mysql查询的html表中显示图像url

3b6akqbq  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(337)

我有一个mysql表字段,它由指向图像的url组成。我正在使用php,希望图像与其他字段一起显示在表中。
我想我需要使用php switch语句并引用row('name')或field ref number来创建代码。我有这个工作在经典的asp很好,但需要在php代码。

$result = mysql_query("SELECT sometext,urlvalue,somemoretext FROM Table");
if (!$result) {
    die("Query to show fields from table failed");

    // Table fields
    // sometext
    // urlvalue  an http image address such as http://www.example.com/image.jpg"
    // somemoretext

    $fields_num = mysql_num_fields($result);

    echo "<table border='1'>
        <tr bgcolor='yellow' align='left'>";
            for($i=0; $i<$fields_num; $i++) {
                $field = mysql_fetch_field($result);
                echo "<th>{$field->name}</th>";
            }
            echo "\n";

            // printing table rows
            while($row = mysql_fetch_row($result)) {
                echo "<tr>";

                    // $row is array... foreach( .. ) puts every element
                    // of $row to $cell variable
                    foreach($row as $cell)
                        switch $fields_num {
                            case "2":

                            // result cell looks like this ---->
                            // <td><a target='_blank'  href='http://www.example.com/image.jpg'><img src='http://http://www.example.com/image.jpg'></a></td>

                                echo "<td><a target='_blank' href='" . $cell ."'><img src='" . $cell ."'></a></td>";
                                break;
                            default:
                                echo "<td>$cell</td>";
                                echo "</tr>\n";
                        }
                        mysql_free_result($result);
jjjwad0x

jjjwad0x1#

如果您知道要访问的列,并且知道哪个列是url,那么您可以使用以下命令 mysqli_ -在内部循环中使用条件检查匹配列名的基于代码块。
如果不知道要处理的列,可以使用 filter_var($val, FILTER_VALIDATE_URL) 假设结果集中只有一个url字符串。如果您选择第二个选项,我的代码块的一个副作用是您将重新设计 <th> 部分。
我拒绝用英语写答案 mysql_ 函数,所以请借此机会更新您的代码。为了便于调试,我已经包含了连接声明和基本的错误检查(从不在公共网站上显示错误消息。)
未测试代码:

$columns = ['sometext', 'urlvalue', 'somemoretext'];
if (!$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db")) {
    echo "Database Connect Error: " , $mysqli->connect_error;
} elseif (!$result = $mysqli->query("SELECT `" . implode('`, `', $columns) . "` FROM `Table`")) {
    echo "Query Syntax Error: " , $mysqli->error;
    if (!$result->num_rows) {
        echo "No Rows Found";
    } else {
        echo "<table border='1'>";
            echo "<tr bgcolor='yellow' align='left'>";
                echo "<th>" , implode("</th><th>", $columns) , "</th>";
            echo "</tr>";
            while ($row = $result->fetch_assoc()) {
                echo "<tr>";
                    foreach ($row as $col => $val) {
                        echo "<td>";
                            if ($col == 'urlvalue') {  // or if (filter_var($val, FILTER_VALIDATE_URL)) {
                                echo "<a target='_blank' href='$val'><img src='$val'></a>";
                            } else {
                                echo "$val";
                            }
                        echo "</td>";
                    }
                echo "</tr>";
            }
        echo "</table>";
    }
}
ghg1uchk

ghg1uchk2#

我不完全清楚你的意思,但不是引用字段号,而是引用名称。

if ($result->num_rows > 0) {
            echo "<table border='1'><tr bgcolor='yellow' align='left'>";
            while($row = $result->fetch_assoc()) {
                echo "<th>".$row['field-name']."</th>";
                echo "<tr>";
                   echo "<td><a target='_blank' href='" . $row['field-name'] ."'><img src='" . $row['field-name'] ."'> 
                 </a> 
            </td>";
                echo "</tr>";
            }
           echo "</table>";
        }

相关问题