【问题标题】:PHP save dropdown value to mysqlPHP将下拉值保存到mysql
【发布时间】:2013-04-23 05:33:42
【问题描述】:

首先让我说,我是新手,我的代码对于那些知道自己在做什么的人来说可能是可笑的......

我正在尝试从我的 mysql 数据库中检索数据并在匹配的下拉列表中显示信息。我让这部分使用一些丑陋的基本代码。

$url = $_SERVER["REQUEST_URI"];
$url_path = parse_url($url, PHP_URL_PATH);
$devid = pathinfo($url_path, PATHINFO_BASENAME);

$con = mysqli_connect("localhost","xxxxxx","xxxxxx","xxxxxxxx");
  //Run a query
  $result = mysqli_query($con,"SELECT type FROM `xxxxx`.`xxxxxx` WHERE device_id='$devid'");


$pulldown1 = '<select name="extension_type">';

while($row = mysqli_fetch_array($result))
{
if($row['type'] == "Unlimited")
{
$pulldown1 .= "<option selected value=\"Unlimited\">Unlimited Extension</option>
<option value=\"Metered\">Metered Extension</option>
<option value=\"Virtual\">Virtual Extension</option>
\n";
}
if($row['type'] == "Metered"){
$pulldown1 .= "<option selected value=\"Metered\">Metered Extension</option>
<option value=\"Unlimited\">Unlimited Extension</option>
<option value=\"Virtual\">Virtual Extension</option>
\n";
}
if($row['type'] == "Virtual"){
$pulldown1 .= "<option selected value=\"Virtual\">Virtual Extension</option>
<option value=\"Unlimited\">Unlimited Extension</option>
<option value=\"Metered\">Metered Extension</option>
\n";
}

}
$pulldown1 .= '</select>';

echo $pulldown1;

mysqli_close($con);

现在我希望能够更改值并让它保存相应的值并更新数据库中的该列。这就是我卡住的地方。有人可以指导我正确的方向吗?

【问题讨论】:

  • 你想改变什么值?
  • 指定您想要更改的值,并且您可能还想保护您的 SQL 查询免受 SQL 注入。
  • 这是如何保存下拉列表stackoverflow.com/questions/16125893/…。要更新列表,您需要在表单中进行填充。
  • 将下拉列表从当前选择的选项更改为不同的选项并更新数据库中的值。

标签: php html mysql forms


【解决方案1】:

You could use jQuery to send an AJAX post request when the select box has it's value changed.反过来,这可以更新您的 mysql 数据库条目。如果这是您想要的事情,请告诉我,我将通过代码示例进一步扩展我的答案。

JS代码示例

$("select").change(function () {
    // Send ajax request
    $.ajax
    ({
       type: "POST",
       url: "/change-value.php",
       dataType: 'json',
       data: { location: $(this).val() },
       cache: false,
       success: function(data)
       {
       }
    });

});

// PHP change-value.php 示例

<?php

// Get the changed value
$value = $_POST['value'];

// Code to update you mysql database entry would go here...

【讨论】:

  • 那会很有帮助,请详细说明。
  • 我还需要做更多的事情吗?
  • 如果您希望 $_POST['extype'] 可以从您的 change-value.php 中访问,您必须在您的 ajax 请求中发送它。因此,如果您有 data { location: $(this).val() },您需要添加适用的代码来获取 extype 的值。例如。数据{位置:$(this).val(),extype:$('#extype').val()}
  • 您能否选择提供给您的这些答案是否正确:)
【解决方案2】:

根据 php.net 上的 PHP 文档修改:

<?php
if ( !empty($_POST['extension_type']) )
{
   // Your MySQL connection code should be at the top of the script.
   $query = "UPDATE `xxxxx` SET `extension_type` = ? WHERE `[your_id_field_here]` = ?";
   /* Prepared statement, stage 1: prepare */
   if ( !($stmt = $mysqli->prepare($query) ) {
       echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
   }
   /* Prepared statement, stage 2: bind and execute */
   if ( !$stmt->bind_param("s", $_POST['extension_type']) || !$stmt->bind_param("i", intval($id)) ) {
       echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
   }
   if ( !$stmt->execute() ) {
       echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
   }
}
?>

正如@Simon Carlson 所说,您还需要考虑 SQL 注入。如果您有一组扩展类型列表,您可以通过检查 $_POST 值与已知的有效值来改进上面的代码。

【讨论】:

  • 我试过这个确切的方法,我得到“Unexpected T_VARIABLE on "$query = "UPDATE xxxxx SET extension_type = ? WHERE ID = ?";" "
  • 对,你必须填写你的 MySQL 连接、表等信息。你不能只是复制粘贴就期望它起作用。这只是一个示例,向您展示如何做。如果您给我们更多细节,我可以更具体。
  • 我已经指定了连接、表格、信息等,见上文。只要我在“mysqli_close($con);”之前这样做它应该继承我在执行 mysqli_query($con,$query) 时已经定义的内容,对吧?
猜你喜欢
  • 2015-06-18
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 2013-07-15
相关资源
最近更新 更多