根据选择条目自动填充文本框

时间:2016-09-22 16:22:23

标签: javascript php

php中是否有办法自动从数据库中获取值?

基本上,如果我有一个选择框&我选择选项“Laptop-01”,PHP中有没有办法检查该行的数据库,然后自动获取Laptop-01的序列号,并在文本框中填入设备序列号。

目前我只有两个文本框,用户需要手动输入产品编号(Laptop-01)和&然后是序列号。

我目前有以下代码;

PHP

<?php

$selectquery = "SELECT * FROM `loanproducts`";
$selectresult = mysqli_query($connection, $selectquery);

$selectusersquery = "SELECT * FROM `loanusers`";
$selectusersresult = mysqli_query($connection, $selectusersquery);

if (isset($_POST['editloan'])): 

$loanid = $_POST["loanid"];
$username = $_POST["username"];
$product=$_POST["product"];
$product_desc=$_POST["product_desc"];
$serial=$_POST["serial"];
$date_collected=$_POST["date_collected"];
$date_return = $_POST["date_return"];
$returned = $_POST["returned"];



    $edit_query="UPDATE loans SET 
                username = '$username',
                product = '$product',
                product_desc = '$product_desc',
                serial = '$serial',
                date_collected ='$date_collected',
                date_return = '$date_return',
                returned = '$returned'
                WHERE loanid ='$loanid'"; 
    $edit_result= mysqli_query($connection, $edit_query);

    if ($edit_result) :
            header ('location: editloan.php?confirm=Loan successfully updated');
        else :
            echo "<b>This didn`t work, error: </b>";
            echo mysqli_error($connection);
    endif;

endif;


$loanid=$_GET['loanid']; 

$my_query="select * from loans where loanid=$loanid";
$result= mysqli_query($connection, $my_query);


while ($myrow = mysqli_fetch_array($result)):

    $username = $myrow["username"];
    $product = $myrow["product"];
    $product_desc = $myrow["product_desc"];
    $serial = $myrow["serial"];
    $date_collected=$myrow["date_collected"];
    $date_return=$myrow["date_return"];
    $returned=$myrow["returned"];


endwhile;



?>

HTML

<html>
<h2 align="center">Edit Product Form</h2>
<body>
<div id="loginp"<p align="center">Edit this loan for the Coleg Sir Gar Loan System</p></div>
<form method="POST" action="editloaninfo.php">

<div id="editp"><p align="center">
<label class="labelform">Username:</label><select name="username" style="width: 150px">
    <?php while($row1 = mysqli_fetch_array($selectusersresult))
  { if ( $row1[1] == $username )
         $selected = "selected";
    else $selected = "";
    echo "<option $selected>{$row1[1]}</option>";
  }?>
</select></p></div>

<div id="editp"><p align="center">
<label class="labelform">Product:</label><select name="product" style="width: 150px">
    <?php while($row1 = mysqli_fetch_array($selectresult))
  { if ( $row1[1] == $product )
         $selected = "selected";
    else $selected = "";
    echo "<option $selected>{$row1[1]}</option>";
  }?>
</select></p></div>


<div id="editp"><p align="center">
<label class="labelform">Product Description:</label><input  class="inputform" type="text" name="product_desc" placeholder="Product  Description..." autocomplete="off" required size="18" value="<?php echo  $product_desc; ?>"></p></div>


<div id="editp"><p align="center">
<label class="labelform">Serial Number:</label><input class="inputform" type="text" name="serial" placeholder="Serial Number..." autocomplete="off" required size="18" value="<?php echo $serial; ?>"></p></div>


<div id="editp"><p align="center">
<label class="labelform">Date Collected:</label><input class="inputform" type="date" name="date_collected" autocomplete="off" size="30" value="<?php echo $date_collected; ?>"></p></div>


<div id="editp"><p align="center">
<label class="labelform">Date Returned:</label><input class="inputform" type="date" name="date_return" autocomplete="off" size="30" value="<?php echo $date_return; ?>"></p></div>


<div id="editp"><p align="center">
<label class="labelform">Returned:</label><select name="returned" style="width: 150px">
    <option value="Yes" <?php echo $returned === 'Yes' ? 'selected="selected"' : '' ?>>Yes</option>
    <option value="No" <?php echo $returned === 'No' ? 'selected="selected"' : '' ?>>No</option>
