Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]płaska baza i menu rozwijane
Forum PHP.pl > Forum > Przedszkole
lecter007
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
nekomata
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 .
ghastblood
mogę się mylić ale czy nie wystarczy wstawić operatora warunkowego

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


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

konole
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
lecter007
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...
ghastblood
  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/
lecter007
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
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-2025 Invision Power Services, Inc.