使用php和html,我有一个表单,用于将属性数据输入到sql数据库中,每个属性都有一个名为“ property_id”的主键,只要通过该表单添加新属性,该主键就会自动为它们生成。我创建了另一种表单,以便代替插入新的属性数据,而是更新现有的属性数据,以下代码就是该表单。

<fieldset>
        Select Property:<br>
        <select required name="id">
        <option value"">Select a property</option>
            <?php
            //Database connection
            (It's there but I've removed it for this question)
            // Create connection
            $conn = new mysqli($servername, $username, $password, $dbname);
            // Check connection
            if ($conn->connect_error) {
                die("Connection failed: " . $conn->connect_error);
            }

            $result = $conn->query("select * FROM property");

            while ($row = $result->fetch_assoc()) {
                unset($id, $unit, $street, $suburb);
                $id = $row['id'];
                $unit = $row['unit'];
                $street = $row['street'];
                $suburb = $row['suburb'];
                echo "<option value='$id'>$unit $street $suburb</option>";
            }
            echo "</select>"; ?>
        <br />
        Unit:<br>
        <input type="number" name="unit" required value="<?php echo $unit;?>">
        <br />
        Street:<br>
        <input type="text" name="street" required value="<?php echo $street;?>">
        <br />
        Suburb:<br>
        <input type="text" name="suburb" required value="<?php echo $suburb;?>">
        <br />
        Postcode:<br>
        <input type="number" name="postcode" required value="<?php echo $postcode;?>">
        <br />
        State:<br>
        <select required name="state">
        <option value="">Please Select</option>
        <option value="ACT">ACT</option>
        <option value="NSW">NSW</option>
        <option value="NT">NT</option>
        <option value="QLD">QLD</option>
        <option value="SA">SA</option>
        <option value="TAS">TAS</option>
        <option value="VIC">VIC</option>
        <option value="WA">WA</option>
        </select>
        <br />
        Employee ID:<br>
        <input type="number" name="employee" required value="<?php echo $employee;?>">
        <br />
        Owner ID:<br>
        <select required name="property">
        <option value"">Select an owner</option>
            <?php
            //Database connection
            (It's there but I've removed it for this question)
            // Create connection
            $conn = new mysqli($servername, $username, $password, $dbname);
            // Check connection
            if ($conn->connect_error) {
                die("Connection failed: " . $conn->connect_error);
            }

            $result = $conn->query("select owner_id, first_name, last_name FROM property_owner");

            while ($row = $result->fetch_assoc()) {
                unset($id, $unit, $street, $suburb);
                $id = $row['owner_id'];
                $fName = $row['first_name'];
                $lName = $row['last_name'];
                echo "<option value='$id'>$fName $lName</option>";
            }
            echo "</select>"; ?>
        <br />
        Type of Property:<br>
        <input type="radio" name="type" value="Apartment" required checked>Apartment<br />
        <input type="radio" name="type" value="Town House">Town House<br />
        <input type="radio" name="type" value="House">House<br />
        <br />
        Rent:<br>
        <input type="number" name="rent" value="<?php echo $rent;?>"><br />
        Bedroom:<br>
        <input type="number" name="bedroom" value="<?php echo $bedroom;?>"><br />
        Bathroom:<br>
        <input type="number" name="bathroom" value="<?php echo $bathroom;?>"><br />
        Furnished:<br>
        <input name="furnished" type="radio" value="1" checked>Yes<br>
        <input name="furnished" type="radio" value="0" checked>No<br>
        Property Description:<br>
        <textarea name="description" cols="50" rows="15"></textarea>
        <br />
        <p></p>
        <input type="submit" name="SUBMIT" value="Submit">


我一直在关注W3学校的教程,并从其他stackflow问题中学习一些细节。我想知道的是,使用顶部的下拉菜单(选择属性,然后通过其ID动态列出属性),如何根据sql数据库中的现有值填充不同的表单字段?

最佳答案

如果我理解正确,那么每次选择选择选项正确时,您都试图从数据库中获取值吗?这需要您发出服务器请求,因为您不能在客户端进行。

您将需要在选择框中添加一个事件处理程序,然后添加一个ajax调用来返回所需的值。

使用Jquery(更具可读性)
//将此添加到头部

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>


//包括并修改以下JavaScript:

<script type="text/javascript">
    $(document).ready(function(){
        $('select[name=id]').on('change', function(){
            var id = $(this).val();
            $.ajax(url: 'getDataFromSQL.php?id=' + id,
                success: function(data){
                    /*prepop the form from the data returned*/
                    /* e.g. if you are returning json */
                    /* $('input[name=id]').val(data.rent); */
                }
            );
        });
    });
</script>


或者,您可以在页面加载时从sql数据库输出所有变量。这样就不需要ajax调用,但是您的表单就不会尽可能实时。

您需要了解的内容:

您必须知道客户端和服务器端之间的区别
https://softwareengineering.stackexchange.com/questions/206254/difference-between-a-server-and-a-client

您可能要查找ajax
http://www.codeproject.com/Articles/14142/AJAX-Explained

您可能要探索事件侦听器:
https://api.jquery.com/category/events/

关于php - 根据选择字段中的值自动填充表单字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32803251/

10-11 22:21
查看更多