Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

пропускаются записи

82K
11 октября 2012 года
andrey7545
7 / / 03.10.2012
проблема такова я вывожу цикл while но у меня почему то из базы категории для сайта выводятся начинаясь с id2 а не с id1 то есть по идее цикл должен выводить из бд категории начиная с id1 но у меня с id 2 начинает и заканчивается id3, а id1 просто игнорируется не пойму в чем проблема ! вот код кто может объясните пожалуйста !
 
Код:
//выполняем цикл while для вывода категорий
while($myrow2 = mysql_fetch_array($result2)){

echo "<p><a class='nav_link' href='view_cat.php?cat={$myrow2['id']}'>{$myrow2['title']}</a></p>";

}
}
4
12 октября 2012 года
mike
3.7K / / 01.10.2002
Цитата: Mahi
Попробуйте mysql_data_seek($result2, 0); выполнить перед while

Это костыль.

Ошибка скорее всего из-за того что записи не отстортированы. СУБД может выдавать их в любом порядке, если явно не указана сортировка "ORDER BY" или группировка "GROUP BY"

По человечески код должен выглядеть как-то так:

Код:
<?php

$r = mysql_query("SELECT * FROM categories ORDER BY id",$db);
if ($r) {

    if (mysql_num_rows($r)>0) {
        while ($row = mysql_fetch_assoc($r)) {
            echo "<p><a class=\"nav_link\" href=\"view_cat.php?cat=".$row["id"]."\">".$row["title"]."</a></p>\n";
            }
        }
    else {
        echo "<p>Информация по запросу не может быть извлечена , в таблице нет записей.</p>";
        }
    }
else {
    echo "<p>Запрос на выборку данных из бд не прошел. Напишите об этом администратору <br><strong>код ошибки:</strong></p>";
    return mysql_error();
    }

?>
84K
12 октября 2012 года
Mahi
11 / / 11.10.2012
Ищите ошибку выше по коду. В этом месте ошибки нет. Вероятно не верный запрос к БД.
49K
12 октября 2012 года
SevenPC
24 / / 04.06.2012
Дайте код запроса к БД.
82K
12 октября 2012 года
andrey7545
7 / / 03.10.2012
Цитата: SevenPC
Дайте код запроса к БД.


вот код

Код:
<?php
 $result2 = mysql_query("SELECT * FROM categories",$db);

if (!$result2)
{
echo "<p>Запрос на выборку данных из бд не прошел. Напишите об этом администратору <br><strong>код ошибки:</strong></p>";
exit (mysql_error());
}

if (mysql_num_rows ($result2) > 0)

{

//выполняем цикл while для вывода категорий



while($myrow2 = mysql_fetch_array($result2)){

echo "<p><a class='nav_link' href='view_cat.php?cat={$myrow2['id']}'>{$myrow2['title']}</a></p>";

}
}



else {
echo "<p>Информация по запросу не может быть извлечена , в таблице нет записей.</p>";
exit();
}
 
 
 
 
 ?>
84K
12 октября 2012 года
Mahi
11 / / 11.10.2012
Попробуйте mysql_data_seek($result2, 0); выполнить перед while
82K
12 октября 2012 года
andrey7545
7 / / 03.10.2012
Цитата: Mahi
Попробуйте mysql_data_seek($result2, 0); выполнить перед while


Спасибо теперь заработало !!!

84K
12 октября 2012 года
Mahi
11 / / 11.10.2012
Цитата: mike
Цитата: Mahi
Попробуйте mysql_data_seek($result2, 0); выполнить перед while

Это костыль.

Ошибка скорее всего из-за того что записи не отстортированы. СУБД может выдавать их в любом порядке, если явно не указана сортировка "ORDER BY" или группировка "GROUP BY"



Это не костыль. Это обычный безопасный подход к решению задачи в предложенном контексте. Загляните в документацию по PHP. Там связка sql_data_seek ($result, 0); while ($record = mysql_fetch_array($result)){...} используется повсеместно. (как и sql_data_seek ($result, 0); while ($record = mysql_fetch_assoc ($result)){...} )

Немного не уловил связи между сортировкой в СУБД и положением курсора в переданном PHP результате.
К тому же результат будет отсортирован согласно первичного ключа таблицы, коем наверняка является поле id и ORDER BY в данном случае ничего не меняет.
Вы вводите людей в заблуждение.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог