Про запросы и масивы...

Sky_Flex

Новичок
Про запросы и масивы...

Говорят если много запросов в БД - сайт тормозит...
вот я подумал что для "ходилки" не буду делать 15 запросов а сделаю так:
типо делаем один запрос:

$result = mysql_query("SELECT id, cid, name FROM tabla");

потом его надо в масив загнать(2-х мерный) типо:

$num = mysql_num_rows($result);

for($i=0; $i<$num; $i++)
{
$row = mysql_fetch_array($result);
$array['$i']['id'] = $row['id'];
$array['$i']['cid'] = $row['cid'];
$array['$i']['name'] = $row['name'];
$i++;
}

(но уже вот тут первая ошибка: привыводе потом этого масива,
for ($i=0; $i<$numet; $i++)
{
echo $array['$i']['id']." | ".$array['$i']['cid']." | ".$array['$i']['name']."<br>";
}
он выводится но все элементы в нем ка в последнем:
12 | 2 | Siemens
12 | 2 | Siemens
12 | 2 | Siemens
12 | 2 | Siemens и т.д. почему? ведь должны вроде в масив записаться из БД подряд все значения... а не только последняя строка....
)


И второй вопрос: А как мне потом в этом масиве выстроить дерево? $id - идентификатор, $cid - принадлежность той или иной записи...


в итоге из этого масива хочу получить дерево представленное в виде:
Главная >> Программы >> Для ПК >> Simens

где (Главная, Программы, Для ПК) - столбец name
а $id для ссылки на их страницы....

надеюсь меня хоть кто то понял...
 

SiMM

Новичок
Для "ходилки", чтобы не делать много запросов, используют nested sets
Хотя для маленьких БД это, возможно, не существенно
 

Sky_Flex

Новичок
все что ВЫ написали... ну ниче не понял....

А как мне данную то проблему решить????
 

SiMM

Новичок
Sky_Flex, Фанат тебе уже указал на твою первую ошибку.
 

kruglov

Новичок
Что именно непонятно в том, что написал Фанат?
не получилось это вставить в пустой php-файл и посмотреть. что будет?
 

Sky_Flex

Новичок
у меня где вы такое увидели? да у меня есть опечатка(это про 2-раза повторяющиеся $i++) да еще опечатался вот тут:

for ($i=0; $i<$numet; $i++)
{
echo $array['$i']['id']." | ".$array['$i']['cid']." | ".$array['$i']['name']."<br>";
}

а надо:

for ($i=0; $i<$num; $i++)
{
echo $array['$i']['id']." | ".$array['$i']['cid']." | ".$array['$i']['name']."<br>";
}

так почему у меня не выводится массив то??7 точнее он выводится... но записан он не так как надо...

$result = mysql_query("SELECT id, cid, name FROM tabla");
$num = mysql_num_rows($result);

for($i=0; $i<$num; $i++)
{
$row = mysql_fetch_array($result);
$array['$i']['id'] = $row['id'];
$array['$i']['cid'] = $row['cid'];
$array['$i']['name'] = $row['name'];
}

в БД у меня данные
10 0 samsung
11 0 SonyEricsson
12 10 Siemns

при запросе из БД в масив тоже так должно все занестись вроде... а заносит только:
12 10 Siemns
12 10 Siemns
12 10 Siemns

В чем ошибка???
 

Фанат

oncle terrible
Команда форума
будь добр, если тебя не затруднит, сделай такое одолжение - исполни код, который я тебе написал выше.
 

Sky_Flex

Новичок
ну и что??? выводит 1... исполнять то его зачем , и так поятно..=)

у меня то такого нет! вроде?или есть?
 

Фанат

oncle terrible
Команда форума
ты обманываешь дядю.
как не стыдно?
а ещё пионер, наверное
 

Sky_Flex

Новичок
=) ну да ... выводит $i...

извиняюсь.. понял ошибку... ну а как в масиве:
id cid name
1 | 0 | Program
2 | 0 | Fareware
3 | 1 | for_PC
4 | 2 | Siemens
5 | 3 | Samsung
17 | 3 | Siemens

вывести из него Program >> for_PC >> Samsung ???
ну т.е. в масиве определить какая категория кому пренадлежит?? как?
 

SiMM

Новичок
> ну т.е. в масиве определить какая категория кому пренадлежит?? как?
По cid
 

Sky_Flex

Новичок
это я понимаю... тут смотрим ид там сид потом его ид и ищем такой же но сид...

А КАК ЭТО ДЕЛАТЬ-ТО??? я про код??? вроде ман читал... не понял...
 

SiMM

Новичок
> А КАК ЭТО ДЕЛАТЬ-ТО???
В цикле. Например, используя [m]while[/m]. Вообще вывод пути начинают с конца. Т.е. по id текущей категории берут id родителя (cid), затем берут id родителя и т.д, пока cid != 0
 
Сверху