Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]płaska baza i menu rozwijane
lecter007
post 11.05.2011, 10:10:54
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.05.2011

Ostrzeżenie: (0%)
-----


Mam chyba dość skomplikowane pytanie... otóż mam bazę opartą na pliku txt (baza.txt), który wygląda tak:

nr \ id \ nazwa \ tresc \ podmenu
0||1||główna||Witamy na stronie||0
1||2||jeden||pierwsza podstrona||0
2||3||dwa||druga podstrona.||0
3||4||trzy||trzecia podstrona||2
4||5||cztery||czwarta podstrona||2

Generalnie mam skrypt który odczytuje zawartość pola "nazwa" i robi z tego zakładki menu. Ale chciałbym też żeby było podmenu... Tzn. jeśli w polu "podmenu" jest np. wartość 2, to chodzi mi o to, żeby ta podstrona (a konkretnie link do niej) była jako podmenu zakładki głównej o ID 2 - jako link w menu rozwijanym.

Kod
<ul>
<?
$arrBase = file('baza.txt');
foreach ( $arrBase as $strLine )
{
   list ( $nr, $id, $nazwa, $tresc, $podmenu ) = explode( "||", $strLine );
     $arrReturns = explode( "||", $strLine );
     echo '<li><a "href="strona.php?page='.$nazwa.'">'.$nazwa.'</a></li>';
}
echo '</ul>';


Ma ktoś pomysł jak to zrobićquestionmark.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nekomata
post 11.05.2011, 11:20:33
Post #2





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

Ostrzeżenie: (0%)
-----


Ja robiłem coś podobnego na MySQL w topic'u : http://forum.php.pl/index.php?showtopic=174822 , może Cię natchnie ... albo poczytaj o nested set .

Ten post edytował nekomata 11.05.2011, 11:20:54
Go to the top of the page
+Quote Post
ghastblood
post 11.05.2011, 11:27:56
Post #3





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


mogę się mylić ale czy nie wystarczy wstawić operatora warunkowego

  1. if($parent = $child) {}


$parent = id głównej strony
$child = id podstrony

Go to the top of the page
+Quote Post
konole
post 11.05.2011, 11:32:19
Post #4





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Cytat(ghastblood @ 11.05.2011, 10:27:56 ) *
mogę się mylić ale czy nie wystarczy wstawić operatora warunkowego

  1. if($parent == $child) {}


$parent = id głównej strony
$child = id podstrony

Fixed
Go to the top of the page
+Quote Post
lecter007
post 11.05.2011, 12:37:40
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.05.2011

Ostrzeżenie: (0%)
-----


No właśnie nie wiem jak z tymi warunkami to zrobić...

Kod
$arrBase = file('baza.txt');
foreach ( $arrBase as $strLine )
{
   list ( $nr, $id, $nazwa, $tresc, $podmenu ) = explode( "||", $strLine );
     $arrReturns = explode( "||", $strLine );
if ($podmenu == 0) {
             echo '<li><a "href="strona.php?page='.$nazwa.'">'.$nazwa.'</a></li>';
    if ($podmenu == $id) {
        echo $nazwa;
}
}
}
echo '</ul>';

Takie coś nie za bardzo działa...
Go to the top of the page
+Quote Post
ghastblood
post 11.05.2011, 13:48:04
Post #6





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. $result = get_query("SELECT * FROM kategorie WHERE kat_rodzic = '0'");
  2. while ($data = get_array($result)) {
  3. echo '<b><a href="view.php?id='.$data[cat_id].'">'.$data['kat_nazwa'].'</b></a>';
  4. $result1 = get_query("SELECT * FROM kategorie WHERE kat_rodzic = '".$data['cat_id']."' ");
  5. while ($data1 = get_array($result1)) {
  6. echo'<li> - <a href="view.php?id='.$data1[kat_id].'">'.$data1['kat_nazwa'] . '</li></a>' ;
  7. }
  8. }


struktura bazy

id_menu
nazwa_menu
odnosnik
rodzic

działanie jeżeli rodzic = 0 kategoria główna
jeżeli rodzic = id_menu to jest to podkategoria danego menu


tu jest jeszcze jakiś art
http://free.xaa.pl/wielopoziomowe-menu-w-php/

Ten post edytował ghastblood 11.05.2011, 13:48:30
Go to the top of the page
+Quote Post
lecter007
post 11.05.2011, 16:29:23
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.05.2011

Ostrzeżenie: (0%)
-----


już prawie mam smile.gif aczkolwiek nie dokońca tak jak miało być ... wyróżnia mi podstronę o nazwie "jeden" jako podmenu, ale przypisuje ją do złej zakładki głównej.

Wychodzi tak:

- główna
- jeden
- dwa
--- trzy
- cztery

Kod który mam to:

Kod
      $file = file('baza.txt');
      foreach($file as $line) {
      $data[] = explode('||', $line);
      }
            foreach ($data as $klucz => $wartosc){
                   $id [$klucz]=$wartosc[1];
                 }
                  
                
       $lp=0;
       echo '<ul>';
          foreach ($id as $wartosc => $klucz){
                      if ($data[$wartosc][4]>$lp) echo '<ul>';
                      if ($data[$wartosc][4]<$lp) echo '</ul>';
                      echo '<li>'.$data[$wartosc][2].'</li>';
                     $lp= $data[$wartosc][4];
                                         }

     echo '</ul>';


Pewnie gdzieś mam głupi błąd ale nie mogę dojść gdzie sad.gif

Ten post edytował lecter007 11.05.2011, 16:29:58
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:32