Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: menu na MySQL'u
Forum PHP.pl > Forum > Bazy danych > MySQL
invx
zaczolem sie uczyc MySQL i chce napisac system menu i nie wiem jak podzielic baze. bo w jednej tabeli moze byc tylko jedno pole z automatycznym nadawaniem ID a do menu potrzebuje dwa takie pola jedno dl alinkow drugie dla calych menu. jak to najlepiej zrobic zeby potem nie bylo problemow z edycja i zeby wsystko ladnie dzialalo smile.gif
DreeD
na 2 tabelach ofcorz...
tabela od menu ma sobie jakis tam id.
tabela od linka ma sobie jakies tam id, a drugie pole tej tabeli to id tabeli z menu smile.gif proste i logiczne tongue.gif

edit: z wyswietlaniem to juz do innego dzialu forum smile.gif
invx
dzieki wlasnie z tym mialem watpliwosci smile.gif)
BzikOS
Można to zrobić ładnie na jednej tabeli.
ID ID_parent Name Link
1 0 Menu 1
2 0 Menu 2
3 0 Menu 3
4 1 Podmenu 1.1 podmenu1.php
5 1 Podmenu 1.2 podmenu2.php
6 2 Podmenu 2.1
7 3 Podmenu 3.1
8 4 Podpodmenu 1.1.1 smile.gif
itd...

A więc powstanie menu:

Kod
- Menu 1

    Podmenu 1.1

        Podpodmenu 1.1.1

    Podmenu 1.2

- Menu 2

    Podmenu 2.1

- Menu 3

    Podmenu 3.1
invx
hmm.. BzikOS a jak to skryptem wyswietlic??
BzikOS
[php:1:ae580a103a]<?php
$result = mysql_query("SELECT * FROM menu ORDER BY id_parent");

$resultArr = Array();
while( $row = @mysql_fetch_assoc( $result ) )
$resultArr[$row['id_parent']][] = Array( 'id' => $row['id'], 'name' => $row['name'], 'link' => $row['link'] );

x( $resultArr[0], $resultArr );


function x( $tempArr, &$resultArr )
{
echo('<ul>');

foreach( $tempArr as $aVal )
{
echo( "<li><a href="".$aVal['link']."">" . $aVal['name'] . "</a></li>n" );

if( is_array( $resultArr[$aVal['id']] ) )
{
x( $resultArr[$aVal['id']], $resultArr );
}
}

echo('</ul>');
}
?>[/php:1:ae580a103a]
invx
nic z tego kodu nie rozumie sad.gif a zwlaszcza tych funkcji nie mozna by zez nich bo narazie jestem poczatkujacy i nie lapie tego sad.gif
invx
i jakby jeszce zmienne mialy jakies polskie bardzej cos mowiace nazwy smile.gif)
BzikOS
Cytat
nic z tego kodu nie rozumie sad.gif a zwlaszcza tych funkcji nie mozna by zez nich bo narazie jestem poczatkujacy i nie lapie tego sad.gif


A sądzisz, że gdyby się dało to klepałbym na darmo ten kod? :|

Co do nazw zmiennych... hmm za wiele ich tam nie ma, a i nazwy nie są jakieś wyszukane...
temp - od temporary, czyli tymczasowe
Arr - od Array, czyli tablica
result - jakiś rezultat (w tym przypadku rezultat zapytania do bazy)
row - wiersz wyniku zapytania do bazy
aVal - z przyzwyczajenia tak nazywam zmienne w pętli foreach

Funkcja x działa na zasadzie rekurencji (wywołuje samą siebie), a więc zagłębia się w strukturze, w tym przypadku menu. Napisałem to najprościej jak umiem - sam wybadaj co się w którym miejscu dzieje, bo nie będe opowiadania na ten temat pisał.
invx
oki dzieki smile.gif
invx
ale nie prosciej by bylo jednak na dwuch osobnych tablicach?questionmark.gif bo tak jak napisal BzikOS to skomplikowane bedzie generowanie tych komurek w tablicy...
BzikOS
To była propozycja, a nie nakaz. Zrób jak uważasz za słuszne.
invx
ale hodzi mi czy na 2 tabelkach by nie bylo prosciej z wyswietlaniem, mogl by mi ktos podrzucic jak by to wygladalo w dwoch osobnych tabelkach??
DeyV
Cytat
mogl by mi ktos podrzucic jak by to wygladalo w dwoch osobnych tabelkach??

Oj - ja mam brzydkie wrażenie że to nie w ten sposób powinna przebiegac nauka.
Pokazane tu skrypty w zupełności powinny wystarczyć do nauczenia się pobierania danych z MySQL i wyświetlania ich w odpowiednich pętlach.

Przypominam więc - że forum służy do nauki, ale leniów tu nie tolerujemy.
invx
ale nigdy czegos takiego na oczy nie widzialem, nie mam pojecia jak sie pobiera dane z dwuch atbelek na raz... pmuzcie...
shima
Tak samo jak z jednej, tylko podajesz dwie nazwy. Wydaje mi się, ze nie zajrzałeś do żadnych tutoriali i szukasz jeleni. Proponuję:
http://www.sqlcourse.com/
invx
tam nic po polsku nie ma 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.