【问题标题】:HTML Table with inline PHP带有内联 PHP 的 HTML 表
【发布时间】:2018-05-29 04:41:08
【问题描述】:

我想创建一个 HTML 表,但是应该从 mysql 数据库中的值生成行。问题是我想要一个布尔框,用户可以在其中标记它,然后按一个按钮来更新数据库中的表。我该怎么做?

到目前为止的代码:

<?php 
session_start();
require("connectToEvent_log.php");
$connectToEvent = connect2db();
$uid = '2'; // for the filnal version: @$_SESSION['uid'];

$view_event = "SELECT * FROM event_log WHERE uid = $uid";
$view_event_query = mysqli_query($connectToEvent, $view_event);
$row = mysqli_num_rows($view_event_query);
$print = mysqli_fetch_array($view_event_query);
?>

<html>
<head>
<title>Events</title>
</head>
    <body>
        <form action="viewEvents.php" method="POST">
                <table border = '1'>
                    <tr> 
                    <?php
                        while($row != 0){
                        echo "<td>".$print['hours']."</td>";
                        echo "<td>".$print['date']."</td>";
                    }
                    ?>
                    </tr>
                </table>
        <form/>
        </form>
    </body>
</html>

【问题讨论】:

  • 您将需要一个 HTML 表单(带有复选框)和一些额外的 PHP 代码来存储从 HTML 表单传回的值。
  • 是的,我知道,但我只希望在数据库中有一行时生成复选框

标签: php mysql html-table


【解决方案1】:

您可以轻松地迭代 mysqli_fetch_array 函数的结果以创建表行。创建一个复选框标记很容易完成,我假设表有一个主键id,并且存储复选框值(0 或 1)的列称为checkbox

<?php 
session_start();
require("connectToEvent_log.php");
$connectToEvent = connect2db();
$uid = '2'; // for the filnal version: @$_SESSION['uid'];

$view_event = "SELECT * FROM event_log WHERE uid = $uid";
$view_event_query = mysqli_query($connectToEvent, $view_event);
$num_rows = mysqli_num_rows($view_event_query);
$rows = mysqli_fetch_array($view_event_query);

?>

<html>
<head>
    <title>Events</title>
</head>
    <body>
        <form action="viewEvents.php" method="POST">
            <table border="1">
                <thead>
                    <tr>
                        <td>Id</td>
                        <td>Date</td>
                        <td>Hours</td>
                        <td>Checkbox</td>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    for ($i = 0; $i < count($num_rows); $i++) {
                    ?>
                        <tr>
                            <td><?php print $rows[$i]["eid"]; ?></td>
                            <td><?php print $rows[$i]["date"]; ?></td>
                            <td><?php print $rows[$i]["hours"]; ?></td>
                            <td><input type="checkbox" name="row[<?php $rows[$i]["eid"]?>][checkbox]" value="1" <?php if ($rows[$i]["accepted"]) print ' checked="checked"'; ?>/></td>
                        </tr>
                    <?php
                    }
                    ?>
                </tbody>
            </table>
            <input type="submit" />
        </form>
    </body>
</html>

【讨论】:

  • 那段代码看起来很有希望,但是当我运行它时,我得到了一点警告......非法的字符串偏移......
  • 我不知道数据库的结构,所以$row数组索引可能都是错误的。如果您能给我们一些关于您的数据库的见解...
  • 哦,当然,没问题。事件行的结构如下:eid(event id)、uid、cid(Consultant id)、lid(location id)、日期、小时、类型、评论和接受。抱歉信息滞后
  • 嗯,我发现了错误.. 它是 foreach 循环。当您从 $row 中获取值时,它找不到该值。但是如果你从 $rows['date'];作为一个例子,它可以处理它。
  • 请注意,我还更改了 $rows 值内容,并且在我的示例中没有 $row 变量。你想遍历一个数组,而不是一条记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多