[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сброс указателя в результате выборки
Djo
Делаю выборку из таблицы и записываю ее в переменную $s. Затем функцией mysql_fetch_array($s) обрабатываю результат.
Я хочу вывести результат в несколько таблиц. Но после вывода первой таблицы, $s больше не обрабатывается mysql_fetch_array, потому что указатель стоит в конце результата. Как можно сбросить указатель?

Вывод первой талицы (код повторяется для других таблиц, изменяются только массивы $fields и $table_head)
PHP
$s = mysql_query("
SELECT o.*, c.name_cust
FROM djo_tipograph_orders AS o, djo_tipograph_customers AS c
WHERE c.id_customer = o.id_customer
ORDER BY o.id_order"
);

//Параметры таблицы
$fields = array("id_order","name","name_cust","date_reg","time_made"); //массив с названиями полей
$table_head = array("№ заказа","Наименование","Заказчик","Дата регистрации","Срок изготовления");  //шапка таблицы (без колонки "Действие")

/* Вывод таблицы из БД */
//заголовок
echo "<h1>Заказы</h1>";
//вывод шапки
echo "<table cellspacing='1' class='djo_tipograph_table'><tbody><tr>";
for ($i=0;$i<count($table_head);$i++) {echo "<th>".$table_head[$i]."</th>";}
echo "<th colspan='3'>Действие</th></tr>";

while ($f = mysql_fetch_array($s))
{
echo "<tr>";

//вывод значений полей
for ($i=0;$i<count($fields);$i++) {echo "<td>".$f[$fields[$i]]."</td>";}

echo "</tr>";
}
echo "</tbody></table><hr>";




Спустя 10 минут, 54 секунды (9.07.2009 - 14:39) pas написал(а):
используйте фунцию mysql_data_seek(), которая служит для перемещения внутреннего указателя в результате запроса

Спустя 13 минут, 29 секунд (9.07.2009 - 14:52) Djo написал(а):
Спасибо!

Спустя 57 минут (9.07.2009 - 15:49) sergeiss написал(а):
Несколько примечаний.

1.
Цитата (Djo @ 9.07.2009 - 15:28)
Делаю выборку из таблицы и записываю ее в переменную $s.

Тут записывается не результат выборки, а указатель на результат выборки. Это существенно, поэтому я обращаю на это внимание.

2. Если надо пройти по одним и тем же данным несколько раз, с целью создать какие-то таблицы, то почему бы это не сделать за один заход? Это не ошибка, но зачем??? Получается в итоге какой-то "китайский" код, не в обиду будь сказано smile.gif

3. Вместо такого цикла
PHP
//вывод значений полей
for ($i=0;$i<count($fields);$i++) {echo "<td>".$f[$fields[$i]]."</td>";}

лучше использовать цикл foreach; да и вывод данных будет красивее и понятнее:
PHP
foreach( $f as $key => $val )
  echo "<td>$val</td>";

Заодно замечу, что в данном случае фигурные скобки не обязательны, потому что блок состоит из одного оператора.

PS. Да и создание шапки таблицы можно сделать более универсальным...

Спустя 32 минуты, 37 секунд (9.07.2009 - 16:22) Djo написал(а):
Спасибо за примечания.
Просто у меня опыта еще мало и голова уже плохо соображает от много часового сидения за компом...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.