2013-04-22 72 views
0

首先,让我说,我是新来这和我的代码可能是可笑你们谁知道你在做什么?PHP保存下拉值到mysql

我试图找回来自我的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); 

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

+0

你想改变什么的价值? – auicsc 2013-04-22 20:09:13

+0

指定想要更改的值,并且您可能想要考虑保护SQL注入的SQL查询。 – 2013-04-22 20:11:03

+0

这是如何保存dropdownlist http://stackoverflow.com/questions/16125893/php-mysql-radio-buttons-selection/16126009#16126009。要更新列表,您需要填写表单。 – 2013-04-22 20:11:14

回答

3

当选择框更改值时,可以使用jQuery发送AJAX发布请求。反过来这可能会更新您的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变化value.php示例

<?php 

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

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

这将有所帮助,请详细说明。 – Arringar 2013-04-22 20:16:47

+0

我需要继续努力吗? – JasonMortonNZ 2013-04-22 20:38:37

+0

如果你希望$ _POST ['extype']可以在你的change-value.php中访问,你必须通过你的ajax请求发送它。因此,您有数据的位置{location:$(this).val()},您需要添加适用的代码以获取extype的值。例如。数据{location:$(this).val(),extype:$('#extype')。val()} – JasonMortonNZ 2013-04-22 20:41:35

0

从PHP文档修改于php.net:

<?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值与已知的有效值来改进上述代码。

+0

我试过这个确切方法,我得到“意外的T_VARIABLE上”$查询=“更新'xxxxx'设置'extension_type' =?WHERE ID =?”;“” – Arringar 2013-04-22 20:45:10

+0

正确,你必须填写你的信息的MySQL连接,表等。你不能复制和粘贴,并期望它的工作。这只是一个例子,向您展示如何做到这一点。如果你给我们更多的细节,我可以更具体。 – Revent 2013-04-22 21:26:30

+0

我已经指定了连接,表格,信息等,见上文。只要我在“mysqli_close($ con);”之前执行此操作它应该继承我在执行mysqli_query($ con,$ query)时已经定义的内容,对吧? – Arringar 2013-04-22 21:36:27