【问题标题】:How to insert the value of <option> to the database如何将 <option> 的值插入数据库
【发布时间】:2020-01-20 20:32:21
【问题描述】:

我只想将 PROVINCE、CITY 和 BARANGAY 的值或名称插入数据库。我是 PHP 新手,对此我有点困惑。

PHP

    <?php
    session_start();
    $link=mysqli_connect("localhost","root","");
mysqli_select_db($link,"mknr2");


    if(isset($_POST['submit'])){
    $province = $_POST['province'];
    $city = $_POST['city'];
    $barangay = $_POST['barangay'];




    $sql = "INSERT INTO users(PROVINCE, CITY, BARANGAY) VALUES ('$province','$city','$barangay')";
    if($link->query($sql) === TRUE){
        echo "Sent!";
    }
    else{
        echo "Error:" . $sql . "<br>" . $link->error;
    }


}
?>

HTML

<h2 style="font-size:20px;font-weight:bolder;font-family:arial;margin-left:2%;">Address</h2>
<!--  PROVINCE -->
    <select id="provincedd" name="province" onchange="change_province()" class="province">
        <option>Select</option>
        <?php
            $res=mysqli_query($link,"select * from province");
                while($row=mysqli_fetch_array($res)) {
            ?>
            <option value="<?php echo $row["id"]; ?>"><?php echo $row["name"]; ?></option>
            <?php } ?>
    </select>   
<!--  PROVINCE -->



    <select id="city" name="city" class="city">
            <option>Select</option>     
    </select>

    <select id="barangay" name="barangay" class="barangay">
            <option>Select</option>
    </select>

AJAX.php

<?php
$link=mysqli_connect("localhost","root","");
mysqli_select_db($link,"mknr2");

if(isset($_GET["province"]))
{
$province=$_GET["province"];

        $res=mysqli_query($link,"select * from city where province_id=$province");
        echo "<select id='citydd' onchange='change_city()'>";
        echo "<option>"; echo "Select"; echo "</option>";
        while($row=mysqli_fetch_array($res))
        {
        echo "<option value='$row[id]' selected >"; echo $row["name"]; echo "</option>";
        }
        echo "</select>";
}


if(isset($_GET["city"]))
{
    $city=$_GET["city"];

        $res=mysqli_query($link,"select * from barangay where city_id=$city");
        echo "<select>";
        echo "<option>"; echo "Select"; echo "</option>";

        while($row=mysqli_fetch_array($res))
        {
        echo "<option value='$row[id]' selected>"; echo $row["name"]; echo "</option>";
        }
        echo "</select>";
}



?>

JAVASCRIPT

<script type="text/javascript">
function change_province()
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","ajax.php?province="+document.getElementById("provincedd").value,false);
xmlhttp.send(null);
city.style.display = "block";
document.getElementById("city").innerHTML=xmlhttp.responseText;

 if(document.getElementById("provincedd").value=="Select")
 {
 document.getElementById("barangay").innerHTML="<select><option>Select</option></select>";
 }


}

function change_city()
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","ajax.php?city="+document.getElementById("citydd").value,false);
xmlhttp.send(null);
document.getElementById("barangay").innerHTML=xmlhttp.responseText;

}
</script>

【问题讨论】:

  • 您遇到了什么问题?
  • 只有数据库中的 id 插入到我的表中。我想插入省、市和 barangay 本身的名称。
  • 我明白你的意思,你想插入带有名称的 id,因为你需要在收到发布的值后编写一个带有 where 条件的选择查询。例如:$city_id = $_POST["city"]; $query = "SELECT * FROM city WHERE id = $city_id"; $data = mysqli_query($link,$query); $city_name = $data->fetch_object()->city_name 现在城市名称在变量中,所以在插入查询中使用该变量.....像这样你需要写
  • 该代码用于表单中的回调“选项”,您只需向表单添加新页面并使用简单查询更新/插入..
  • 您是否使用 $_POST 获取值?

标签: javascript php html ajax


【解决方案1】:

您已将内部设置值设置为选项值并将此选项值插入数据库。

