【问题标题】:Filling multiple HTML tables from a database table filled by CSV从由 CSV 填充的数据库表中填充多个 HTML 表
【发布时间】:2017-04-05 03:48:08
【问题描述】:

我目前有一个网站,它有一个简单的界面,用户可以在其中登录并选择上传或查看。他们可以上传 CSV(为此,CSV 模板包含大约 300 个字段)或转到页面以选择或搜索已上传的特定记录(按某些键排序)。

在我的文件夹中有一个用于文件上传/提交部分的 HTML 页面,该页面使用了一个 upload.php 文件,该文件大约有 400 行代码,用于处理将 CSV 插入到数据库中。我现在创建了一个 display.html 文件,其中包含大约 300 行其他代码,用于一页上的 14 或 15 个单独的 HTML 表。我首先在 HTML 中创建了它们,因为它们每个都有不同的样式、标题和需要保留的格式。

我的目标是:当用户选择一条记录时,我需要显示包含所有不同表的 html 页面,并且每个表都需要由保存 300 字段 CSV 的 SQL 暂存表中的某些字段填充。因此,前十个字段将在一个表中,接下来的 7 个字段将在一个表中,依此类推。我知道我不能在 HTML 页面中调用 PHP,但是我已经在 HTML 中创建了表格,所以我想知道是否可以将其更改为 php 并向现有表格添加某些语法以及如何将这些字段插入每个表行按名称。这是一个上传 PHP 的示例,其中我为列声明了变量:

PHP(用于上传-单独的文件)

if(isset($_POST['submit']))
{

$file = $_FILES["file"]["tmp_name"];
$handle = fopen($file, "r");
$filesop = fgetcsv($handle, 0, ",");

$coldata = array();

$coldata[ "orderNumber" ] = $filesop[0];
$coldata[ "place" ] = $filesop[1];
$coldata[ "workOrderNum" ] = $filesop[2];
$coldata["lowSideMIUNum"] = $filesop[3];
$coldata["highSideMIUNum"] = $filesop[4];
$coldata["accountNum"] = $filesop[5];
$coldata["custName"] = $filesop[6];
$coldata["address"] = $filesop[7];
$coldata["locID"] = $filesop[8];
$coldata["date"] = $filesop[9];
$coldata["utility"] = $filesop[10];
$coldata["serialNumber"] = $filesop[11];
$coldata["serviceName"] = $filesop[12];
$coldata["address2"] = $filesop[13];
$coldata["servicePreformed"] = $filesop[14];
$coldata["bypassSize"] = $filesop[15];
}

现有表的 HTML(只有一个表。我在尝试将 PHP 用作 PHP 文件时将其留在文件中):

<!--<?php

$server = "localhost";
$user = "root";
$pw = "root";
$db = "uwsTest";

$connect = mysqli_connect($server, $user, $pw, $db);

$query1 = "SELECT * FROM staging";
$result1 = mysqli_query($connect,$query1);

if ($connect->connect_error) {
die("Connection failed: " . $conn->connect_error);
}else{
    echo'success!';
}


?>


<?
while($row = mysql_fetch_array($result1)){
?>
<!--Qa Table-->
<table>
<tr>
<th colspan="2">Qa/Qc CheckList</th>
</tr>
<tr>
<td>Service Address Correct</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>Service Loc Correct</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Number Correct</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Manufacturer Changed</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Type Changed</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Model Changed</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>Low Register Correct</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>High Register Correct</td>
<td><? echo $row['orderNumber'];?>&nbsp;</td>
</tr>
</table>
<br>
<br>

<?
}
?>

我将 PHP 代码留在表格中以显示我尝试的内容,但我认为表格名称的命名约定不适用于我的 php.ini 文件。在我的网页上,我只收到关于成功连接数据库的消息,但我的表不像我只作为 PHP 运行时那样显示。将我的数据库中的变量插入此页面上的多个表的最佳方法是什么?

【问题讨论】:

  • 您在尝试提供的示例时遇到了哪些错误?
  • TMI。我中途失去了兴趣。
  • Kade M.,没有错误,但是当我将 HTML 文件作为仅表格执行时,它们都会显示出来。否则,使用 PHP 代码,我会收到成功连接的调试消息,否则会显示空白页。
  • CodeGodie,我过去在这个项目的 CSV 部分遇到了一些问题,我没有在问题中提供足够的信息。我已经学会了尽可能多地投入我想要完成的目标,因为我宁愿投入太多也不愿投入不足。
  • 一些代码在评论中你是否使用该代码如果是,你在这一行混合了mysql和mysqliwhile($row = mysql_fetch_array($result1)){

标签: php html mysql csv html-table


【解决方案1】:

此解决方案将允许您配置哪些列出现在哪个表中。

<?php

$tables = array();
$tables[0] = array('title' => 'Qa/Qc CheckList', 'cols' => array('Order #' => 'orderNumber','Place' => 'place','Work Order' => 'workOrderNum'));
$tables[1] = array('title' => 'Another CheckList', 'cols' => array('Low Side MIU' => 'lowSideMIUNum','Account #' => 'accountNum','Name' => 'custName'));
// ... add other table definitions ...

if ($connect->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
    echo'success!';
}
$query1 = "SELECT * FROM staging";
$result1 = mysqli_query($connect,$query1);

$all_rows = mysqli_fetch_all($result1);

if($all_rows) {
    foreach($tables as $tableno => $tableinfo) {
        foreach($all_rows as $rowno => $row) {
?>
<!-- <?php echo $tableinfo['title']; ?> -->
<table>
<tr>
    <th colspan="2"><?php echo $tableinfo['title']; ?></th>
</tr>
<?php
            foreach($tableinfo as $col_label => $col_name) {
?>
<tr>
    <td><?php echo $col_label; ?></td>
    <td><?php echo $row[$col_name]; ?></td>
</tr>
<?php
            } // end of foreach $table_info
?>
</table>
<?php
        } // end of foreach $all_rows
?>
<?php
    } // end of foreach $tables

} else {
    echo "<p>No data found.</p>\n";
}
?>

【讨论】:

  • 这也是有道理的。我从上面修改了我的代码,以便一切都使用“mysql”并且我得到了它的工作,我只需要调用正确行的每个变量。如果我要保持这种格式,所有内容都将始终显示在相同的单元格中,只需从数据库中选择正确的记录即可。假设我用数据库中的每个工单号填写一个下拉列表并选择它,有没有一种特殊的方法可以使用 PHP 从数据库中调用适当的记录?
  • 首先,使用mysqli代替mysql。前者是流动的,后者是折旧的。至于第二个问题,你的 SQL 语句应该有一个 where 子句来从表中选择正确的记录。
  • 谢谢,我的 mac 实际上已经自动更正了,但实际上我确实将它们更改为都使用 mysqli。
  • 还有 where 子句?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多