X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Запросы к базе помогите организовать
scva
scva
Topic Starter сообщение 2.2.2011, 10:47; Ответить: scva
Сообщение #1


Не работает конструкция
[PHP]
$category = mysql_query ("SELECT * FROM `category`");
while ($res = mysql_fetch_assoc($category))
{
echo $res['name'];

$idw = $res['id'];

$cat = mysql_query ("SELECT * FROM `podcat` WHILE id_podcat = '$idw'");
while ($res = mysql_fetch_assoc($cat))
{
echo $res['name'];
}

}
[/PHP]
Выбираем из базы все категории, а для каждой категории выбираем все подкатегории
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DoctorX
DoctorX
сообщение 2.2.2011, 11:17; Ответить: DoctorX
Сообщение #2


Вы переопределяете перченную $res и поэтому внешний цикл останавливается.

[PHP]$cat = mysql_query ("SELECT * FROM `podcat` WHILE id_podcat = '$idw'");
while ($res = mysql_fetch_assoc($cat))
{
echo $res['name'];
} [/PHP]

-->

[PHP]$cat = mysql_query ("SELECT * FROM `podcat` WHILE id_podcat = '$idw'");
while ($res2 = mysql_fetch_assoc($cat))
{
echo $res2['name'];
} [/PHP]


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scva
scva
Topic Starter сообщение 2.2.2011, 13:41; Ответить: scva
Сообщение #3


все равно не катит, выводится только из category
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 2.2.2011, 14:16; Ответить: alexdrob
Сообщение #4


(Doc.X @ 2.2.2011, 13:17) *
Вы переопределяете перченную $res и поэтому внешний цикл останавливается

Это не должно повлиять.


[PHP]$category = mysql_query ("SELECT * FROM `category`");
while ($res = mysql_fetch_assoc($category))
{
echo $res['name'];

$idw = $res['id'];

$cat = mysql_query ("SELECT * FROM `podcat` WHILE id_podcat = '$idw'");
echo 'Строк: '.mysql_num_rows($cat).'. Ошибка: '.mysql_error();
while ($res2 = mysql_fetch_assoc($cat))
{
echo $res2['name'];
}

}
[/PHP]
попробуйте так, что выведет?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 2.2.2011, 14:21; Ответить: LifeUP
Сообщение #5


Вы неправильно пишите, необходимо сперва записать все категории в одну переменную (массив) и тоже самое сделать с подкатегориями.
Получается в БД при таком раскладе уйдёт 2 запроса.

Вот пример:
[PHP]
// Достаю и заношу все категории в переменную $category
$category = array ();
$res = mysql_query ("SELECT * FROM `category`");

while ($row = mysql_fetch_assoc ($res))
{
$category[] = $row;
}
$count_category = count ($category);
unset ($res);


// Достаю и заношу все подкатегории в переменную $podcategory
$podcategory = array ();
$res = mysql_query ("SELECT * FROM `podcat`");

while ($row = mysql_fetch_assoc ($res))
{
$podcategory[] = $row;
}
$count_podcategory = count ($podcategory);
unset ($res);



// Вывожу на экран все категории и подкатегории

// Вывожу все категории
for ($c = 0; $c < $count_category; $c++)
{
echo '<p style="">' . $category[$c]['name'] . '</p>';

// Вывожу все подкатегории данной категории
for ($p = 0; $p < $count_podcategory; $p++)
{
// Если в данной категории есть подкатегории то вывожу их
if ($category[$c]['id'] == $podcategory[$p]['id_podcat'])
{
echo '<p style="padding-left:10px;">' . $podcategory[$p]['name'] . '</p>';
}
}
}
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 2.2.2011, 14:23; Ответить: alexdrob
Сообщение #6


(LifeUP @ 2.2.2011, 16:21) *
Получается в БД при таком раскладе уйдёт 2 запроса.

То есть не выводится именно потому что запросов больше 2х?)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 2.2.2011, 14:26; Ответить: LifeUP
Сообщение #7


нет вы меня не поняли, при его раскладе количество запросов в БД будет расти вместе с количеством подкатегорий, представим что их около 100, такое количество запросов в БД это не есть гуд. Я об этом)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 2.2.2011, 14:27; Ответить: alexdrob
Сообщение #8


Ну с этим согласен) Просто интересно почему же там не выводится)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 2.2.2011, 14:30; Ответить: LifeUP
Сообщение #9


Скоро узнаем)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 2.2.2011, 15:22; Ответить: Mulder_hb
Сообщение #10


Вы так копипастом и вставляете код?
(scva @ 2.2.2011, 12:47) *
"SELECT * FROM `podcat` WHILE id_podcat = '$idw'"
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБезанкорный прогон по базе 1600 000 сайтов из DMOZ
44 aleggator 13780 10.3.2024, 18:29
автор: kuprum
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСтатейное продвижение ваших сайтов по качественной базе с тИЦ
тИЦ 10+
236 Intersect 257941 6.3.2024, 14:40
автор: ArchiDOM
Открытая тема (нет новых ответов) Нужна рассылка по емаил базе сео-студий
0 kasey7 684 2.3.2024, 23:13
автор: kasey7
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 729 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Бесплатно: сделаю выборку ключевых слов по базе Пастухова
16 TimurR 5045 26.12.2020, 22:40
автор: Filadelso


 



RSS Текстовая версия Сейчас: 24.4.2024, 8:49
Дизайн