【问题标题】:PHP comment formPHP评论表单
【发布时间】:2022-02-02 05:55:17
【问题描述】:

我创建了一个评论表单。它从数据库中获取 id 并打印出与该 id 相关的数据,但它还将信息打印到表单中。如何获得一个空白表单,以便用户可以向记录添加评论?

这是表单的代码:

<form method="post" action="pv.php?id=<?php echo $row['ID']?>&action=<?php echo $form_action ?>">
    <fieldset>
        <legend></legend>
        <p>
            <label for="cname">Date Of Birth</label>  *
            <input id="cname" name="dateofbirth" class="required date"  value="<?php echo $row['Date_Of_Birth']?>" />  (eg 1978.11.11)
        </p>

        <p>
            <label for="cgender">Gender</label>   *
            <input type="radio"
                   name="gender"
                   value="Male"
                   <?php if($row['Gender']=='male'){echo 'checked';}?>/>
                   Male
            <input type="radio"
                   name="gender"
                   value="Female"
                   <?php if($row['Gender']=='female'){echo 'checked';}?>/> Female </td>
        </p>

        <p>
            <label for="curl">Title</label>   *
            <select name="title"   id="title"  class="required">
                <option value="">Please Select</option>
                <option value="Mr" <?php if($row['Title']=='Mr'){echo 'selected';}?>>Mr</option>
                <option value="Ms" <?php if($row['Title']=='Ms'){echo 'selected';}?>>Ms</option>
                <option value="Mrs" <?php if($row['Title']=='Mrs'){echo 'selected';}?>>Mrs</option>
                <option value="Miss" <?php if($row['Title']=='Miss'){echo 'selected';}?>>Miss</option>
                <option value="Other" <?php if($row['Title']=='Other'){echo 'selected';}?>>Other</option>
                </select>
        </p>

        <p>
            <label for="ccomment">First Name</label>     *
            <input type="text" name="firstname" value="<?php echo $row['First_Name']?>" maxlength="50" />
        </p>

        <p>
            <label for="cemail">Last Name</label> *
            <input id="cemail" type="text" name="lastname"
                   value="<?php echo $row['Last_Name']?>" maxlength="75" />
        </p>

        <p>
            <label for="ccomment">Address 1</label>*
            <input type="text" name="address1"
                   value="<?php echo $row['Address_Line_1']?>" maxlength="50" />
        </p>

        <p>
            <label for="ccomment">Address 2</label>
            <input type="text" name="address2"
                   value="<?php echo $row['Address_Line_2']?>" maxlength="50" />
        </p>

        <p>
            <label for="ccomment">City</label>*
            <input type="text" name="city"
                   value="<?php echo $row['City']?>"  maxlength="50" />
        </p>

        <p>
            <label for="ccomment">Postcode</label>*
            <input type="text" name="postcode"
                   value="<?php echo $row['Postcode']?>" maxlength= "10" />  (eg LE5 5QE)
        </p>

        <p>
            <label for="ccomment">Contact No</label>*
            <input type="text" name="contactno"
                   value="<?php echo $row['Contact_No']?>" maxlength= "12" />  (eg 077448825723)
        </p>

        <p>
            <label for="ccomment">Email</label>*
            <input type="text" name="email"
                   value="<?php echo $row['Email']?>" maxlength= "40"/>  (eg info@example.com)
        </p>

        <p>
            <label for="ccomment">Comment</label>
            <textarea rows="10" cols="30" name="note"
                      maxlength= "500"><?php echo $row['Additional_Comment']?></textarea>
        </p>

        <p>
            <input class="submit" type="submit" value="Submit"/>
        </p>

        <p>
            <a href='pv.php'>Main Page</a>
       </p>

    </fieldset>
</form>

这是打印页面数据的代码:

if($_GET['action'] == 'comment') {
    $form_action = 'comment_ok';
    $id = $_GET['id'];
    $result = mysql_query("SELECT * FROM project_data WHERE id='$id'");
    $row = mysql_fetch_array($result);

    echo'<b>';
        echo $row['Date_Of_Birth'];
        echo '&nbsp&nbsp';
        echo $row['Gender'];
        echo '&nbsp&nbsp';
        echo $row['Title'];
        echo '&nbsp&nbsp';
        echo $row['First_Name'];
        echo '&nbsp&nbsp';
        echo $row['Last_Name'];
        echo '&nbsp&nbsp';
        echo $row['Address_Line_1'];
        echo '&nbsp&nbsp';
        echo $row['Address_Line_2'];
        echo '&nbsp&nbsp';
        echo $row['City'];
        echo '&nbsp&nbsp';
        echo $row['Postcode'];
        echo '&nbsp&nbsp';
        echo $row['Contact_No'];
        echo '&nbsp&nbsp';
        echo $row['Email'];
        echo '&nbsp&nbsp';
        echo $row['Additional_Comment'];
    echo '</b>';
}

