【问题标题】:PHP create HTML table from database [duplicate]PHP从数据库创建HTML表[重复]
【发布时间】:2012-01-11 14:39:23
【问题描述】:

可能重复:
outputting values from database into html table PHP

我正在尝试在我的 .php 文档中创建一个表,该表中填充了数据库中表中的值。但我无法让它工作。

首先,当有超过 1 行时,它不会删除值(那一天只能有 1 个项目)

其次,如果没有特定日期的数据,它只会将其放入之前的单元格中,这意味着它是在错误的日期。

代码如下:

<?php
    if(!empty($_POST['recipe'])) {
        $week = mysql_real_escape_string($_POST['week']);
        $day = mysql_real_escape_string($_POST['day']);
        $mealtime = mysql_real_escape_string($_POST['mealtime']);
        $recipe = mysql_real_escape_string($_POST['recipe']);

        $check = mysql_query("SELECT * FROM menu WHERE dayid = '".$day."' AND mealtimeid = '".$mealtime."'");

        if(mysql_num_rows($check) == 1) {
            mysql_query("DELETE FROM menu WHERE mealtimeid = '".$mealtime."' AND dayid = '".$day."'");
            $success = mysql_query("INSERT INTO menu (weekid, dayid, mealtimeid, recipeid) 
                                    VALUES('".$week."', '".$day."', '".$mealtime."', '".$recipe."')");

            if($success) {
                echo "<h1>Success</h1>";
                echo "<p>Your recipe was successfully added.</p>";
            }
            else {
                echo "<h1>Error</h1>";
                echo "<p>Sorry there was a problem, please try again.</p>";
            }
        }

        else {
            $success = mysql_query("INSERT INTO menu (weekid, dayid, mealtimeid, recipeid) VALUES('".$week."', '".$day."', '".$mealtime."', '".$recipe."')");

            if($success) {
                echo "<h1>Success</h1>";
                echo "<p>Your recipe was successfully added.</p>";
            }

            else {
                echo "<h1>Error</h1>";
                echo "<p>Sorry there was a problem, please try again.</p>";
            }
        }
    }

    if(!empty($_POST['selectweek'])) {
        $selectweek = mysql_real_escape_string($_POST['selectweek']);

        function ouptutMeal($selectweek, $mealtime, $mealname) {
            $sqlmeasurement2 = mysql_query("SELECT title, dayid
                                            FROM recipe
                                            JOIN menu ON recipe.recipeid = menu.recipeid
                                            WHERE menu.weekid = '$selectweek'
                                            AND menu.mealtimeid = '$mealtime'
                                            ORDER BY dayid");

            echo "<br/>
                <table>
                    <td></td>
                    <td><strong>Monday</strong></td>
                    <td><strong>Tuesday</strong></td>
                    <td><strong>Wednesday</strong></td>
                    <td><strong>Thursday</strong></td>
                    <td><strong>Friday</strong></td>
                    <td><strong>Saturday</strong></td>
                    <td><strong>Sunday</strong></td>
                <tr>
                   <td><strong>$mealname</strong></td>";
                while($info2 = mysql_fetch_array( $sqlmeasurement2 )) {
                    if(empty($info2['dayid'])) {
                        echo '<td></td>';
                    }
                    elseif($info2['dayid'] == '1') {
                        echo '
                              <td>', $info2['title'], '</td>';
                    }

                    elseif($info2['dayid'] == '2') {
                        echo '
                              <td>', $info2['title'], '</td>';
                    }

                     elseif($info2['dayid'] == '3') {
                        echo '
                              <td>', $info2['title'], '</td>';
                    }

                    elseif($info2['dayid'] == '4') {
                        echo '
                              <td>', $info2['title'], '</td>';
                    }

                    elseif($info2['dayid'] == '5') {
                        echo '
                              <td>', $info2['title'], '</td>';
                    }

                    elseif($info2['dayid'] == '6') {
                        echo '
                              <td>', $info2['title'], '</td>';
                    }

                    else {
                        echo '
                              <td>', $info2['title'], '</td>';
                    }
                } 
            echo '</tr>
                </table>';
            }
        ouptutMeal($selectweek, 1, 'Breakfast');
        ouptutMeal($selectweek, 2, 'Lunch');
        ouptutMeal($selectweek, 3, 'Evening Meal');
        ouptutMeal($selectweek, 4, 'Pudding');
        ouptutMeal($selectweek, 5, 'Supper & Snacks');
        }
    }

    else {
?>

这是它从中获取数据的表单:

<form method="post"
      action="">
  <fieldset>
    <label for="week">Select Week:</label> <select name="week">
      <option value="0">
        Select Week<?php echo $item; ?>
      </option>
    </select> <label for="day">Select Day:</label> <select name=
    "day">
      <option value="0">
        Select Day<?php echo $item2; ?>
      </option>
    </select><br />
    <br />
    <label for="mealtime">Select Meal Time:</label> <select name=
    "mealtime">
      <option value="0">
        Select Meal Time<?php echo $item3; ?>
      </option>
    </select><br />
    <br />
    <label for="recipe">Select Recipe:</label> <select name="recipe">
      <option value="0">
        Select Recipe<?php echo $item4; ?>
      </option>
    </select> <input type="submit"
              id="login-submit"
              value="Add to Menu" />
  </fieldset>
</form>

<form method="post"
      action="">
  <label for="selectweek">Select Week:</label> <select name=
  "selectweek">
    <option value="0">
      Select Week<?php echo $item; ?>
    </option>
  </select> <input type="submit"
        id="login-submit"
        value="View Menu" />
</form>

-- 末尾的项目本应在星期日,但由于前一天没有项目而落后。我怎样才能让那个项目去星期天,同时在另一个项目没有的地方保持一个间隙。

【问题讨论】:

  • if 语句的意义何在?输出总是一样的? echo '&lt;td&gt;', $info2['title'], '&lt;/td&gt;';
  • if(mysql_num_rows($check) == 1) 这必须像 if(mysql_num_rows($check) > 0) 这并不能解决问题。但导致问题
  • 请不要转发您的问题。如果您想添加更多详细信息,请改为编辑原始问题。

标签: php sql phpmyadmin


【解决方案1】:

使用 if 检查值是否为空。像这样的东西。

if($info2['dayid'] == "") {
      echo '<td>&nbsp;</td>';
   }

它会正确填充它,而不会干扰它的布局。

希望这会有所帮助。

【讨论】:

  • 我试过把 if 语句放在前面,但结果还是一样。
  • 在您的桌子上打印时尝试一下..
  • 哦,你把上面的if语句放在哪里了?在while循环内部还是外部?
猜你喜欢
  • 2016-07-14
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 2015-10-16
  • 1970-01-01
  • 2013-02-21
相关资源
最近更新 更多