【问题标题】:I want my PHP to create ONE table, but it creates SEVERAL我希望我的 PHP 创建一个表,但它创建了几个
【发布时间】:2018-05-07 06:19:44
【问题描述】:

我需要通过 php 使用我的 mysql 服务器中的数据创建一个表。我已经设法建立了一个连接,并且可以创建一个表,但我的问题是它为每一行创建了一个表,而我想要一个统一的表。这是我的代码:

$sql = 'SELECT navn, institution, klip FROM parkeringsdata';
mysqli_select_db($conn , 'parkeringsdb');
$retval = mysqli_query( $conn , $sql );
echo "<br><br><br>";
if(! $retval ) {
die('Could not get data: ' . mysqli_error());
}

while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {

     echo "<table class='content info'>
        <tr>
          <td>Navn</td>
          <td>Institution</td>
          <td>Klip</td>
          <td>Rediger</td>
          <td>Slet</td>
        </tr>
       <tr>
         <td>".$row["navn"]."</td>
         <td>".$row["institution"]."</td>
         <td>".$row["klip"]."</td>
         <td><button type='button'>Rediger</button></td>
         <td><button type='button'>Slet</button></td>
       </tr></table><br>";
}

echo "Fetched data successfully\n";

mysqli_close($conn);

编辑:感谢所有快速回复,现在已经解决,我知道我在哪里犯了一个菜鸟错误。这是为了学校作业,我们一直在这里绞尽脑汁:)

【问题讨论】:

  • 您在 while 循环中有 标记,这就是您获得多个表而不是行的原因。尝试将
    标记移到循环外,将 移到 while 循环内,以在一个表中获取多行。
  • 换句话说:如果您不想重复代码的某些部分,请不要将该代码放入重复它们的循环中。
  • @Mads Christoffersen,您能接受最适合您的答案吗?

标签: php html html-table


【解决方案1】:
$table = "<table class='content info'>";

while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {

     $table .= "
        <tr>
          <td>Navn</td>
          <td>Institution</td>
          <td>Klip</td>
          <td>Rediger</td>
          <td>Slet</td>
        </tr>
       <tr>
         <td>".$row["navn"]."</td>
         <td>".$row["institution"]."</td>
         <td>".$row["klip"]."</td>
         <td><button type='button'>Rediger</button></td>
         <td><button type='button'>Slet</button></td>
       </tr>";
}
$table .= "</table><br>";

你在 foreach 循环中有表格开始和结束标签。

【讨论】:

    【解决方案2】:

    while 循环外的回显表

        $sql = 'SELECT navn, institution, klip FROM parkeringsdata';
    mysqli_select_db($conn , 'parkeringsdb');
    $retval = mysqli_query( $conn , $sql );
    echo "<br><br><br>";
    if(! $retval ) {
    die('Could not get data: ' . mysqli_error());
    }
      echo "<table class='content info'>";
    while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {
    
        echo "<tr>
              <td>Navn</td>
              <td>Institution</td>
              <td>Klip</td>
              <td>Rediger</td>
              <td>Slet</td>
            </tr>
           <tr>
             <td>".$row["navn"]."</td>
             <td>".$row["institution"]."</td>
             <td>".$row["klip"]."</td>
             <td><button type='button'>Rediger</button></td>
             <td><button type='button'>Slet</button></td>
           </tr>";
    }
    echo "</table><br>";
    echo "Fetched data successfully\n";
    
    mysqli_close($conn);
    

    【讨论】:

      【解决方案3】:

      您需要从 for 循环中提取 ""、"" 和表头定义,因此它只会执行一次。

      并且:以这种方式创建表很容易,但会导致容易出错且难以维护代码。

      循序渐进的学习就好了。

      但很可能您迟早会想要切换到模板引擎(在客户端或服务器端,您和您的应用程序选择)。

      【讨论】:

      • 感谢您的快速回复。我知道使用模板引擎会更容易管理,但这是针对学校作业的,我们需要对其进行编码。
      • 啊,好吧。是的。当学校要求你为了成绩而开枪打死自己时,你别无选择。如前所述:按照学习您(或模板引擎)在做什么所需的步骤,这样做是可以的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      相关资源
      最近更新 更多