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

时间:2018-04-21 02:57:44

标签: php html mysql switch-statement

我有一个MySQL表字段,其中包含指向图像的URL。我正在使用PHP并希望图像与其他字段一起显示在表格中。

我想我需要使用PHP Switch语句并引用Row('Name')或Fie​​ld Ref Number来创建代码。我在classic-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);

2 个答案:

答案 0 :(得分:0)

如果你知道要访问的列,并且知道哪个列是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>";
    }
}

答案 1 :(得分:-1)

我不完全确定你的意思,而是引用字段编号而不是引用名称。

        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>";
        }