<select name="id" required="" onchange="change_province()" class="province">
        <option value="">SELECT CITY</option>
        <?php
            $res=mysqli_query($link,"select * from province");
                while($row=mysqli_fetch_array($res)) {
            ?>
<option value="<?php echo $row["id"]; ?>"><?php echo $row["name"]; ?></option>

            <?php } ?>
    </select> 

数据插入

<?php
    session_start();
    $link=mysqli_connect("localhost","root","");
mysqli_select_db($link,"mknr2");


    if(isset($_POST['submit'])){
    $province = $_POST['province'];
    $city = $_POST['city'];
    $id= $_POST['id'];




    $sql = "INSERT INTO users(PROVINCE, CITY, BARANGAY) VALUES ('$province','$city','$id')";
    if($link->query($sql) === TRUE){
        echo "Sent!";
    }
    else{
        echo "Error:" . $sql . "<br>" . $link->error;
    }


}
?>

【讨论】:

  • ID 应该是自动递增的。你的答案不起作用。
  • 是的,它不起作用...@Dilek 如果我将其设置为自动增量,它起作用了吗?
  • @AlbertCervantes 这是你的答案stackoverflow.com/a/59782595/12232340 不要忘记投票 :)
  • 谢谢,但我什至不明白.. 我想要我的问题的实际答案 huhu。
  • 如何在 PHP 中做到这一点?我的意思是使用什么代码或语句,以便 php 将省份名称插入用户表中。
【解决方案2】:

您的代码有什么问题?

您的选择框将没有任何选项可供选择 正如我在代码中看到的那样

(a)你没有给它赋值。

 <select id="city" name="city" class="city">
        <option>Select</option>     
 </select>

<select id="barangay" name="barangay" class="barangay">
        <option>Select</option>
</select>

(b)你的 javascript 调用 ajax.php 渲染带有选项的选择框将永远不会作为 change_province 执行,change_city 函数不会在任何事件上执行 在这种情况下,如果您的表单将在不选择省份的情况下提交,那么在服务器端您的帖子数组将如下所示

["submit"=>"value of submit","province"=>"","city"=>"","barangay"=>""] 

现在,如果您查看代码以插入值,则插入数据的查询将如下所示

INSERT INTO users(PROVINCE, CITY, BARANGAY) VALUES '','','')

导致插入带有 id 的新记录(如果 id 是自动递增的并且这些值可以为空)

你应该怎么做?

(a)您应该在表单视图中一次渲染它们,而不是进行 ajax 调用来填充选择框

formview.php

      <h2 style="font-size:20px;font-weight:bolder;font-family:arial;margin-left:2%;">Address</h2>
      <!--  PROVINCE -->
      <select id="provincedd" name="province" onchange="change_province()" class="province">
          <option>Select</option>
           <?php
              $res=mysqli_query($link,"select * from province");
              while($row=mysqli_fetch_array($res)) {
           ?>
            <option value="<?php echo $row["id"]; ?>"><?php echo $row["name"];?></option>
          <?php } ?>
       </select>   
      <!--  PROVINCE -->
      <?php
          $res=mysqli_query($link,"select * from city");
            echo "<select id='citydd' onchange='change_city()'>";
            echo "<option>"; echo "Select"; echo "</option>";
            while($row=mysqli_fetch_array($res))
              {
               echo "<option value='$row[id]' selected >"; echo $row["name"]; echo "</option>";
              }
              echo "</select>";

          $res=mysqli_query($link,"select * from barangay");
          echo "<select>";
          echo "<option>"; echo "Select"; echo "</option>";
          while($row=mysqli_fetch_array($res))
               {
                echo "<option value='$row[id]' selected>"; echo $row["name"]; echo "</option>";
               }
          echo "</select>";
     ?>

(b)在你的代码中插入数据,你应该在插入数据表之前进行一些服务器端(也是前端)验证(你可以在谷歌搜索它),这将防止插入任何空条目. 希望这会对你有所帮助。

【讨论】:

  • 成功了!但是城市中的所有数据都显示在下拉列表中...我只想显示城市/城市取决于您单击的省份。
  • @AlbertCervantes 在这种情况下,您应该在调用更改省份选择框时调用 change_city 函数来更新城市选择框
猜你喜欢
  • 2021-05-05
  • 1970-01-01
  • 2018-10-17
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
相关资源
最近更新 更多