还有我用来将 id 发送到表单的代码的 sn-p:

echo "<td><a href='pv.php?action=edit&id=" . $row['ID'] .
     "'>Edit</a>&nbsp&nbsp<a href='pv.php?action=delete_ok&id=" . $row['ID'] .
     "'>Delete</a>&nbsp&nbsp**<a href='pv.php?action=comment&id=" . $row['ID'] .
     "'>Comment</a></td>"**;
echo "</tr>";

我该怎么做?

【问题讨论】:

  • 您的问题是什么?有什么不工作吗?
  • 我对每条记录都有一个评论页面,当我点击它时,记录数据会打印在顶部,但我想要一个空白表格,而不是数据显示在顶部和表格中的表格.我想知道如何显示空白表格?

标签: php mysql html forms comments


【解决方案1】:

如果您想要一个允许用户填写空白表单的页面,请查看已填写的表单并更新表单。

您可以通过检查是否存在 id 来完成空白表格或填充表格,如下所示:

<?
    if (isset(id)) // Here you can check if the id exists, which means you will be doing an update to the SQL query
        echo'
        <form method="post" action="pv.php?id=' . $row['ID'] . '&action=' . $form_action . '">

            <!-- Your form here with values -->
            e.g. <label for="cemail">Last Name</label> *
            <input id="cemail" type="text" name="lastname" value="' . $row['Last_Name'] . '" maxlength="75" />
        </form>';

        // Put your SQL update here to take the values from the above form
    }
    elseif (!isset(id)) // Here there is no id so you will want to insert
    {
        echo'
        <form method="post" action="pv.php?id=' . $row['ID'] . '&action=' . $form_action . '">
            <!-- Your form here with values -->
            e.g. <label for="cemail">Last Name</label> *
            <input id="cemail" type="text" name="lastname" maxlength="75" /> // No value here because will insert new record
        </form>';

        // Put your SQL insert here to create a new record
    }
?>

如果您可能希望用户能够完全添加新评论,而不是编辑已经与他们的 id 关联的评论,我认为您必须通过让他们选择添加另一条评论来做到这一点。为此,我将创建一个新表,然后将 cmets 插入其中,因此您有一个表 example_users 包含用户信息,然后是另一个表 user_cmets , 以用户 cmets 为例:

example_users

id = 1
fname=Joe
lname=Bloggs
email=jbloggs@example.com

user_cmets

id=1
user_id=1
comment=Comment will be saved here

这样,任何用户都可以拥有任意数量的 cmets。您可以通过使用 foreach 语句在页面上呈现它,以呈现一个包含所有现有 cmets 的文本框,然后在末尾为任何新的 cmets 留一个空白。然后他们可以编辑任何评论并添加新评论。

【讨论】:

    【解决方案2】:

    如果您希望表单为空,只需将 value 属性设置为空即可。例如值=''。 id 字段除外。

    【讨论】:

    • 我有一个表单控制三个链接,一个用于编辑,一个用于插入新条目,一个用于评论。插入的是空白的,因为我没有发id,edit的填了,因为我发的是id,comment是一样的,但是不应该填写。
    • 据我所知,您在发送 id 时会回显内容。所以有两个选择:不发送 id,或者忽略它。顺便说一句,这里有一个相当大的漏洞:$id=$_GET['id']; $result = mysql_query("SELECT * FROM project_data WHERE id='$id'"); 你应该考虑SQL Injection 的风险。
    • 您的表单字段未填写,因为您发送的是 id,它们已填写,因为您设置了 value 属性 - value=。如果你这样保留 value="",那么它将为空。
    • 是的,但就像我说的,我有一个表单可以控制三个不同的部分,我无法使用一种表单来控制评论部分,仍然发送 id 来打印数据,但是有空白表格?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2013-08-13
    • 2019-02-08
    • 2011-10-08
    相关资源
    最近更新 更多