簡體   English   中英

onChange JavaScript到SQL查詢

[英]onChange JavaScript to a sql query

所以我知道有100%的方法可以做到這一點,但我認為我做的不正確。 這幾乎就是我編寫此代碼的目標。

我希望用戶能夠以30分鍾(最多5小時)的間隔選擇時間。 (然后是10個選項)。每隔30分鍾向變量添加一個.5,則調用D。

變量I,E和T依賴於變量D。

我目前有一個下拉列表,其中包含有關更改的JavaScript。 但是之后,我需要使用變量D,I,E和T更新MYSQL服務器中的記錄。

這是我到目前為止的代碼:

<form name="Tame" method="POST">
  <select id="VariableD" onchange="myFunction()">
    <option value=".5">30 mins
    <option value="1">1 hour
    <option value="1.5">1 hour 30 mins
    <option value="2">2 hours
    <option value="2.5">2 hour 30 mins
    <option value="3">3 hour
    <option value="3.5">3 hours 30 mins
    <option value="4">4 hours
    <option value="4.5">4 hours 30 mins
    <option value="5">5 hour     
  </select>
  <input type="hidden" name="VariableI" value="2">
  <input type="hidden" name="VariableT" value="4">
  <input type="hidden" name="VariableE" value="10">
  <input type="submit" name="TameSub" value="Tame">
</form>

然后我有我的JavaScript:

<script>
  function myFunction() {
    var x = document.getElementById("VariableD").value;
    var TameEnergy = x * 10;
    var TameIntell = x * 2;
    var TameGain =   x * 4;

    var En = document.getElementById("VariableE");
    var Intell = document.getElementById("VariableI");
    var Tame = document.getElementById("VariableE");

    En.value = TameEnergy;
    Intell.value = TameIntell;
    Tame.value = TameGain;
  }
</script>

在有了腳本來確定所有變量之后,我就有了這個供PHP更新記錄:

<?php
  $SubTame = $_POST['TameSub'];
  $I = $_POST['VariableI'];
  $E = $_POST['VariableE'];
  $T = $_POST['VariableT'];

  if($SubTame) {
    $sql = "UPDATE Horse SET Energy='$E', IntelligenceP='$I', Taming='$T' WHERE id='$colname_HorseInfo'";
    if ($con->query($sql) === TRUE) {
    ?>
      <script>location.reload();</script>
      <?php
    } else {}
  }
?>

當我以這種方式進行操作時,我會進行記錄更新,但它只會按照表單中的默認值進行更新,這意味着更新時不會識別JavaScript中的任何更改。 如果有人可以向我解釋在這種情況下我將如何做,那么我願意使用AJAX進行此操作。

無需添加js代碼,而是直接在php中進行操作。

在html中出現任何錯誤之前:

<select I'd="VariableD" onchange="myFunction()">
should be
<select id="VariableD" name="VariableD" onchange="myFunction()">

現在在php中,這將不需要js代碼

$val=$_POST['VariableD']; //see reference below for exact code
$I=$val*10;
//set other variables
//execute query

如果像這樣更改php,則在html中也不需要onchange()。

有關如何在php中選擇下拉列表值的正確參考, 需要在php / html中將variable =設置為下拉列表選擇

Onchange,您需要通過js提交表單

<form id="abc" name="Tame" method="POST">
.............
 </form>

<script>
        function myFunction() 
        {

.................
            document.getElementById("abc").submit();


        }
        </script>

您的<select>沒有名稱。 但是我將大大簡化此過程,並將邏輯移入php。 一旦有人選擇了內容,onchange =“ submit()”將立即處理該表單,這時您立即將所有數據保存在$_POST因此可以跳過js函數。

考慮以下:

<?php
if( isset( $_POST ) ) {

    $varD = $_POST["VariableD"];

    $TameEnergy = $varD * 10;
    $TameIntell = $varD * 2;
    $TameGain =   $varD * 4;

    $varE = $_POST["VariableE"];
    $Intell =  $_POST["VariableI"];
    $Tame =  $_POST["VariableE"];

    //do something else
}
?>

<h3>Make a selection: </h3>
<form name="Tame" method="POST">
        <select name="VariableD" onchange="submit()">
          <option value=".5">30 mins
          <option value="1">1 hour
          <option value="1.5">1 hour 30 mins
          <option value="2">2 hours
          <option value="2.5">2 hour 30 mins
          <option value="3">3 hour
          <option value="3.5">3 hours 30 mins
          <option value="4">4 hours
          <option value="4.5">4 hours 30 mins
          <option value="5">5 hour     
        </select>
        <input type="hidden" name="VariableI" value="2">
        <input type="hidden" name="VariableT" value="4">
        <input type="hidden" name="VariableE" value="10">
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM