Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]linki na stronie - jak zrobic i czego uzyc?
Forum PHP.pl > Forum > Przedszkole
InosU31
Witam

Probuje robic strone w php i nie mam pojecia jak zabrac sie za odnosniki do innych stron..

Chodzi mi o to ze na stronie glownej bede mial kilkanascie linkow do roznych podstron cos na styl :

MENU
jakis_link
jakis_inny
jeszce_jeden

OPCJE
jakis_link
jakis_inny
jeszce_jeden

itd...

I teraz nie wiem czy napisac jakas klase zeby mi generowala switch'a i przypadki tak ze jak bede mial przypadek MENU to wyswietli mi linki z MENU, czy uzyc normalnie switcha w index.php albo w osobnym pliku i zainkludowac go pozniej, albo za pomoca if'a, czy uzyc bazy danych do zapisania nazw tych linkow?

jesli uzyje switcha to bedzie tych przypadkow b.duzo:/ chialbym jakos zautomatyzowac to zebym pozniej mogl w panelu aministracyjnym np. dodac sobie kolejna"ramke" z nazwa i linkami no i przedewszystkim skrocic kod.

Jak wy to robicie? czego uzywacie??

z gory dzieki za podpowiedzi

Pozdrawiam
zelu
Możesz stworzyć sobie osobny plik, w którym będziesz miał tylko menu, czyli np:

  1. <ul>
  2. <li><a href="...">Link 1</li>
  3. <li><a href="...">Link 2</li>
  4. <li><a href="...">Link 3</li>
  5. <li><a href="...">Link 4</li>
  6. <li><a href="...">Link 5</li>
  7. ...
  8. <li><a href="...">Link n</li>
  9. </ul>


i plik z taka zawartością, później includujesz w konkretnej stronie/podstronie. Ta metoda ma taką zaletę, że jeżeli chcesz coś dodać/zmienić w menu, to robisz to tylko w jednym pliku.

No ale to jest tylko jedna z metod... Ten problem możesz rozwiązać co najmniej na kilkanaście innych sposobów...

Pozdrawiam
tomsi
W bazie danych tworzysz sobie tabele menu. Będziesz w niej przechowywał np. takie dane: id, nazwa (np. MENU, OPCJE, jakis_link, inny_link, itd), sciezke_dostepu_do_pliku, glowna_kategoria, podkategoria).

w glowna_kategoria i podkategoria będziesz sobie zaznaczał czy chcesz aby ten link był jako glowna_kategoria (wtedy możesz sobie zrobić żeby napis był dużymi literami, innym kolorem, itp) albo podkategoria (i też wtedy sobie formatujesz jak Ci się podoba).

Piszesz sobie skrypt odpowiedzialny za automatyczne tworzenie linków. Za pomoca pętli pobierasz sobie wszystkie rekordy z bazy i tworzysz linki. Musisz jakimś warunkiem sprawdzić czy jest to glowna_kategoria czy podkategoria żeby rozróżnić, który szablon linku użyć.

P.S.
Stwórz sobie jeszcze jedno pole w bazie które będzie grupowało podkategorie do odpowiedniej glowna_kategoria żeby nie było tak że podkategoria z MENU wczyta się w OPCJE.
Kredka29
Jeżeli nie masz SQL'a, to robisz menu w np. menu.php
a w index.php, tam gdzie ma być menu dajesz
  1. <?php
  2. include "menu.php";
  3. ?>

Możesz jeszcze zrobić linki typu page.php?go=strona1
Wtedy robisz plik page.php i wklejasz do niego:
  1. <?php
  2. $go=$_GET['go'];
  3. $url=$go.'.php';
  4. if (file_exsist($url))
  5. {
  6. inlude $url;
  7. }
  8. else
  9. {
  10. echo 'Error 404';
  11. }
  12. ?>

Teraz w menu.php dodawaj linki w stylu
  1. *<a href="page.php?go=strona1">Strona1</a>
  2. *<a href="page.php?go=strona2">Strona2</a>
  3. *<a href="page.php?go=strona3">Strona3</a>
  4. *<a href="page.php?go=strona4">Strona4</a>


Uwaga: Po wywołaniu page.php?go=strona1, otworzy się strona strona1.php, a po wejściu na page.php?go=strona2 - strona2.php. Oczywiście nazwy mogą być dowolne, a rozszerzenie (w tym wypadku *.php), możesz zmienić na html, wpisując $url=$go.'.html'; zamiast $url=$go.'.php';
InosU31
Cytat(tomsi @ 1.05.2009, 10:28:52 ) *
W bazie danych tworzysz sobie tabele menu. Będziesz w niej przechowywał np. takie dane: id, nazwa (np. MENU, OPCJE, jakis_link, inny_link, itd), sciezke_dostepu_do_pliku, glowna_kategoria, podkategoria).

w glowna_kategoria i podkategoria będziesz sobie zaznaczał czy chcesz aby ten link był jako glowna_kategoria (wtedy możesz sobie zrobić żeby napis był dużymi literami, innym kolorem, itp) albo podkategoria (i też wtedy sobie formatujesz jak Ci się podoba).

Piszesz sobie skrypt odpowiedzialny za automatyczne tworzenie linków. Za pomoca pętli pobierasz sobie wszystkie rekordy z bazy i tworzysz linki. Musisz jakimś warunkiem sprawdzić czy jest to glowna_kategoria czy podkategoria żeby rozróżnić, który szablon linku użyć.

P.S.
Stwórz sobie jeszcze jedno pole w bazie które będzie grupowało podkategorie do odpowiedniej glowna_kategoria żeby nie było tak że podkategoria z MENU wczyta się w OPCJE.


NO dzieki :-) cos pokombinuje - mam juz zrobiona tabelke do przechowywania nazw tych naglowkoa i linkow i zalozylem ze nie bedzie ich wicej niz 10. zastanawiam sie czy nie zrobic drugiej tabelki do przechowywania wartosci tych linkow (czyli <a href=sciezka_do_pliku...). Cos pokombinuje;-)

a chcialem wiedziec jak wy to robicie bo sposobow jest kilka a ja bym chial jakos to zrobic zeby nie przekombinowac za bardzo;-)

Pozdrawiam:-)

juz sobie poradzilem dzieki:-)

mam teraz kolejny problem ...

mam dwie tabele - jedna obsluguje mi "ramki" z lewej strony a druga z prawej

czy istnieje mozliwosc zebym uzyl jednego case do 2 tabelek questionmark.gif

myslalem nad czyms takim :
  1. <a href="action=link&lewa_strona&id="jakies_id">jakis_tytul</a>

  1. <a href="action=link&prawa_strona&id="jakies_id">jakis_tytul</a>


