gpt4 book ai didi

php - 3 Drop Downs 链使用 ajax mysql

转载 作者:行者123 更新时间:2023-11-30 23:17:12 25 4
gpt4 key购买 nike

我有 3 页 Index.php findasset.php 和 findid.php。我有 2 个下拉菜单,最后一个值将回显到页面的另一部分。我正在使用 ajax 查询其他下拉菜单,它部分工作。

除 findid 页面上的 device_category_name='$cId' 外,其中大部分是动态的并且可以工作,应该用 $category 替换,但我想将代码显示为工作模型。我认为我的问题最初是在 findasset 页面上 $category= isset($_GET['category']);

当我尝试回显 findid 上的变量时,它回显的是“1”而不是单词

索引页面有一个从 mysql 数据库中提取的下拉列表,它工作得很好。我已经尽可能地标记了代码。 这是部分Working example .如果您选择 Category-Drawing 那么它可以工作的任何一个 Assets ,但这是因为在 findid 页面上查询是部分硬编码的,我不希望它被硬编码。

我知道,我已经很接近解决这个问题了,但我被困住了。你能帮帮我吗?

索引.php

function getXMLHTTP() { //function to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}

return xmlhttp;
}

function getcategory(category) {

var strURL="findasset.php?category="+category;
var req = getXMLHTTP();

if (req) {

req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('assetdiv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
function getid(category,asset) {
var strURL="findid.php?category="+category+"&asset="+asset;
var req = getXMLHTTP();

if (req) {

req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('iddiv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}

}
</script>
</head>
<body>
<form method="post" action="" name="form1">
<table width="60%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150">Category</td>
<td width="150"><select name="category" onChange="getcategory(this.value)">
<?
require "config.php";// connection to database

$query = "SELECT DISTINCT device_category_name FROM fgen_structures ORDER BY device_category_name ASC";
$result = mysql_query($query);

while ($myrow = mysql_fetch_array($result))
{




echo "<option value='$myrow[device_category_name]'>$myrow[device_category_name]</option>";
}

?>
</select></td>
</tr>
<tr style="">
<td>Asset</td>
<td ><div id="assetdiv"><select name="asset" >
<option>Select Category First</option>
</select></div></td>
</tr>
<tr style="">
<td>ID</td>
<td ><div id="iddiv"></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>

查找数据集.php

$category= isset($_GET['category']);// Could be the Start of the PROBLEM
$cate=$_GET['category'];
require "config.php";// connection to database


$query="SELECT * FROM fgen_structures WHERE device_category_name='$cate'";
$result=mysql_query($query);

?>
<select name="asset" onchange="getid(<?=$category;?>,this.value)">
<option>Select State</option>
<? while($row=mysql_fetch_array($result)) { ?>
<option value=<? echo $row['device_type_name'];?>><? echo $row['device_type_name'];?></option>
<? } ?>
</select>

findid.php

<? 
$category=isset($_GET['category']); // This is where I think the problem is as well!!!!
$asset=isset($_GET['asset']);


$cate=$_GET['category'];

$assets=$_GET['asset'];

$cId='Drawing'; //If Hard Coded works

require "config.php";// connection to database

$query="SELECT * FROM fgen_structures WHERE device_category_name='$cId' AND device_type_name='$assets'"; // Currently hardcoded with $cid and it works but I need it dynamic with $cate or $category
$result=mysql_query($query);




while($row=mysql_fetch_array($result)) {
echo $row['fgen_structure_id'];
//echo $category; // This displays a 1 ??

} ?>

最佳答案

我认为你的问题是,你不明白“isset()”在做什么:

$category=isset($_GET['category']);

http://php.net/isset确定变量或索引是否存在(并且不为 NULL),isset 的返回值为 bool 值,这意味着 true 或 false。在您的情况下,这似乎是真的,因为您的 echo 显示 1。

我认为您尝试这样做:

$category=isset($_GET['category']) ? $_GET['category'] : null;

另一方面,您的代码中存在严重的安全问题

$query="SELECT * FROM fgen_structures WHERE device_category_name='$cId' AND device_type_name='$assets'";

您不能只使用未经过滤的 $assets。请谷歌搜索SQL注入(inject)以获取更多信息。

关于php - 3 Drop Downs 链使用 ajax mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17117658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com