2014-02-03 1 views
0

У меня есть список продуктов на моем сайте a Catalog. Следующий PHP-код использует javascript для создания div и вставки всех ссылок описания продукта внутри него.Элементы, не включенные в div при добавлении с помощью Javascript

$sql = "SELECT * from Products ORDER BY `Name` ASC"; 
$result = mysqli_query($con, $sql); 
echo "<script>document.getElementById('products').innerHTML = '<div class=ks>';</script>"; 
while($row = mysqli_fetch_assoc($result)) 
{ 
    $rowid = $row['Id']; 
    $xx = '<a href="Getdesc.php?hid='.$rowid . '" class=lnk>' . $row['Name'] . '</a><br>'; 
    echo "<script>document.getElementById('products').innerHTML += '$xx';</script>"; 
} 
echo "<script>document.getElementById('products').innerHTML += '</div>';</script>"; 

Игнорировать весь класс листа ks стиля и все прочий MySQL сейчас. Проблема заключается в отображении серого фонового div (серый из таблицы стилей) и ТОГДА ссылки. Мне нужны ссылки внутри div. Для небольшого объяснения для тех из вас, кто смущен куски кода, не связанных с основной целью этого вопроса,

  1. Таблица продуктов в MySQL представляет собой таблицу, которые держат всю информацию о продукте, включая цену, имя, идентификатор и т. д.

  2. ссылка "Getdesc.php?hid=..." ссылка является ссылкой на веб-страницу php, на которой будет отображаться вся информация о продукте из его идентификатора.

  3. «Продукты» - это идентификатор другого div, который содержит этот внутренний div (с продуктами, которые я имею в виду). PLUS некоторые другие вещи (я не хочу рассказывать вам все об этом).

Извините за беспорядочный код, спасибо заранее.

+5

Это не ответ, но Theres несколько вещей, чтобы отметить для будущего: было бы разумно отделить JavaScript от php, а не использовать '*' для запросов SELECT. Вы также выполняете поиск элементов каждый раз, когда это немного неэффективно. Особенно если у них много строк в цикле ... – Sir

+1

Почему бы просто не запустить скрипт php непосредственно из html, а затем использовать запрос ajax для загрузки этого php и добавить html к успеху? –

+0

@Dave, спасибо за совет !, Я постараюсь сделать это именно так. –

ответ

1

почему бы не поставить все в переменной:

$html = '<div class="ks">'; // btw you forgot those double-quotes. you html won't evaluate the class if not surrounded by double-quotes 
while($row = mysqli_fetch_assoc($result)) 
{ 
    $rowid = $row['Id']; 
    $xx = '<a href="Getdesc.php?hid='.$rowid . '" class=lnk>' . $row['Name'] . '</a><br>'; 
    $html.= $xx; 
} 
$html.= '</div>'; 

затем повторить его? если вы используете php, тогда нет необходимости менять страницу с помощью javascript после ее загрузки, вы просто отправили клиенту всю оставшуюся часть страницы, почему бы не поставить этот код прямо в нужное место?

echo $html; 
+1

Как он будет добавлять содержимое в div id 'products' из этого кода? потребуется какая-то форма javascript, предполагается, что он захочет добавить содержимое после того, как документ уже загружен ... – Sir

+1

говорят, что страница только что была загружена. Он исходил из этого конкретного сценария php. страница, эхо, происходит из сценария. просто переместите строки туда, где вы строите страницу, со всем остальным, а именно с продуктом div. если он не хочет использовать AJAX, но еще этого не знает: p –

+0

Как я был так глуп, чтобы не отметить эту возможность ??? Спасибо, кстати, я могу поместить php прямо в «Продукты», так что это работает для меня. Также как-то мой HTML-код работал без двойных кавычек вокруг «ks» –

2

Javascript:

//from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest 
function reqListener() { 
    document.getElementById('products').innerHTML = this.responseText; 
} 

var oReq = new XMLHttpRequest(); 
oReq.onload = reqListener; 
oReq.open("get", "yourFile.php", true); 
oReq.send(); 

PHP

$sql = "SELECT <columns> from Products ORDER BY `Name` ASC"; 
$result = mysqli_query($con, $sql); 
echo '<div class="ks">'; 
while($row = mysqli_fetch_assoc($result)) 
{ 
    $rowid = $row['Id']; 
    echo '<a href="Getdesc.php?hid=' . $rowid . '" class="lnk">' . htmlspecialchars($row['Name']) . '</a><br>'; 
} 
echo '</div>' 
+0

Спасибо, приятно и хорошо работает. –

Смежные вопросы