【问题标题】:php editing script doesn't work properlyphp编辑脚本无法正常工作
【发布时间】:2015-01-27 23:50:51
【问题描述】:

该脚本是关于编辑从数据库中检索到的数据。它工作正常(它编辑数据)但错误数组在脚本运行时立即显示。所以我得到了所有的错误:忘记了标题、正文、日期。

出于测试目的,例如,我省略了标题并单击提交,我只得到您忘记输入标题的信息

<?php 
$page_title = 'Edit a Joke';
include ('includes/header.html');
echo '<h1>Edit a Joke</h1>';

// Check for a valid Joke ID, through GET or POST:
if ( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) { // From view_jokes.php
$id = $_GET['id'];
} 
else { // No valid ID, kill the script.
echo '<p>This page has been accessed in error.</p>';

exit();
}

 require ('mysqli_connect.php'); 

 // Check if the form has been submitted:
 if ($_SERVER['REQUEST_METHOD'] == 'GET') {

$errors = array();
// Check for a title
if (empty($_GET['title'])) {
    $errors[] = 'You forgot to enter title.';
} else {
    $tit = mysqli_real_escape_string($dbc, ($_GET['title']));
    }
// Check for body:
if (empty($_GET['body'])) {
    $errors[] = 'You forgot to enter body.';
} else {
    $bod = mysqli_real_escape_string($dbc, ($_GET['body']));
}
// Check for date:
if (empty($_GET['date'])) {
    $errors[] = 'You forgot to enter date.';
} else {
    $dat = mysqli_real_escape_string($dbc, ($_GET['date']));
}
if (empty($errors))  // If everything's OK.
                {

        // Make the query:                            
        $q = "UPDATE joke SET title='$tit', body='$bod', date='$dat'  WHERE joke_id=$id LIMIT 1";
        $r = @mysqli_query ($dbc, $q);
        if (mysqli_affected_rows($dbc) == 1) { // If it ran OK.

            // Print a message:
            echo '<p>The joke has been edited.</p>';    

        } else { // If it did not run OK.
            echo '<p class>The joke could not be edited. Sorry</p>'; // Public message.

        }             
               }

                  else { // Report the errors.

    echo '<p>The following error(s) occurred:<br />';
    foreach ($errors as $msg) { // Print each error.
        echo " - $msg<br />\n";
    }
    echo '</p><p>Please try again.</p>';

    }// End of if (empty($errors)) IF.
    }// End of submit conditional.


   // Always show the form...

     // Retrieve the joke information:
  $q = "SELECT title, body, date  FROM joke WHERE joke_id=$id";     
$r = @mysqli_query ($dbc, $q);

if (mysqli_num_rows($r) == 1) { // Valid joke ID, show the form.

// Get the joke's information:
$row = mysqli_fetch_array ($r, MYSQLI_NUM);

// Create the form:
echo '<form action="edit_joke.php" method="GET">

 <p> Title: <input type="text" name="title"  value="' . $row[0] . '" /></p>

<p> Body: <input type="text" style="height: 100" size="100" name="body" value="' . $row[1] . '" /> </p>

 <p> Date: <input type="date" name="date"  value="' . $row[2] . '"  /> </p>

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

  <input type="hidden" name="id" value="' . $id . '" />
  </form>';

 } else { // Not a valid joke ID.
echo '<p>This page has been accessed in error.</p>';
  }

  mysqli_close($dbc);

  ?>

【问题讨论】:

  • A:使用提交按钮的命名属性将执行的代码包装在条件 isset() 中。
  • 我对这个问题感到困惑,因为问题没有正确形成。我可以指出代码中有很多小东西,但有些可能对您的问题没有帮助。我的第一个想法是查看issetisemptyHere is a handy gist attempting to explain
  • 评论没有被阅读我接受。
  • @Fred-ii- 我把它弄红并试图放置 isset(submit) 但它没有用..我不想打扰你。 P.s 我是这个网站的新手。对不起
  • 没关系,如果有不清楚的地方,我们会提出问题;)

标签: php html forms mysqli


【解决方案1】:

改头换面:

if (isset($_GET['test'])) {

    $errors = array();

   // Check for a title


   ....

}
   // Always show the form...

并添加您的&lt;form:

<input type="hidden" name="test" value="1">

【讨论】:

  • 不,它不起作用......我仍然再次收到错误
  • 我明白了,现在用我的新答案测试
  • 它工作!最后 !你能说几句这是什么吗?正如我所见,您总是在传递一个值来测试,所以它总是被设置或?
  • 总是在您发送表单时设置,而不是在您先来时设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 2014-12-07
  • 2015-04-04
  • 1970-01-01
相关资源
最近更新 更多