проблема, связанная со связью между двумя страницами php - PullRequest
0 голосов
/ 25 марта 2011

вот моя первая страница, где я использую комбинированный список для отправки запроса ....

<html>
<head>

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
//frm.submit();
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","infor.php",true);
xmlhttp.send();
}
</script>

<body bgcolor="white">
<table style="position: absolute; left: 00px; top: 00px;">
<tr><td width="1000" height="400" style="background:#666666">
<table style="position: absolute; left: 40px; top: 40px;">
<tr><td width="900" height="300" style="background:#C8C8C8">
<form name="frm" action="info.php" method="post">




State Name<select name="t1" id="list1" size="1" single onchange="loadXMLDoc();">
<option value="ANDHRA PRADESH">ANDHRA PRADESH</option>
<option value="ASSAM">ASSAM</option>
<option value="BIHAR">BIHAR</option>
<option value="CHATTISGARH">CHATTISGARH</option>
<option value="DELHI">DELHI</option>
<option value="GOA">GOA</option>
<option value="GUJRAT">GUJRAT</option>
<option value="HARYANA">HARYANA</option>
<option value="KERLA">KERLA</option>
<option value="MANIPUR">MANIPUR</option>
<option value="ORISSA">ORISSA</option>
<option value="PANJAB">PANJAB</option>
<option value="TAMILNADU">TAMILNADU</option>
<option value="WEST BANGAL">WEST BANGAL</option>
</select>
<div id="myDiv">
</div>
</form>
<input type="button" value="Close this window" onclick="self.close()">
</td></tr>
</table>
</body>
</head>
</html>

и здесь идет вторая вторая страница php, где я использую $ _POST для получения переменной, но онане работает ...

<?php
print "<br><br>D.Name<select name='t2' size='1' single>";
$conn=mysql_connect("localhost","root","");
mysql_select_db("mysql",$conn);
$str="select * from ".$_POST["t1"];
$rs=mysql_query($str);
while($row=mysql_fetch_array($rs))
{
    print "<option value=ASSAM>".$row['dname']."</option>";
}


mysql_close($conn);
print "</select>";
?>

Ответы [ 4 ]

1 голос
/ 25 марта 2011

Прежде чем что-то делать, сначала сделайте следующее:

  1. Получите установленную библиотеку Javascript (не пишите вызовы AJAX самостоятельно, когда существует так много особенностей браузера, чтобы проверить, может ли это прервать ваш вызов). Легко получить что-то вроде jQuery и просто идти (используйте их документацию, чтобы легко перевести ваш вызов в игру).
  2. Правильно PHP escape / проверки / проверки , вы в настоящее время делаете вызов SQL с переменной BARE POST. ОГРОМНОЕ нет-нет.
0 голосов
/ 25 марта 2011

он не отправляет никаких параметров в запросе GET, ребята

вам нужно сформировать параметры как

var parms = "t1 =" + encodeURIComponent (document.getElementById ('list1'). Value)

не забудьте обернуть кодировку URL для этого.

на странице php вы должны использовать url_decode ($ _ GET ['t1'])

Я ответил на твой другой пост в теге javascript,

0 голосов
/ 25 марта 2011

Единственное, что вам нужно понять:

Есть нет 2 php страниц.

Есть одна страница HTML / JS и одна страница php.

Очень важно отличать код HTML / JS, выполняемый в браузере, от кода PHP, запущенного на сервере.

Что касается вашей конкретной проблемы, это очень просто.

xmlhttp.open ( "GET", "infor.php", правда);

это ясно говорит о том, что используется метод GET. Почему вы ожидаете каких-либо данных в массиве $ _POST? ;)

0 голосов
/ 25 марта 2011

Вы делаете это

$str="select * from ".$_POST["t1"];

Если у вас на самом деле нет таблиц, соответствующих значениям вроде

<option value="ANDHRA PRADESH">ANDHRA PRADESH</option>
<option value="ASSAM">ASSAM</option>
<option value="BIHAR">BIHAR</option>

Возможно, вы хотели сделать что-то вроде

$str = "SELECT * FROM someTable WHERE someColumn = ".mysql_real_escape_string($_POST['t1']);

Дополнительнопосле

$rs=mysql_query($str);

Add

if(!$rs) {
  trigger_error (mysql_error().'SQL: '.$str);
  exit();
}

Вам будет легче отлаживать, если вы проверите, работает ли то, что вы делаете.Если вы по-прежнему не получаете ничего при отправке формы (что, как я полагаю, происходит), проверьте свой Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...