tylko nie wiem jak to przeniesc do skryptu tak zeby mi to dzialalo:/
mam cos takiego :
  1. <?php
  2. case "edytujl":
  3.    
  4.        if (isset($_GET['id']))
  5.        {    
  6.        $result = $dbase->get_query("
  7.                        SELECT * FROM ramka_l
  8.                        WHERE id = ".$_GET['id']."
  9.                        ");
  10.                        
  11.            if ($result)
  12.            {
  13.            $ramka = new cTemplate;
  14.            
  15.                $ramka->tassign['nagl'] = $result[0]['naglowek'];
  16.                $ramka->tassign['kol'] = $result[0]['link1']."<br>";
  17.                $ramka->tassign['kol1'] = $result[0]['link2']."<br>";
  18.                $ramka->tassign['kol2'] = $result[0]['link3']."<br>";
  19.                $ramka->tassign['kol3'] = $result[0]['link4']."<br>";
  20.                $ramka->tassign['kol4'] = $result[0]['link5']."<br>";
  21.                $ramka->tassign['kol5'] = $result[0]['link6']."<br>";
  22.                $ramka->tassign['kol6'] = $result[0]['link7']."<br>";
  23.                
  24.                $ramka->tassign['opcje'] = "";
  25.                $page->tassign['main'] = $ramka->parse("common/ramka.htm");
  26.                $page->tassign['main'] .= $ramka->parse("common/edit_ramka.htm");
  27.            }    
  28.        }
  29.                        
  30.        
  31.        break;
  32.        
  33.        case "edytujr":
  34.    
  35.        if (isset($_GET['id']))
  36.        {    
  37.        $result = $dbase->get_query("
  38.                        SELECT * FROM ramka_p
  39.                        WHERE id = ".$_GET['id']."
  40.                        ");
  41.                        
  42.            if ($result)
  43.            {
  44.            $ramka = new cTemplate;
  45.            
  46.                $ramka->tassign['nagl'] = $result[0]['naglowek'];
  47.                $ramka->tassign['kol'] = $result[0]['link1']."<br>";
  48.                $ramka->tassign['kol1'] = $result[0]['link2']."<br>";
  49.                $ramka->tassign['kol2'] = $result[0]['link3']."<br>";
  50.                $ramka->tassign['kol3'] = $result[0]['link4']."<br>";
  51.                $ramka->tassign['kol4'] = $result[0]['link5']."<br>";
  52.                $ramka->tassign['kol5'] = $result[0]['link6']."<br>";
  53.                $ramka->tassign['kol6'] = $result[0]['link7']."<br>";
  54.                
  55.                $ramka->tassign['opcje'] = "";
  56.                $page->tassign['main'] = $ramka->parse("common/ramka.htm");
  57.                $page->tassign['main'] .= $ramka->parse("common/edit_ramka.htm");
  58.            }    
  59.        }
  60. ?>


a chialbym miec to w jednym case dla obu tabelek.

a wyswietlanie mam tak :
  1. <?php
  2. //------------------------LEWA STRONA RAMKA------------------------------
  3.    $result = $dbase->get_query("
  4.                        SELECT * FROM ramka_l
  5.                        ");
  6.                        
  7.    if ($result)
  8.    {
  9.        $leftr = new cTemplate;
  10.        $page->tassign['ramkal'] = "";
  11.        
  12.        foreach ($result as $record)
  13.        {
  14.            $leftr->tassign['nagl'] = $record['naglowek'];
  15.            $leftr->tassign['kol'] = "<a href=\"?action=link&id=".$record['id']."\">".$record['link1']."</a><br>";
  16.            $leftr->tassign['kol1'] = "<a href=\"?action=link&id=".$record['id']."\">".$record['link2']."</a><br>";
  17.            $leftr->tassign['kol2'] = "<a href=\"?action=link&id=".$record['id']."\">".$record['link3']."</a><br>";
  18.            $leftr->tassign['kol3'] = "<a href=\"?action=link&id=".$record['id']."\">".$record['link4']."</a><br>";
  19.            $leftr->tassign['kol4'] = "<a href=\"?action=link&id=".$record['id']."\">".$record['link5']."</a><br>";
  20.            $leftr->tassign['kol5'] = "<a href=\"?action=link&id=".$record['id']."\">".$record['link6']."</a><br>";
  21.            $leftr->tassign['kol6'] = "<a href=\"?action=link&id=".$record['id']."\">".$record['link7']."</a>";
  22.            
  23.            $leftr->tassign['opcje'] = "<a href=\"?action=dodajl&id=".$record['id']."\">>dodaj<</a> ";
  24.            $leftr->tassign['opcje'] .= "<a href=\"?action=edytujl&id=".$record['id']."\">>edytuj<</a> ";
  25.            $leftr->tassign['opcje'] .= "<a href=\"?action=usunl&id=".$record['id']."\">>usun<</a> ";
  26.            $page->tassign['ramkal'] .= $leftr->parse("common/ramka.htm");
  27.        }    
  28.    }
  29.    //-------------------------------------------------------------------------
  30.    
  31.    //------------------------PRAWA STRONA RAMKA------------------------------
  32.    $result = $dbase->get_query("
  33.                        SELECT * FROM ramka_p
  34.                        ");
  35.                        
  36.    if ($result)
  37.    {
  38.        $leftr = new cTemplate;
  39.        $page->tassign['ramkap'] = "";
  40.        
  41.        foreach ($result as $record)
  42.        {
  43.            $leftr->tassign['nagl'] = $record['naglowek'];
  44.            $leftr->tassign['kol'] = $record['link1']."<br>";
  45.            $leftr->tassign['kol1'] = $record['link2']."<br>";
  46.            $leftr->tassign['kol2'] = $record['link3']."<br>";
  47.            $leftr->tassign['kol3'] = $record['link4']."<br>";
  48.            $leftr->tassign['kol4'] = $record['link5']."<br>";
  49.            $leftr->tassign['kol5'] = $record['link6']."<br>";
  50.            $leftr->tassign['kol6'] = $record['link7'];
  51.            
  52.            $leftr->tassign['opcje'] = "<a href=\"?action=dodajr&id=".$record['id']."\">>dodaj<</a> ";
  53.            $leftr->tassign['opcje'] .= "<a href=\"?action=edytujr&id=".$record['id']."\">>edytuj<</a> "; // w to miejsce bym chial dac to :"prawa_strona"
  54.            $leftr->tassign['opcje'] .= "<a href=\"?action=usunr&id=".$record['id']."\">>usun<</a> ";
  55.            $page->tassign['ramkap'] .= $leftr->parse("common/ramka.htm");
  56.        }
  57. ?>


da sie tak zrobic zeby case sprawdzal mi ktora ramke kliknolem?? bo z id mi wychodzi ale nie wiem jak przerobic to zeby tez zmieniala sie prawa i lewa strona :/

Pozdrawiam

ps. mam nadzieje ze ktos to zrozumie co napisalem;-)
zelu
Ale dane masz i tak rozbite na 2 kolumny. Więc tak czy inaczej będziesz musiał 2 razy przelecieć po wynikach...

Jeżeli chcesz wszystko zrobić w jednym miejscu to może sensowniej by było zrobić jedną tabelę dla menu i dać w niej dodatkowe pole, które będzie rozgraniczało czy jest to lewe czy prawe menu.

I wtedy w switchu sprawdzisz wartość tego pola i wstawisz linka w odpowiednie miejsce?


Pozdrawiam
InosU31
Cytat(zelu @ 2.05.2009, 08:48:53 ) *
Ale dane masz i tak rozbite na 2 kolumny. Więc tak czy inaczej będziesz musiał 2 razy przelecieć po wynikach...

Jeżeli chcesz wszystko zrobić w jednym miejscu to może sensowniej by było zrobić jedną tabelę dla menu i dać w niej dodatkowe pole, które będzie rozgraniczało czy jest to lewe czy prawe menu.

I wtedy w switchu sprawdzisz wartość tego pola i wstawisz linka w odpowiednie miejsce?
Pozdrawiam


to ma sens:-) myslalem nad czyms takim zeby wybrac wszystko z dwoch tabelek i w zaleznosci od drugiego wyniku "lewa_strona" lub "prawa_strona" sprawdzac no ale sprobuje to przerobic na jedna tabelke;-) pozdrawiam :-)
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.