Как вставить значение <option>в базу данных - PullRequest
0 голосов
/ 20 января 2020

Я просто хочу вставить значение или название 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>

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Что не так с вашим кодом?

в вашем окне выбора не будет никакой возможности выбора, как я вижу в коде

(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 '','','')

, вызывая вставку новой записи с идентификатором (в случае, если идентификатор имеет автоинкремент и эти значения могут быть обнуляемыми)

Что делать?

(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>";
     ?>

( б) внутри вашего кода для вставки данных, вы должны поставить некоторые серверные си проверка de (также front-end) перед вставкой в ​​таблицу данных (вы можете выполнить поиск в Google), это предотвратит вставку любой пустой записи. надеюсь, это поможет вам.

0 голосов
/ 20 января 2020

Вы установили значение параметра Inside в значении параметра и вставьте это значение параметра в базу данных.

<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;
    }


}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...