2017-04-21 45 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; 
    });