</select></p></div>

<br>

<input type="hidden"  name=loanid value= "<?php echo $loanid; ?>" >

<div id="editp"><input class="inputform" type="submit" name="editloan" value="Save Changes">
<input class="inputform" type="button" name="Cancel" value="Cancel" onClick="window.location.href='editloan.php'"></div>
</form>
</body>
</html>
</div>

1 个答案:

答案 0 :(得分:0)

基本上你想做的是:

当用户选择“Laptop-01”时,您必须使用与用户笔记本电脑相关的信息(如序列号)更新所有INPUTS。这可以通过添加AJAX

请注意:此答案将为您提供有关如何从数据库填充数据的信息,然后您可以针对您需要的任何信息执行此操作。

 library("shiny")
library("highcharter")

data(citytemp)

ui <- fluidPage(
    h1("Highcharter EXAMPLE"),
    fluidRow(
        column(width = 8,
               highchartOutput("hcontainer",height = "500px")
        ),
        selectInput("option", label = "",  width = "100%",
                    choices = c("Tokyo", "NY"))
    )
)

server <- function(input, output) {
    data <- citytemp[,c("month","tokyo","new_york")]
    data = data[data$month%in%c("Dec","Jan","Feb","Mar"),]
    choose_Option <- reactive({
        sort_option <- input$option
        if(sort_option=="Tokyo"){
            data = data[order(data$tokyo),]
        }
        else{
            data = data[order(data$new_york),]
        }
        return(data)
    })
    output$hcontainer <- renderHighchart({
        data = choose_Option()
        data = data[1:3,] 


        chart <-  highchart() %>% 
            hc_chart(type = "bar") %>% 
            hc_title(text = "Monthly Average Temperature for main cities") %>% 
            hc_subtitle(text = "Source: WorldClimate.com") %>% 
            hc_xAxis(categories = data$month ,                    
                     labels=list(
                         formatter=JS("function () {
                             return 'Tokyo' + '<br>' +  this.categories  +'         '  + '<br>'+'NY' + '</br>';
                         }"))) %>% 
            hc_yAxis(title = list(text = "Temperature (C)")) 

        hc <- chart %>% hc_add_series(yAxis=0,name="Tokyo",data = data$tokyo,colorByPoint=TRUE )
        hc <- hc %>% hc_add_series(yAxis=0,name="NY",data = data$new_york,colorByPoint=TRUE )    



        return(hc)
    })
} 

shinyApp(ui = ui, server = server)

Ajax.js

<form>
<select id='product_name' onchange="get_data()">
<option value='Laptop-01'>Laptop-01</option>
</select>
<input name='serial_no' id='serial_no'> 
<input name='product_no' id='product_no'> 


</form>
<script src="js/ajax.js"></script>
<script>
function get_data(){

//In very short what this do is :
//get values 
var serial_no = document.getElementById('product_name').value;

//create an Object
    var ajax = ajaxObj("POST", "yourpage.php");
    ajax.onreadystatechange = function() {

        if(ajaxReturn(ajax) == true) {

                //ajax.responsetex is things you echo from script next to it
                var index1 = ajax.responseText.split(",");
                //index1 is array holding values 
                //index1[0]=$serial_no
                //index1[1]=$product_no
                //Now set value of your serian_no INPUT to $serial_no = index1[0];
                document.getElementById('serial_no').value = index1[0];
document.getElementById('product_no').value = index1[1]

        }
    }
//ajax.send = POST/GET method 
    ajax.send("product_name="+product_name);
}
 </script>
<?php 
if(isset($_POST['product_name'])){

$sql = "SELECT serial_no,product_no FROM loanuser WHERE username='$username'";
$query = ($connection , $query);

while ($myrow = mysqli_fetch_array($query)){
$serial_no = $myrow["serial_no"];
$product_no = $myrow["product_no"];
}
//form a (,) separated list and echo it. 
echo $serial_no.",".$product_no;

exit();
}
?>

如果您希望我在此页面中添加更多关于AJAX的说明,请在评论部分添加请求我会将其编辑为更好的答案