Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: menu w php + mysql
Forum PHP.pl > Forum > Gotowe rozwiązania
mpps
witam,
mam taki problem:
najpierw kod...
  1. <?
  2. $sql_query = (&#092;"SELECT * FROM menul ORDER BY menul_nr ASC\");
  3. $row_countl = mysql_query($sql_query);
  4. $sql_query = &#092;"SELECT * FROM menul_sub ORDER BY menul_sub_nr ASC\";
  5. $row_countl_sub = mysql_query($sql_query);
  6. $bufor_menul_sub='';
  7. while ($linel_sub = mysql_fetch_row($row_countl_sub)) {
  8.     // construct a hyperlink from the 2 data elements of record in table
  9.     $bufor_menul_sub.='<TR><TD><A HREF=\"index.php?id=2&idsub='.$linel_sub[0].'\">'.$linel_sub[2].'</A></TD></TR>';
  10.     if($linel_sub[0]==$_GET['sub']) $podstr=$linel_sub[3];
  11. }
  12. ?>

powyżej wszystko działa:
1. linki w menu są wyświetlane
2. jeśli trochę zmienię kod, usuwając "id=2&" (i poniżej, zamiast $linel[0]==$_GET['id'] będzie $linel[0]==$_GET['idsub'] oraz jeszcze niżej zamiast if(isset($_GET['id'])) będzie if(isset($_GET['idsub'])) ), to po kliknięciu na link strony "podmenu" otwierają się, lecz strony głównego menu (rzecz jasna) nie.
  1. <?
  2. while ($linel = mysql_fetch_row($row_countl)) {
  3.     // construct a hyperlink from the 2 data elements of record in table
  4.     echo('<TR><TD><A HREF=\"index.php?id='.$linel[0].'\">'.$linel[1].' -</A></TD></TR>');
  5.     if($linel[0]==$_GET['id']){
  6.         if($linel[0]==2){
  7.             echo $bufor_menul_sub;    //tu jest wyświetlane podmenu
  8.         }
  9.         $podstr=$linel[2];    //a tu przypisanie rekordu do zmiennej, której wartość jest includowana w dalszej części
  10.     }
  11. }
  12. ?>

powyżej:
1. linia 6 i 7 - wyświetlenie strony odpowiadającej zapytaniu (o id=2) oraz wyświetlenie podmenu - działa.
  1. <?
  2. if(isset($_GET['id'])){
  3. include($podstr);
  4. }
  5.  
  6. ?>

I w końcu opis problemu:
po kliknięciu na któryś z linków podmenu ($bufor_menul_sub) powinna się otworzyć strona przypisana do linku, niestety, wydaje mi się, że pierwszy warunek
  1. <?php
  2. if($linel[0]==2)
  3. ?>

powoduje, że wciąż jest wyświetlana strona o id=2.
Jak to rozwiązać?
Dzięki za pomoc!
Linandar
Ja to rozwiązałem w następujący sposób:
$id pobieram z adresu.
  1. <?php
  2. function ReadRecord($result, $up_pid)
  3. {
  4.       $row=mysql_fetch_row($result);
  5.       $url1 = $row[0];
  6.       $up_id = $row[1];
  7.       $url2 = $row[2];
  8.       $title = $row[3];
  9.       $active = $row[5];
  10.       if (!$row  || $up_id==&#092;"0\"){
  11.             $contents=&#092;"\";
  12.       }
  13.       else{
  14.             if ($active==&#092;"0\"){$url = \"<!--Strona: \".$title.\" jest nieaktywna//-->\";}
  15.             else{
  16.                   if ($url2==&#092;"0\") {
  17.                         if ($up_pid==$url1) {
  18.                               $url = &#092;"•&nbsp;&nbsp;\".$title.\"<br>rn\";
  19.                         }
  20.                         else {
  21.                               $url = &#092;"•&nbsp;&nbsp;<A HREF=\"\".$domena.\"pages.php?id=\".$url1.\"\" class=\"nav\">\".$title.\"</A><br>rn\";
  22.                         }
  23.                   }
  24.                   else{
  25.                         $url = &#092;"•&nbsp;&nbsp;<A HREF=\"\".$url2.\"\" class=\"nav\">\".$title.\"</A><br>rn\";
  26.                   }
  27.             }
  28.             $contents = $url;
  29.       }
  30.       return $contents;
  31. }
  32.  
  33. function readDB($id, $up_pid)
  34. {
  35.       $query = &#092;"SELECT * FROM \".PAGES_TABLE.\" WHERE up_id = $id ORDER BY title ASC\";
  36.       $result=mysql_query($query);
  37.       if (!$result){
  38.             message_die(GENERAL_ERROR, 'Problem z połączeniem z bazą danych!', '', __LINE__, __FILE__, $sql);
  39.       }
  40.       do{
  41.       $record = ReadRecord($result, $up_pid);
  42.       $contents .=$record;
  43.       }
  44.       While ($record <>&#092;"\");
  45.       return $contents;
  46. }
  47.  
  48. $query = &#092;"SELECT up_id FROM \".PAGES_TABLE.\" WHERE pid=\".$id.\"\";
  49. $up_page=mysql_query($query);
  50. $up_page=$row[1];
  51. $up_pid = $id;
  52. $tempStr=readDB($id, -1);
  53. $tempStr1=readDB($up_page, $up_pid);
  54.  
  55.  
  56. if ($tempStr<>&#092;"\" || $pid<=1){
  57.       if ($id>&& $up_page>0){
  58.              $menu_poziom_up ='•&nbsp;&nbsp;<A HREF=\"pages.php?id='.$up_page.'\" class=\"nav\">Up</A><br>';
  59.       }
  60.       else {
  61.           $menu_poziom_up='';
  62.            }
  63.       if ($tempStr1<>&#092;"\"){
  64.              $menu_level_up='<tr><td class=\"row2\" align=\"left\"><span class=\"gensmall\" style=\"line-height:150%\">' . $tempStr1 . '</span></td></tr>';
  65.       }
  66.       else{
  67.            $menu_level_up='';
  68.            }
  69.  
  70.       $menu='<span class=\"nav\">'.$menu_poziom_up . $tempStr . $menu_level_up.'</span>' ;
  71. }
  72. else{
  73.     $menu='';
  74.     }
  75. ?>


Struktura BD:
  1. CREATE TABLE `pages` (
  2. `pid` int(10) NOT NULL AUTO_INCREMENT,
  3. `up_id` int(10) NOT NULL DEFAULT '1',
  4. `url` varchar(100) NOT NULL DEFAULT '0',
  5. `title` varchar(255) NOT NULL DEFAULT '',
  6. `subtitle` varchar(255) NOT NULL DEFAULT '',
  7. `active` int(1) NOT NULL DEFAULT '0',
mpps
Dzięki za propozycję rozwiązania.
Mam z nim jednak problem...
Cały czas wyświetla mi się ostrzeżenie:
  1. <?php
  2. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in sciezka&#092;..index.php on line 17
  3. ?>

Dodałem przed funkcją...:
  1. <?php
  2. function ReadRecord($result, $up_pid)
  3. ?>

...co następuje... (oczywiście jestem podłączony do bazy danych, a tabela istnieje i jest wypełniona danymi):
  1. <?php
  2. $query = &#092;"SELECT * FROM pages WHERE up_id = $id ORDER BY title ASC\";
  3. $result=mysql_query($query);
  4. ?>

bez rezultatu...
czego mi brakuje?
help...?
rolleyes.gif
pzdr
marcin
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.