Функция PHP Echo не будет выводиться в HTML Div с использованием innerHTML - PullRequest
0 голосов
/ 25 января 2011

Вот код HTML / JS:

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()             {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("dd123").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","externalphpcode.php?t=" + Math.random(),true);
xmlhttp.send();
}
window.onload=loadXMLDoc();
</script>

И внешний код PHP:

<?php
header ('Location: urlofHTMLcode');

$con = mysql_connect("hostname","databasename","password");

if (!$con)
{
die('Test Error'.mysql_error());
}

$db_selected = mysql_select_db("databasename", $con);
if (!db_selected)
{
die("Error 3 : ".mysql_error());
}
$result= "SELECT COLUMN_1 FROM T_DEALS WHERE COLUMN_2 = '2011-01-03'
 and COLUMN_3 = 'VALUE_1'" or die ("Error 4 :".mysql_error());

$row = mysql_fetch_array($result);

echo $row;

mysql_close($con);
exit ();

Вот проблема, с которой я столкнулся, с большей частью HTML /JS отредактирован для краткости.Я проверил, что файл HTML / JS точно вызывает внешний файл PHP, изменив PHP для вставки в mySQL.Я пытался получить результат SQL-запроса для отображения в указанном контейнере DIV с помощью команды PHP echo в паре с командой ".responseText" через AJAX.Что я делаю неправильно?Похоже, что нет проблемы с объектом, ссылающимся на HTML, и при отладке соединения PHP / mySQL сообщение об ошибке заменяет DIV на соответствующее сообщение об ошибке, которое не происходит после изменения кода для вызова данных mySQL.значения.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Вы не вызывали mysql_query в своем запросе, поэтому ваш $ result мог бы также прочитать

 $result="String" Usless statement "String";

Обычно вы сохраняете sql в отдельной строке, поэтому вы должны переписать его следующим образом:

$sql= "SELECT COLUMN_1 FROM T_DEALS WHERE COLUMN_2 = '2011-01-03' and COLUMN_3 = 'VALUE_1'";
$result= mysql_query($sql);
if(!$result) {die ("Error 4 :".mysql_error());}

Далее $ row var - это массив, который вы должны либо пройти через цикл for, либо получить доступ к определенному индексу.Вы не можете напрямую выводить массивы, все, что вы когда-либо получите, это «массив» в вашем выводе.

Цикл for будет выглядеть примерно так:

 for $cell in $row{
 echo $cell;
 }

, и в конечном итоге в опубликованном вами коде вы пропустили финал?>, Поэтому убедитесь, что он действительно есть в вашем php-коде.

Также я бы порекомендовал вам использовать jQuery вместо плана js, который вы используете, так как он будет менее глючным в разных браузерах, это руководство поможет вам начать работу http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery, если вы еще не слышали об этом.

0 голосов
/ 29 января 2011

Чтобы продолжить, я НАСТОЯЩИМ обнаружил ошибку.Кажется, в моей функции вызова .php я поместил значение в заголовок, который ограничивал правильный вывод.Это не имеет ничего общего с языком .js или .php.

UserZer0, вы были абсолютно правы ... когда я повторяю $ row, он выводит массив.Но я наконец получаю вывод и могу работать с этим.

Тысяча благодарностей!

...