Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja Include(); + Mysql
Forum PHP.pl > Forum > Przedszkole
mpps
kolejna zagwostka dry.gif :

Kod
while ($line = mysql_fetch_row($row_count)) {
printf("<A HREF=\"index.php?id=%s\">%s</A><BR>", $line[2], $line[1]);

if(!isset($id)){
    include("jakas_strona.htm"); // domyślna wyświetlana strona
}
else{
    include($_GET['id']);
}


wyjaśnienia:
- line[2] to rekord w bazie z linkiem do jakiejs_podstrony
- line[1] to nazwa linku do jakiejs_podstrony wyświetlana na stronie w menu
- jest jeszcze jedna komórka w tabeli, poprzedzająca pozostałe, gdzie zapisany jest indeks danej podstrony (przyjmijmy line[0]).
Czyli zapis w bazie danych wygląda np. tak:

indeks | nazwa linku | adres URL podstrony
1 | strona 1 | strona_1.htm
2 | strona 2 | strona_2.htm

itd.

i teraz:
kliknięcie na link spowoduje przekazanie wartości w URL: id=jakas_strona.htm (przekazywanie danych odbędzie się za pomocą metody GET). A więc adres w pasku adresu będzie wyglądał tak: www.domena.pl/index.php?id=jakas_strona.htm. Dzięki temu zostanie wyświetlona (includowana) dana podstrona.

Pytanie:
jak podstawić zmienną, która będzie pobierała dane z URL, w którym zamiast dokładnego adresu URL po zmiennej 'id' podany będzie indeks (na zasadzie: www.domena.pl/index.php?id=1 - gdzie 1 to indeks) kojarzony z podstroną strona_1.htm, która ma zostać wyświetlona?
Rozumiem, że ta zmienna powinna być podstawiona pod 'id' w include($_GET['id']);

pozdro
marcin
tumczasty
chyba tak:
  1. <?php
  2. while ($line = mysql_fetch_row($row_count)) {
  3. echo('<A HREF=\"index.php?id='.$line[0].'\">'.$line[1].'</A><BR>');
  4. if($line[0]==$_GET['id']) $podstr=$line[2];
  5. }
  6.  
  7. if(!isset($podstr)){
  8. include('jakas_strona.htm'); // domyślna wyświetlana strona
  9. }
  10. else{
  11. include($podstr);
  12. }
  13. ?>

kod php tu, na forum, dawaj nie do znacznika [CODE], tylko do [php]
mpps
thnx!
ruszyło po drobnych korektach (potrzebnych do dostosowania do reszty kodu).
tego właśnie potrzebowałem!
idąc dalej tą drogą: jeśli by chcieć podzielić wyświetlane menu np. na dwa menu znajdujące się po lewej i prawej stronie (oczywiście będą dwie tabele w bazie - jedna dla lewego menu i jedna dla prawego) na zasadzie:
  1. <?php
  2. while ($line_l = mysql_fetch_row($row_count_l)) {
  3. echo('<A HREF=\"index.php?id='.$line_l[0].'\">'.$line_l[1].'</A><BR>');
  4. if($line_l[0]==$_GET['id']) $podstr=$line_l[2];
  5. }
  6.  
  7. if(!isset($podstr)){
  8. include('jakas_strona.htm'); // domyślna wyświetlana strona
  9. }
  10. else{
  11. include($podstr);
  12. }
  13.  
  14. while ($line_r = mysql_fetch_row($row_count_r)) {
  15. echo('<A HREF=\"index.php?id='.$line_r[0].'\">'.$line_r[1].'</A><BR>');
  16. if($line_r[0]==$_GET['id']) $podstr=$line_r[2];
  17. }
  18. ?>


dlaczego taki podział? aby wynik był wyświetlany pośrodku strony pomędzy lewym i prawym menu.
niestety taki sposób rozmieszczenia kodu (chodzi o prawe menu) nie powoduje wyświetlania kojarzonej podstrony po kliknięciu na link z prawego menu, tylko domyślną, mimo prawidłowego przekazania do URL-a sad.gif.
jak to ominąć?
oczywiście przemieszczenie części kodu odpowiedzialnej za prawe menu przed część z includowaniem powoduje, że wszystko działa bez zarzutu, lecz oba menu są wtedy po tej samej stronie sad.gif

i jeszcze jedno:

wiem, że wystarczy podstawić:
print("Przykro mi - strona, której szukasz, jest w tej chwili niedostępna");
w miejscu:

  1. <?php
  2.  
  3. if(!isset($podstr)){
  4. include('jakas_strona.htm'); // domyślna wyświetlana strona
  5. }
  6. else{
  7. include($podstr);
  8. }
  9.  
  10. ?>


aby w razie braku wyniku do wyświetlenia wyświetlał się powyższy tekst zamiast domyślnej strony ale jak wtedy wyświetlać domyślną stronę czy raczej domyślnie środek startowej strony...?

pozdro
m
tumczasty
no to trzeba kod przemieścić, ale prawe menu wyświetlić po właściwej stronie

czy załapałem, o co chodziło:

  1. <?php
  2. while ($line_l = mysql_fetch_row($row_count_l)) {
  3. echo('<A HREF=\"index.php?id='.$line_l[0].'\">'.$line_l[1].'</A><BR>');
  4. if($line_l[0]==$_GET['id']) $podstr=$line_l[2];
  5. }
  6.  
  7. $bufor='';
  8. while ($line_r = mysql_fetch_row($row_count_r)) {
  9. $bufor.='<A HREF=\"index.php?id='.$line_r[0].'\">'.$line_r[1].'</A><BR>';
  10. if($line_r[0]==$_GET['id']) $podstr=$line_r[2];
  11. }
  12.  
  13. if(isset($_GET['id'])) {
  14. if(!isset($podstr)){
  15. print('Przykro mi - strona, której szukasz, jest w tej chwili niedostępna.');
  16. }
  17. else{
  18. include($podstr);
  19. }
  20. } else
  21. include('jakas_strona.htm'); // strona domyślna
  22.  
  23. echo $bufor;
  24. ?>


pamiętaj, że w takim układzie indeksy w obu tabelach nie mogą się dublować

pozdrawiam
t
mpps
Bardzo Ci dziękuję - oczywiście pomogło smile.gif
muszę trochę więcej poczytać i... czasami pomyśleć winksmiley.jpg

czy miałbyś może sposób na rozwiązanie drugiej części pytania?

pozdrawiam
m

ps.
obiecuję pomyśleć winksmiley.jpg

ps.1
dużo czasu poświęcasz na kodowanie?
pytanie chyba retoryczne... biggrin.gif
tumczasty
a czy "druga połowa" mojego ostatniego kodu nie rozwiązuje tego problemu? (może go nie zrozumiałem...)

skoro pytanie jest retoryczne, to odpowiadać nie będę smile.gif
mpps
sorki, dopiero po odpisaniu Tobie zauważyłem tą część kodu blink.gif
i już pewnie się nie zdziwisz, jak powiem, że działa bez zarzutu. winksmiley.jpg
jeszcze raz thnx!!
jeśli będziesz miał ochotę zobaczyć wyniki - zapraszam: www.mpps.asternet.pl
lub napisać - też zapraszam: mpps@asternet.pl

... może ja będę mógł w czymś Ci pomóc?
kto wie...

pozdro
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-2025 Invision Power Services, Inc.