|
|
|
| Таблица: num || date || article || text
Надо отсортировать по num, так как значения почему - то перемешаны. Пробовал сделать с UPDATE но не понял синтаксис.
И еще - как в phpMyAdmin установить текущее значение autoincrement для таблицы?
Просто последний пост был 4, я все удалил, а новый добавляется все же с номером 5. | |
|
|
|
|
|
|
|
для: alexander95
(13.03.2011 в 18:57)
| | >Таблица: num || date || article || text
>Надо отсортировать по num, так как значения почему - то перемешаны. Пробовал сделать с
>UPDATE но не понял синтаксис.
При выводе используйте ключевое слово ORDER BY
SELECT * FROM tbl
ORDER BY num
|
В обратном порядке следует добавить так же DESC
SELECT * FROM tbl
ORDER BY num DESC
|
>И еще - как в phpMyAdmin установить текущее значение autoincrement для таблицы?
>Просто последний пост был 4, я все удалил, а новый добавляется все же с номером 5.
Это значение можно исправить в меню "Операции", группа "Параметры таблицы", без phpMyAdmin для этого можно использовать ALTER TABLE
ALTER TABLE tbl AUTO_INCREMENT=0;
|
А вообще, чтобы удалить данные из таблицы с обнулением атрибута AUTO_INCREMENT необходимо использовать оператор TRUNCATE TABLE. | |
|
|
|
|
|
|
|
для: cheops
(13.03.2011 в 19:07)
| | Огромное спасибо!
Но есть способ чтобы "навсегда" отсортировать?
Ну то есть вот как я пытался с UPDATE | |
|
|
|
|
|
|
|
для: alexander95
(13.03.2011 в 19:19)
| | Есть, делается это через оператор ALTER TABLE
ALTER TABLE tbl ORDER BY num
| Однако, "навсегда" тут достаточно условно. Дело в том, что порядок строк в реляционных таблицах никогда не бывает определен, он задается во время выборки SELECT. Более того, операторы UPDATE, DELETE и INSERT будут нарушать его, так как первая задача СУБД - это скорость работы, удаляя записи она оставляет "дыры", которые потом могут заполняться при новых вставках, нарушая порядок строк. Профессионалы вообще никогда не надеются на естественный порядок в таблицах, так как в некоторых СУБД на него вообще влиять невозможно, кроме как через ORDER BY в SELECT-запросах. | |
|
|
|
|
|
|
|
для: cheops
(13.03.2011 в 19:33)
| | Просто надо ведь, чтобы все записи имели свой номер, упорядоченный по дате. При выведении постов обязательно нужен номер записи. Если хоть один номер будет пропущен, то во всем цикле придется проводить проверку на существование записи, что достаточно медленно, особенно когда постов много будет.
Ну в этом проекте посты вряд ли будут удаляться, просто сейчас на локалхосте все отлаживаю и вот такая проблема появилась.
Еще раз спасибо! | |
|
|
|
|
|
|
|
для: alexander95
(13.03.2011 в 19:52)
| | Хм... в этом случае лучше не ориентироваться на цикл for, которому нужен числовой индекс и регулярный механизм мего приращения, используйте while() - в этом случае можно ориентироваться на то, есть ли еще записи в результирующей таблицы или нет. Как они закончаться, цикл сам прекратит работу. | |
|
|
|
|
|
|
|
для: cheops
(13.03.2011 в 19:57)
| | Можете привести пример цикла? | |
|
|
|
|
|
|
|
для: alexander95
(13.03.2011 в 20:06)
| | Можно отталкиваться от следующего скрипта
<?php
$query = "SELECT * FROM tbl ORDER BY num";
$res = mysql_query($query);
if(!$res) exit("Ошибка - ".mysql_error());
if(mysql_num_rows($res))
{
while($result = mysql_fetch_array($res))
{
echo $result['num']."<br />";
echo $result['date']."<br />";
echo $result['article']."<br />";
echo $result['text']."<br />";
echo "<br />";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(13.03.2011 в 20:12)
| | Самое то. Спасибо! | |
|
|
|