누군가가 도움을 주길 바랍니다. 공간이있는 새 항목을 추가 할 때까지 동적 인 드롭 다운이 훌륭하게 작동했습니다. 두 번째 드롭 다운에 공백이있는 항목이있어 쿼리가 제대로 실행되지만 첫 번째 드롭 다운이 실패하기 때문에 혼란 스럽습니다. 나는 하나의 실패를 일으키는 차이점을 찾으려고 노력했지만, 나는 그것을 볼 수 없다. 내가 찾은 스크립트가 혼합되어있어 Javascript와 PHP가 새로 생겨서 잃어 버렸습니다. 누군가 내 잘못을 지적하길 바랍니다.get 및 공백으로 PHP 쿼리가 실패합니다
<script type="text/javascript">
function AjaxFunction()
{
var ddstring = document.getElementById("name");
var ddindex = ddstring.options[ddstring.selectedIndex].value;
if (ddindex != 0){
var httpxml;
try
{
// Firefox, Opera 8.0+, Safari
httpxml=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
httpxml=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
httpxml=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
function stateck()
{
if(httpxml.readyState==4)
{
//alert(httpxml.responseText);
var myarray = JSON.parse(httpxml.responseText);
var myarray=myarray.split(",");
for(j=document.searchform.type.options.length-1;j>=0;j--)
{
document.searchform.type.remove(j);
}
for (i=0;i<myarray.length;i++)
{
var optn = document.createElement("OPTION");
optn.text = myarray[i];
optn.value = myarray[i];
document.searchform.type.options.add(optn);
}
{
var optn2 = document.createElement("OPTION");
optn2.text = "Select Type";
optn2.value = '%';
document.searchform.type.options.add(optn2,0);
}
{
document.searchform.type.disabled=false;
document.searchform.type.selectedIndex = 0;
var defaultdd = "<?php echo $_SESSION['type'] ?>";
if (defaultdd != ""){
document.getElementById('s2').value = defaultdd;
if (defaultdd != "%"){
AjaxFunction2();
}
}
}
}
}
var url="dd.php";
var cat_id=document.getElementById('name').value;
url=url+"?cat_id="+cat_id;
url=url+"&sid="+Math.random();
httpxml.onreadystatechange=stateck;
//alert(url);
httpxml.open("GET",url,true);
httpxml.send(null);
}
else {
document.searchform.type.selectedIndex = 0;
document.searchform.subcat.selectedIndex = 0;
document.searchform.type.disabled=true;
document.searchform.subcat.disabled=true;
}
}
</script>
<script type="text/javascript">
function AjaxFunction2()
{
var httpxml;
try
{
// Firefox, Opera 8.0+, Safari
httpxml=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
httpxml=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
httpxml=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
function stateck()
{
if(httpxml.readyState==4)
{
//alert(httpxml.responseText);
var myarray = JSON.parse(httpxml.responseText);
var myarray=myarray.split(",");
for(j=document.searchform.subcat.options.length-1;j>=0;j--)
{
document.searchform.subcat.remove(j);
}
for (i=0;i<myarray.length;i++)
{
var optn = document.createElement("OPTION");
optn.text = myarray[i];
optn.value = myarray[i];
document.searchform.subcat.options.add(optn);
}
{
var optn2 = document.createElement("OPTION");
optn2.text = "Select Series";
optn2.value = '%';
document.searchform.subcat.options.add(optn2,0);
}
{
document.searchform.subcat.disabled=false;
document.searchform.subcat.selectedIndex = 0;
var defaultdd = "<?php echo $_SESSION['subcat'] ?>";
if (defaultdd != ""){
document.getElementById('s3').value = defaultdd;
}
}
}
}
var url="dd2.php";
var cat_id=document.getElementById('name').value;
var cat_id2=document.getElementById('s2').value;
url=url+"?cat_id="+cat_id;
url=url+"&cat_id2="+cat_id2;
url=url+"&sid="+Math.random();
httpxml.onreadystatechange=stateck;
//alert(url);
httpxml.open("GET",url,true);
httpxml.send(null);
}
</script>
폼 요소 :
<form name="searchform" method='POST' action='?'>
<table width="534" border="1" cellspacing="10" ID="tdspace">
<tr>
<td>Manufacturer: </td>
<td><select name=name id='name' onchange=AjaxFunction();>
<option value='%'>Select One</option>
<?Php
try {
$dbo = new PDO('mysql:host=localhost;dbname='. $dbname, $username, $password);
}
catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$sql="SELECT Distinct Manufacturer FROM `tbl_Printers` order by `Manufacturer` asc ";
foreach ($dbo->query($sql) as $row) {
if ($row[Manufacturer] == $_SESSION['name'])
$selected = "selected=\"selected\"";
else
$selected = "";
echo "<option value=$row[Manufacturer] $selected>$row[Manufacturer]</option>";
if($_SESSION['type'])
{ echo '<script type="text/javascript">AjaxFunction()</script>';
}
}
?>
<?php
if ($_SESSION['name'] == ""){ $namevalue = 'None Selected';}
else {$namevalue = $_SESSION['name'];}
if ($_SESSION['type'] == "%"){ $typevalue = 'None Selected';}
else {$typevalue = $_SESSION['type'];}
if ($_SESSION['subcat'] == "%"){ $subvalue = 'None Selected';}
else {$subvalue = $_SESSION['subcat'];}
?>
</select></td>
<td>Manufacturer:<span style="color:cyan"> <?php echo $namevalue;?></span></td>
</tr>
<tr>
<td>Product Type: </td>
<td><select name=type id='s2' onchange=AjaxFunction2(); disabled=true>
<option value='%' selected>Select Type</option>
</select></td>
<td>Product Type:<span style="color:magenta"> <?php echo $typevalue?></span></td>
</tr>
<tr>
<td>Printer Catagory:</td>
<td><select name=subcat id='s3' disabled=true>
<option value='%' selected>Select Series</option>
</select></td>
<td>Printer Series:<span style="color:yellow"> <?php echo $subvalue;?></span></td>
</tr>
<tr>
<td height="27" colspan="2" ID="centered" style="padding-left:90px"><br /> <input type=submit onclick="s3.disabled=false; s2.disabled=false" class="quick-search-button btn"/></td>
<td>Records Found:<span style="color:black; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4)"> <?php echo $_SESSION['totalrecords'];?></span></td>
</tr>
<tr>
<td height="28" colspan="3" style="text-align:center"><br />
*Manufacturer is Manditory, all other fields optional. </td>
</tr>
</table>
<br />
<br />
<p><div id="finish">
</p></div>
</form>
이는 PHP 여기 당신이 첫 번째 스크립트를 볼 필요가 있다고 생각 코드는 두 번째를 실패 드롭 다운을 제어하는 하나가 작동되고 있어요 두 번째 드롭 다운 양식 비록 첫 번째 드롭 다운에 대한 결과를 반환하도록되어 페이지가 실질적으로 동일하며 작동합니다
내가 어떤 도움을 주셔서 감사합니다<?Php
@$cat_id=$_GET['cat_id'];
//$cat_id=2;
$dbhost_name = "localhost";
$database = "database";// database name
$username = "username"; // user name
$password = "password"; // password
//////// Do not Edit below /////////
try {
$dbo = new PDO('mysql:host=localhost;dbname='.$database, $username, $password);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$str='';
$sql="SELECT Distinct Type FROM `tbl_Printers` where Manufacturer='$cat_id' order by Type asc";
foreach ($dbo->query($sql) as $row) {
$str=$str . "$row[Type]".",";
}
$str=substr($str,0,(strLen($str)-1)); // Removing the last char , from the string
//$main = array($str);
echo json_encode($str);
//echo $str;
?>
, 나는 검색을 시도하고 일반적으로 나는 도움을 청하지 않는다. 그러나 이것은 나의 이해를 훨씬 넘어서있다.
잠시 동안 나는이 모든 것을 읽도록 내 큐리스를 교체했습니다. (많은 사람들이 페이징을 고려하고 있습니다 ...) 나는이 문제를 해결하기위한 것으로 보지 않습니다.
"SELECT Distinct Type FROM `tbl_Printers` where Manufacturer Like CONCAT('%', '$cat_id', '%') order by Type asc"
올바른 방향으로 나를 가리켜 주신 Vigor에게 감사드립니다. 불행히도 나는 답변으로 의견을 선택하거나 내 평판 때문에 내일까지 내 자신의 질문에 대한 답변을 게시 할 수는 없지만 문제를 찾아 주셔서 너무 감사드립니다.
문제를 일으키는 코드 줄이었다
echo "<option value='" . $row['Manufacturer']."' ".$selected." >" . $row['Manufacturer'] . "</option>";
소스보기를 클릭하고 드롭 다운 목록을 볼 때 실제로 브라우저로 전송되는 내용은 무엇입니까? 때로는 오류 메시지가 필드에 표시됩니다. –
브라우저에서 소스 코드를 볼 때 첫 번째 드롭 다운 목록 값을 제외하고 양식 옵션에 아무것도 표시되지 않습니다. 페이지에서 볼 수있는 오류가 없습니다. 마치 쿼리가 실행되어 결과를 반환하지 않은 것과 같습니다. 그러나 첫 번째 드롭 다운에서 공백이없는 값을 선택하자마자 두 번째 드롭 다운이 채워집니다. –
페이지에서 jsut이 발견되었습니다. 각 드롭 다운 선택 항목의 값을 게시하고 두 번째 단어가 캡처되지 않는 섹션이 있습니다. 따라서 Pitney Bowes를 선택하면 Pitney가 페이지에 다시 게시됩니다.예상대로 두 번째 드롭 다운에서 두 단어 선택이 두 단어로 다시 게시됩니다. –