выборка из базы

KorP

Новичок
выборка из базы

помогите пожалуйста...

есть база со значениями


name___________parent
раздел 1___________1
подраздел 1______ ***
подраздел 2______ ***

раздел 2___________1
подраздел 1______ ***
подраздел 2______ ***

(_____ - вместо пробелов)

и т.д. (полей там много, но остальные не критичны думаю)
в общем что требуется...
есть ссылки раздел 1, раздел 2, и т.д. нужно при переходе по ссылке выбирать подраздел 1, подраздел 2, и т.д. (т.е. ещё одно меню)...но как сделать выборку?
т.е. можно в ссылке добавить name и передавать его в запрос, но как сделать так, что бы он выбирал от этой строки (с переданным name), до следующей строки с parent=1?
 

Ord

Новичок
ссылка например

site.ru/index.php?page=1

if ($page>1)
{
...
зам запрос ...
select * from table where parent='$page'
}
 

KorP

Новичок
Ord ты не понял, как сделать ссылку и выбрать одну нужную строку я в курсе
мне же нужно выбрать несколько строк, с подразделами меню, которые находятся в таблице вместе с разделами меню...грубо говоря таблица:

раздел 1
подраздел 1
подраздел 2
раздел 2
подраздел 1
подраздел 2
раздел 3
подраздел 1
подраздел 2

и вот мне к примеру надо выбрать все подразделы (в таблице их больше чем в примере), которые относятся ко 2-му разделу...т.е. нужно выбрать строки, после нужного раздела (который передаётся в name) до следующего раздела (а смотреть по столбцу parent, т.к. разделы имеют значение 1, а подразделы любое число произвольное)

ps таблицу подобную не я создавал и не я её структуру и внос данных продумывал, переделывать как то не очень хочется...а выборку бы делать очень надо....
 

regi

Новичок
нужно, чтобы вид меню изменялся при выборе одного из пунктов и показывались подразделы этого раздела?
 

KorP

Новичок
Автор оригинала: regi
нужно, чтобы вид меню изменялся при выборе одного из пунктов и показывались подразделы этого раздела?
ну да, что то типа того...вы просто объясните как сделать данную выборку, если не трудно, как сделать ссылки и вывод на страницу я разберусь (вродь чуток шарю)...
 

regi

Новичок
PHP:
делаешь так, чтобы главное меню генерилось из базы:

 $main_q = "SELECT * FROM table WHERE parent=1";
 $main_r = mysql_query($main_q);

 while($main_row = mysql_fetch_array($main_r)){

  echo $main_row['name'];

  if(isset($_GET['page']) && $main_row['id'] == intval($_GET['page'])){
   $query = "SELECT * FROM table where parent='".intval($_GET['page'])."' ";
 $result = mysql_query($query);
   while($row = mysql_fetch_array($result)){
     echo '  '.$row['name'];
   };
  };

 };
 

KorP

Новичок
Автор оригинала: regi
PHP:
делаешь так, чтобы главное меню генерилось из базы:...[/QUOTE]
хм...спасибо, тока он выводит только разделы. а подразделов нету...
 

regi

Новичок
не совсем понял, но то, что понял, по-моему соответствует этому коду :)
 

KorP

Новичок
Автор оригинала: regi
не совсем понял, но то, что понял, по-моему соответствует этому коду :)
всё, блин...извините, просто пятница...разобрался, всё вродь оке. тока не могу понять - ссылка должна быть в каком формате? name=раздел......?
 

regi

Новичок
page=id_razdela. я надеюсь, у вас в таблице есть такое поле
 

KorP

Новичок
так...в общем выпил кофе, открыл глаза, увидил ещё одну фичу...
каждый раздел в таблице (который parent=1) имеет categoryID, и этот ID присваеивается в поле parent уже подразделам...т.е. надо выбрать из БД раздел, где name будет равно name, получить ID этого раздела, и выбрать из базы подразделы, где parent=ID...сам не понял чё сказал.......
 

regi

Новичок
ссылки вида ?page=categoryID должны быть и все будет работать
 

KorP

Новичок
Автор оригинала: regi
ссылки вида ?page=categoryID должны быть и все будет работать
хм...что то не работает...ссылка menu.php?page=805 (805 это categoryID одного из разделов)...скрипт выводит просто в строку все разделы...подразделами и не пахнет...:(

попробовал написать сам нечто подобное...
PHP:
     $query = "SELECT categoryID, name FROM SS_categories WHERE name=$name";

     $result = MYSQL_QUERY($query);
     $number = MYSQL_NUMROWS($result);
     $i = 0;
     if ($number > 0) {
     while ($i < $number){
     $productID = mysql_result($result,$i,"categoryID");
     $name = mysql_result($result,$i,"name");
     $i++;
     }
     }
     echo "$name<br>";

     $query = "SELECT categoryID, name FROM SS_categories WHERE parent=$productID";

     $result = MYSQL_QUERY($query);
     $number = MYSQL_NUMROWS($result);
     $i = 0;
     if ($number > 0) {
     while ($i < $number){
     $productID = mysql_result($result,$i,"categoryID");
     $name = mysql_result($result,$i,"name");
     $i++;
     echo "$name<br>";
     }
     }
тоже ругается...mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/zooinfo-ru/www/new/menu.php on line 13
 

KorP

Новичок
Автор оригинала: regi
$main_row['id'] замени на $main_row['categoryID']
да, что то сам не догнал заменить :( спасибо!
только вот он продолжает при этом отображать все разделы...
 

regi

Новичок
он и должен отображать все разделы+ если нажата ссылка - под нужным разделом отобразятся его подразделы
 

KorP

Новичок
а остальные разделы можно убрать?

и ещё такой вопрос...если допустим у раздела нет подраздела, то нужно, что бы скрипт обращался к другой базе и делал из неё уже другую выборку...как бы сделать эту проверку и "редирект" на другую базу?
 

KorP

Новичок
хм...написал вот так
PHP:
     if(mysql_num_rows($result) < 1){
     $query = "SELECT * FROM SS_products WHERE categoryID='".$main_row['categoryID']."' ORDER BY name";
     $result = mysql_query($query);
     echo $query;
     while($row = mysql_fetch_array($result)){

     $query = "SELECT * FROM SS_product_pictures WHERE productID='".$row['productID'];
     $result = mysql_query($query);
     echo $query;
     while($row_img = mysql_fetch_array($result)){
     echo $row['name']."&nbsp;&nbsp;".$row['Price']."&nbsp;&nbsp;".$row['in_stock']."&nbsp;&nbsp;".$row['productID']."<img src=www.shop.zooinfo.ru/products_pictures/".$row_img['filename']." border=0><br>";
     };
     };
     };
     };
и он чё то на mysql_fetch_array(): в обоих запросах жалуется...
 

regi

Новичок
зачем echo $query;
не используй одинаковые имена переменных - $query и $result - мало того, что возможны ошибки, так еще и сам потом запутаешься.
WHERE categoryID='".intval($_GET['page'])."' ORDER BY
 
Сверху