Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка в меню
 
 автор: Лена   (16.01.2008 в 17:29)   письмо автору
 
 

Вывела информацию в меню с помощью скрипта:

<?php

include( "dbopen.php" );

function 
ShowTree($ParentID$lvl) {


global 
$link;

global 
$lvl;

$lvl++;


$sSQL "SELECT id, pid, title  FROM menu WHERE pid = " $ParentID " ORDER BY title";


$result mysql_query($sSQL$link);


if (
mysql_num_rows($result) > 0) {

echo(
"<UL>\n");

while ( 
$row mysql_fetch_array($result) ) {

$ID1 $row["id"];

echo(
"<LI>\n");

echo(
"<A HREF=\"" "?ID=" $ID1 "\">" $row["title"] . "</A>" "&nbsp;&nbsp;\n");

ShowTree($ID1$lvl);

$lvl--;
}

echo(
"</UL>\n");

}


}


ShowTree(00);



mysql_close($link);



?>



Меню получилось, но почему-то разделы вывелись в алфавитном порядке, я же хочу ,чтобы разделы меню шли по порядковому номеру id, как это сделать? Существует какая-то функция сортировки?

   
 
 автор: Волки   (16.01.2008 в 17:51)   письмо автору
 
   для: Лена   (16.01.2008 в 17:29)
 

$sSQL = "SELECT id, pid, title  FROM menu WHERE pid=$ParentID ORDER BY id";

   
 
 автор: Лена   (17.01.2008 в 12:59)   письмо автору
 
   для: Волки   (16.01.2008 в 17:51)
 

Если сделать так, как вы сказали, то id выводятся следующим образом:
сначала id=1, а дальше в такой последовательности:
2,3,13,14,15,16,17,4, 5,6,7,8,9,10
Кто-нибудь знает, в чем фишка?

   
 
 автор: ok computer   (17.01.2008 в 13:22)   письмо автору
 
   для: Лена   (17.01.2008 в 12:59)
 

$sSQL = "SELECT id, pid, title  FROM menu WHERE pid=$ParentID ORDER BY id DESC"; 
обратная сортировка

   
 
 автор: Thrasher   (17.01.2008 в 14:33)   письмо автору
 
   для: Лена   (17.01.2008 в 12:59)
 

Похоже на то, что у вас поле id не числового, а текстового типа.

   
 
 автор: Лена   (17.01.2008 в 15:04)   письмо автору
 
   для: Thrasher   (17.01.2008 в 14:33)
 

Поле id у меня VARCHAR

   
 
 автор: Unkind   (17.01.2008 в 15:06)   письмо автору
 
   для: Лена   (17.01.2008 в 15:04)
 

А должно быть, например, INT.

   
 
 автор: Лена   (17.01.2008 в 15:38)   письмо автору
 
   для: Unkind   (17.01.2008 в 15:06)
 

Спасибо большое,Unkind! Я вам так благодарна. Все получилось. В очередной раз форум себя оправдал.
Ребят, еще один вопрос: если я делаю запрос, выбираю из одной таблицы $sSQL = "SELECT id, pid, title FROM menu WHERE pid = " . $ParentID . " ORDER BY id"; а из другой мне нужно другое выбрать (эти две таблицы связаны) , вернее я хочу сделать вывод содержимого каждого раздела вот таким кодом:
ВЫВОД РАЗДЕЛА

<?php

$id
=$_GET['id'];

if (
$ide!="")
{
include( 
"dbopen.php" );

$sSQL1="SELECT `head`* FROM `txt` WHERE id_menu='$id'";
$result1=mysql_query($sSQL1$link);

while(
$row mysql_fetch_array($result1))    {
    print 
$row['head']."<br>";
}
}

mysql_close($link);

?> 


Мне нужно опять делать подключение к базе, в смысле подключать файл dbopen.php или не нужно? Тогда и закрывать соединение я буду один раз mysql_close($link)О, в конце второго скрипта?

   
 
 автор: Unkind   (17.01.2008 в 15:41)   письмо автору
 
   для: Лена   (17.01.2008 в 15:38)
 

Нет, соединение уже установлено до конца работы скрипта (если только не постоянное соединение) или до закрытия с помощью mysql_close(). Так что подключать "dbopen.php" не надо.

И вообще, повторный вызов какого-то кода в таких ситуациях делают через функции, а не подключением какого-то файла.

   
 
 автор: Лена   (17.01.2008 в 16:40)   письмо автору
 
   для: Unkind   (17.01.2008 в 15:41)
 

Убрала повторное соединение - и не получается... Хочется, чтобы слева было меню, а справа содержание текущего раздела. Где у меня ошибка?


<?php

("<table>\n");

echo(
"<tr>\n");

echo(
"<td>\n");

include( 
"dbopen.php" );

function 
ShowTree($ParentID$lvl) {

global 
$link;

global 
$lvl;

$lvl++;

$sSQL "SELECT id, pid, title  FROM menu WHERE pid = " $ParentID " ORDER BY id";

$result mysql_query($sSQL$link);

if (
mysql_num_rows($result) > 0) {

echo(
"<UL>\n");

while ( 
$row mysql_fetch_array($result) ) {

$ID1 $row["id"];

echo(
"<LI>\n");

echo(
"<A HREF=\"" "?ID=" $ID1 "\">" $row["title"] . "</A>" "&nbsp;&nbsp;\n");

ShowTree($ID1$lvl);

$lvl--;
}

echo(
"</UL>\n");

}
}

ShowTree(00);

echo(
"</td>\n");

echo(
"<td>\n");

$id=$_GET['id'];

if (
$id!="")
{

$sSQL1="SELECT `head` FROM `txt` WHERE id_menu='$id'";
$result1=mysql_query($sSQL1$link);

while(
$row1 mysql_fetch_array($result1))    {
    print 
$row1['head']."<br>";
}
}

mysql_close($link);

echo(
"</td>\n");
echo(
"</tr>\n");
echo(
"</table>\n");
?> 

Заранее спасибо

   
 
 автор: Trianon   (17.01.2008 в 23:30)   письмо автору
 
   для: Лена   (17.01.2008 в 16:40)
 

Что нибудь одно. Либо таблица, либо иерархический список.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования