[英]populating text boxes using a drop down menu with database information
hello people I am currently pulling my hair out trying to figure out how to populate text boxes with the information in a database after the user has selected "date" for example from a dropdown menu.大家好,我目前正在尝试弄清楚如何在用户从下拉菜单中选择“日期”后使用数据库中的信息填充文本框。
My dropdown menu is currently being populated by the departure_date of a tour and I would like all of the other information connected to that date to be displayed into the text boxes on the page.我的下拉菜单当前由游览的离开日期填充,我希望与该日期相关的所有其他信息都显示在页面上的文本框中。
This is for a project I am working on and our current server does not support pdo unfortunately.这是针对我正在处理的项目,不幸的是,我们当前的服务器不支持 pdo。
This is making my head spin and I cannot think about how I am supposed to accomplish this.这让我头晕目眩,我无法思考我应该如何实现这一目标。 Searching on the internet did not give me any useful information.在互联网上搜索并没有给我任何有用的信息。
Here is my html code for the select box and text boxes.这是我的选择框和文本框的 html 代码。
<div>
<label><strong>Search Tours</strong></label>
<form>
<p>
<select name="lst_tour">
<option value="">Select a Tour:</option>
<?php
foreach ( $results as $option ) : ?>
<option value="<?php
echo $option->departure_date; ?>"><?php echo $option->departure_date; ?> </option>
<?php endforeach; ?>
</select>
</p>
<p><strong>List of Tour Details</strong></p>
<input name="txt_tourname" type="text" id="txt_tourname" readonly="readonly" value = <?php echo $ltour_name ?> />
</label></td>
<input name="txt_departuredate" type="text" id="txt_departuredate" readonly="readonly" />
</label>
<input name="txt_tourdetails" type="text" id="txt_tourdetails" readonly="readonly" />
</label>
and here is my php connection code这是我的 php 连接代码
<?php
session_start();
$server = "server";
$schema = "schema";
$uid = "name";
$pwd = "pass";
$tour_name =$_POST["txt_tourname"];
$departure_date =$_POST["txt_departuredate"];
$tour_details =$_POST["txt_tourdetails"];
$no_of_volunteers =$_POST["txt_noofvolunteers"];
mysql_connect($server , $uid , $pwd) or die ("server not found");
mysql_select_db($schema) or die ("Database not found");
$sql = "SELECT * FROM tour";
$query = mysql_query($sql);
while ( $results[] = mysql_fetch_object ( $query ) );
array_pop ( $results );
?>
Any help would be great.任何帮助都会很棒。
Ok, this question is asked and answered a lot and most of those who ask have a concept problem.好吧,这个问题被问过和回答过很多,大多数问的人都有一个概念问题。 I'll explain this in parts, and afterwards I'll post a clean rewrite of your code, including a javascript file for you to dive in and learn我将分部分解释这一点,然后我将发布对您的代码的干净重写,包括一个 javascript 文件供您深入学习
Ok, don't take that at face value, do some research on it and and you'll find out the potential.好吧,不要只看表面价值,对它做一些研究,你就会发现它的潜力。 In the meantime I'll create a mockup of what it looks like you want and I'll be back with it as soon as I can.与此同时,我会创建一个你想要的样子的模型,我会尽快回来。 Be on the lookout for other answers, there is a lot of knowledgeable people around ^^寻找其他答案,周围有很多知识渊博的人^^
<form method="somemethod" action="somescript.php">
<select name="lst_tour" id="lst_tour">
<option value="">Select a Tour:</option>
<?php foreach ( $results as $option ) {
?><option value="<?php echo $option->departure_date; ?>"><?php echo $option->departure_date; ?></option><?php
} ?></select>
<!-- these will be "magically" populated, they conveniently have ids ^^ -->
<input name="txt_tourname" type="text" id="txt_tourname" readonly="readonly" />
<input name="txt_departuredate" type="text" id="txt_departuredate" readonly="readonly" />
<input name="txt_tourdetails" type="text" id="txt_tourdetails" readonly="readonly" />
</form>
lot's of edits and rewrites.大量的编辑和重写。 This is a noisy script with lots of alerts
so please be patient and sequentially start removing alerts as you no longer need them.这是一个包含大量alerts
的嘈杂脚本,因此请耐心等待,并在您不再需要时按顺序开始删除警报。 Attention: the select tag has an id that I use to find it and attach the event handler注意: select 标签有一个 id ,我用它来查找并附加事件处理程序
(function(){
var
// the php script that's taking care of business
url = 'http://path/to/handling/ajaxscript.php',
select,
// assume these are the ids of the fields to populate
// AND assume they are the keys of the array thats comming from the server
inputs = ['txt_tourname','txt_departuredate','txt_tourdetails'],
// the XMLHttpRequest, I'm not recycling it but, oh well
xhr,
// the onReadyStateChange handler function, it needs access to xhr
xhrRSC,
// event handler, called for <select>."onChange"
onChooseDate,
// response handler that will be executed once the xhrRSC deems it ready
populateData,
// convenient event handlers
onLoad, onUnload;
xhrRSC = function () {
if (xhr && xhr.readyState !== 4) {return;}
alert('the server response has completed. Now continue with the population');
populateData(JSON.parse(xhr.responseText));
xhr = null;
};
onChooseDate = function () {
var date = select.options[select.selectedIndex].value;
alert('I have been changed. Did I select the right date: '+date
+'. Now we send some info to the server');
// AJAX: make xhr
xhr = new XMLHttpRequest();
// AJAX: setup handler
xhr.onreadystatechange = xhrRSC;
// AJAX: open channel
xhr.open('get',url+'?ajax=1&date='+date,true);
// AJAX: send data (if method post)
xhr.send(null);
// if we had jQuery, we could condense all this into one line
// $.post(url,{ajax:1,date:date},populateData,'json');
};
populateData = function (json) {
// we have the content from the server. Now json decode it
alert('json data => '+json.toSource());
// foreach input id execute function
inputs.forEach(function(v){
// set the value of each input to the data sent by the server
alert('setting input "'+v+'" to "'+json[v]+'"');
document.getElementById(v).value = json[v];
});
};
onLoad = function () {
alert('page has loaded');
// assume the <select> tag has an id of "lst_tour", just as it's name
select = document.getElementById('lst_tour');
// the "change" event is fired when the user changes the selected <option>
select.addEventListener('change',onChooseDate,false);
};
onUnload = function () {
select.removeEventListener('change',onChooseDate,false);
select = null;
};
window.addEventListener('load',onLoad,false);
window.addEventListener('unload',onUnload,false);
}());
<?php
// this file has $_GET populated with 'ajax' => '1' and 'date' => 'what the user chose'
if (!isset($_GET['ajax'])) die('this is not how its supposed to work');
// we must protect the output
ob_start();
// your initializers
// your logic: it should make the selection, then populate the array to be JSON encoded
$response = array(
'txt_tourname' => $txt_tourname,
'txt_departuredate' => $txt_departuredate,
'txt_tourdetails' => $txt_tourdetails
);
// you may want to log this for debugging
// server output has been protected
ob_end_clean();
header('Content-Type: text/json');
echo json_encode($response);
// the client has what he wanted
exit;
There it is, it's not tested and it's a handfull but with careful review you will learn a LOT.就是这样,它没有经过测试,只是一小部分,但是通过仔细审查,您会学到很多东西。 Also read Crockford and take into consideration the benefits of using jQuery, that javascript could have been much less complicated, and more efficient with jQuery另请阅读Crockford并考虑使用 jQuery 的好处,使用 jQuery 时 javascript 本来可以简单得多,并且效率更高
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.