0

感谢您花时间看这个问题。

这种情况的前提是我有一个用 PHP 和 HTML 编写的“网站”,它显示我的数据库中名为“电子表格”的项目。有六列,超过 4000 多行数据。这些列是“accountID”、“accountName”、“website”、“rating”、“imageURL”、“comments”。网站中的“评级”列是一个下拉列表。

目前,一切正常,但我有问题:

  1. 如何使用 PHP 在单击下拉列表中的选项(例如“非常糟糕”)时将数据提交到数据库?目前,它要求用户单击“提交”按钮,这会完全刷新页面,失去他们的位置。是否可以让它静默提交(不刷新)
  2. 第二个问题再次与下拉列表有关。你如何让下拉列表显示数据库中的内容?例如,如果数据库中的评级是“非常差”,下拉列表会反映这一点,而不是第一个元素是什么。

下面是我的代码。

    <a href =\"". $urlHTTP, $row['website']."\">". $row['website']."</a><br />
  <Form Name =\"rating\" Method =\"POST\" ACTION =\"\" />

  <input type = \"hidden\" name=accountID value=" . $row['accountID'] . ">
    <select name=\"rating\">
    <option value=\"\"></option>
    <option value=\"Very Bad\">Very Bad</option>
    <option value=\"Bad\">Bad</option>
    <option value=\"Average\">Average</option>
    <option value=\"Above Average\">Above Average</option>
  </select>

      <INPUT TYPE =\"Submit\" Name =\"formSubmit\" VALUE =\"Submit\">


if (isset($_POST['formSubmit'])){
    $rating = $_POST['rating'];
    $accountID = $_POST['accountID'];


var_dump($rating);
var_dump($accountID);


if(!mysql_query("UPDATE Spreadsheet SET rating='$rating' WHERE accountID='$accountID'")) {echo 1;}

}    
mysql_close();
?>

非常感谢!这个问题一直困扰着我。我已经尝试了很多谷歌尝试,但我找不到像我要求的那样具体的答案。非常感谢。

4

2 回答 2

0

对于第一个问题,您可以查看 ajax onchange 事件。基本上,当您更改选择值时,您会填充调用函数,该函数可以调用 php 文件以在 db 中插入数据。

对于第二个问题,您检查数据库中的选定值,如果它与选项值或文本匹配,则将其设置为选中

<select name=\"rating\">
<option value=\"\"></option>
<option value=\"Very Bad\">Very Bad</option>
<option value=\"Bad\">Bad</option>
<option value=\"Average\">Average</option>
<option value=\"Above Average\" 
<?php if($someValueFromDb=='Above Average'){
   echo 'selected=selected';}?>
 >Above Average</option>
 </select>
于 2012-12-06T22:27:59.933 回答
0

回答#1:

您可以使用 Javascript/AJAX 来完成提交表单,而无需实际按下提交。有各种 javascript 库可以帮助您比简单的 Javascript 更容易地完成此任务,即 jQuery ( http://jquery.com/ )。这不是一项非常复杂的任务,但您需要学习一些基本的 Javascript 以及如何使用 jQuery。事情的基本流程是当表单发生变化时,提交一个 AJAX 请求来提交表单。您将需要第二个脚本来接收传入的 AJAX 请求并进行保存。尝试一些基本的 jQuery 教程的搜索引擎,一旦你掌握了基本的知识,像“ajax submit on form change jquery”之类的东西会让你开始。

回答#2:

像这样的东西(请看我的笔记......)

echo '<select name="rating" id="rating">';
$q = mysql_query("SELECT `option_name` FROM `options`");
while($row = mysql_fetch_assoc($q)) { 
    echo '<option value="' . $row['option_name'] . '">' . $row['option_name'] . '</option>';
}
echo '</select>';

如果您希望选择预选,那也很容易!从最后一个例子来看:

$pre_selected = "Very Bad";
echo '<select name="rating" id="rating">';
$q = mysql_query("SELECT `option_name` FROM `options`");
while($row = mysql_fetch_assoc($q)) { 
    echo '<option value="' . $row['option_name'] . '"';
    if($row['option_name'] == $pre_selected) { 
      echo ' selected="selected"';
    }
    echo '>' . $row['option_name'] . '</option>';
}
echo '</select>';

但这是我想指出一些事情的部分:

  • 不要像您正在使用的那样使用旧的 mySQL 库,而我的示例正在使用。请使用 PDO,或者至少使用 mySQLi。您正在使用的函数已被弃用,并且可能在 PHP 中不再可用。
  • 请正确转义您的数据。搜索“SQL Injection”,您会发现大量关于您的代码如何非常不安全(特别是您的 UPDATE)的信息,因为您没有转义这些值。
  • 提醒一下,当/如果你使用 jQuery,id="foo"除了name="foo".
于 2012-12-06T22:42:44.933 回答