2017-04-21 44 views
0

我遇到问题从前端表单获取值并在更新查询中使用它。前端表格中的哪个是工作的罚款选择框...PHP - 无法从前端表单获取价值

echo "<select>"; 
while ($row = $result->fetch_assoc()) { 
     echo "<option name='plot' value=\"PlotNumber\">" . 
$row['PlotNumber'] . "</option>"; 
} 
echo "</select>"; 

这里是AJAX调用:

$('.update').click(function() { 
    $.ajax({ 
     type: "POST", 
     url: '../php/update.php', 
     success:function(html){ 
      document.getElementById("result").innerHTML=html; 
     } 
    }); 
    return false; 
}); 

这里是PHP:

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $plot = $_POST['plot']; 
    $sql = "UPDATE Developments SET Price = 'BOOKED' WHERE PlotNumber='".$plot."'"; 
    $stmt = $conn->prepare($sql); 
    $stmt->execute(); 
    echo " records UPDATED successfully"; 
} 
catch(PDOException $e) 
{ 
    echo $sql . "<br>" . $e->getMessage(); 
} 

我真的难倒到哪里去错了......任何人都可以发现一个错误?

+0

您的选择需要命名阴谋,而不是您的选择。 – Webbanditten

+0

这里你使用.update类在ajax中定义? – Hacker

回答

0

你的错误是选择它没有name属性

echo "<select>"; 
while ($row = $result->fetch_assoc()) { 
     echo "<option name='plot' value=\"PlotNumber\">" . 
$row['PlotNumber'] . "</option>"; 
} 
echo "</select>"; 

上面应该是这样的:

<?php 

echo "<select name=\"plot\">"; 
while ($row = $result->fetch_assoc()) { 
     echo "<option value=\"PlotNumber\">" . 
$row['PlotNumber'] . "</option>"; 
} 
echo "</select>"; 

?> 

然后解决您的ajax发送数据到你的php脚本

$('.update').click(function() { 
    var FormData = $('#formID').serialize(); 
$.ajax({ 
     type: "POST", 
     url: '../php/update.php', 
     data : FormData, 
     success:function(html){ 
      document.getElementById("result").innerHTML=html; 
     } 
    }); 
    return false; 
    }); 

那么之后你需要使用准备好的语句的正确方法

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$plot = $_POST['plot']; 
$sql = "UPDATE Developments SET Price = 'BOOKED' WHERE PlotNumber='".$plot."'"; 
$stmt = $conn->prepare($sql); 
$stmt->execute(); 
echo " records UPDATED successfully"; 
} 
catch(PDOException $e) 
{ 
echo $sql . "<br>" . $e->getMessage(); 
} 

上面应该是这样的:

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$plot = $_POST['plot']; 
$sql = "UPDATE Developments SET Price = 'BOOKED' WHERE PlotNumber= ? "; 
$stmt = $conn->prepare($sql); 
$stmt->execute([$plot]); 
echo " records UPDATED successfully"; 
} 
catch(PDOException $e) 
{ 
echo $sql . "<br>" . $e->getMessage(); 
} 
?> 
+0

很抱歉,这不会回发到服务器。我没有得到任何错误或成功消息 – spbrad

+0

用最新的代码更新您的问题,所以我可以更新我的答案 –

+0

我复制并粘贴上面的确切代码 – spbrad

0

首先,你必须在HTML给名称选择标签:

echo "<select name='plot'>"; 
while ($row = $result->fetch_assoc()) { 
     echo "<option value='".$row['PlotNumber']."'>" . 
$row['PlotNumber'] . "</option>"; 
} 
echo "</select>"; 

你有一个像this.you不发送任何数据到后端更新您的jQuery。

$('.update').click(function() { 
$.ajax({ 
     type: "POST", 
     data:{plot:'$('[name=plot]')'}, 
     url: '../php/update.php', 
     success:function(html){ 
      document.getElementById("result").innerHTML=html; 
     } 
    }); 
    return false; 
    });