Всем здравствуйте! Опишу ситуацию. Я не программист, но для работы мне понадобилось сделать следующее. Есть две таблицы: одна содержит названия товаров в прайсе и их артикулы (таблица 1), а вторая содержит названия товаров и их параметры (таблица 2). Нужно приджойнить к таблице 2 артикулы товаров из таблицы 1, и вывести в окно браузера результат в виде html таблицы. Join идет по полю, которое у меня называется name. Запрос элементарный, только вопрос в том, как вывести в окно браузера html таблицу (с шапкой!), если не знаешь ни количества ни названия полей, которые получаться в результате запроса. Известно только что в обоих таблицах содержиться поле name, и в таблице 1 содержиться поле articul. Все! Порылся в гугле, готового решения не нашел, поэтому решил поделиться своим, может кому-то пригодится! Напоминаю – это мой первый опыт в программировании, поэтому буду рад если укажите где сделано криво и почему.
<?
$articuls=$_POST['ar'];//Получаем название таблицы 1 из html-формы
$parametrs=$_POST['par'];//Получаем название таблицы 2 из html-формы
$sql1=mysql_query(«select $parametrs.*, $articuls.articul, from $parametrs join $articuls on $parametrs.name=$articuls.name group by $articuls.name;»);//Делаем запрос на выборку
$x=mysql_fetch_array($sql1);
//Записываем первую строку из результата запроса в переменную $x
$y=array_keys($x);//Получаем массив ключей из массива $x
echo "<table border=0 align=center width=70%>";
//Рисуем таблицу
echo "<caption><strong>Сопоставленные данные</strong></caption>";
echo "<tr>";
$i=1;//Это счетчик элементов массива $y
while ($i<=count($y)){
echo "<td><strong>".$y[$i]."</strong></td>";//Рисуем шапку
$i=$i+2;//Выводим каждый нечетный элемент, потому что четные элементы и нуль — это индекс
//, а в шапку таблицы нужно записать его текстовое значение т.е. [0] => 0 [1] => name [2] => 1 [3] //=> prod [4] => 2 и т.д.
}
echo "</tr>";
//Шапка нарисована, теперь вставляем данные из $sql1
while ($res=mysql_fetch_array($sql1)){//в этом цикле мы перебераем все строки пока fetch_array не
//выдаст false
echo "<tr>";
$y=array_keys($x);
for ($i=1; $i<=count($y); $i=$i+2){
echo "<td>".$res[$y[$i]]."</td>";
//Выводим элементы массива $res с именами полей, которые берем из массива ключей
//$y, опять таки с нечетными номерами
}
echo "</tr>";
}
echo "</table>";
?>
<?
$articuls=$_POST['ar'];//Получаем название таблицы 1 из html-формы
$parametrs=$_POST['par'];//Получаем название таблицы 2 из html-формы
$sql1=mysql_query(«select $parametrs.*, $articuls.articul, from $parametrs join $articuls on $parametrs.name=$articuls.name group by $articuls.name;»);//Делаем запрос на выборку
$x=mysql_fetch_array($sql1);
//Записываем первую строку из результата запроса в переменную $x
$y=array_keys($x);//Получаем массив ключей из массива $x
echo "<table border=0 align=center width=70%>";
//Рисуем таблицу
echo "<caption><strong>Сопоставленные данные</strong></caption>";
echo "<tr>";
$i=1;//Это счетчик элементов массива $y
while ($i<=count($y)){
echo "<td><strong>".$y[$i]."</strong></td>";//Рисуем шапку
$i=$i+2;//Выводим каждый нечетный элемент, потому что четные элементы и нуль — это индекс
//, а в шапку таблицы нужно записать его текстовое значение т.е. [0] => 0 [1] => name [2] => 1 [3] //=> prod [4] => 2 и т.д.
}
echo "</tr>";
//Шапка нарисована, теперь вставляем данные из $sql1
while ($res=mysql_fetch_array($sql1)){//в этом цикле мы перебераем все строки пока fetch_array не
//выдаст false
echo "<tr>";
$y=array_keys($x);
for ($i=1; $i<=count($y); $i=$i+2){
echo "<td>".$res[$y[$i]]."</td>";
//Выводим элементы массива $res с именами полей, которые берем из массива ключей
//$y, опять таки с нечетными номерами
}
echo "</tr>";
}
echo "</table>";
?>