Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmiana zawartości dwóch div-ów jednym kliknięciem.
Forum PHP.pl > Forum > Przedszkole
s340
Od rana szukam i albo nie ma, albo zmęczenie nie pozwala mi znaleźć rozwiązania: jak za pomocą jednego kliknięcia w menu i funkcji "include" zmienić zawartość dwóch divów na stronie?

dzięki i pozdrawiam
pedro84
Bez przeładowania strony? AJAXem
s340
A bez AJAX-a?
W PHP dopiero raczkuję a samo słowo AJAX brzmi dla mnie na tyle egzotycznie, że wiem na pewno, że sobie nie poradzę a gotowe rozwiązanie ciężko będzie znaleźć smile.gif
pedro84
Zapewne chcesz podstrony zrobić? Użyj forumowej szukajki - jest kilka dobrych tematów jak to możesz zrobić.

Przyda Ci się: switch(), $_GET.
s340
Dzięki za pomoc, poczytałem o "switch", jednak moja znajomość PHP jest bardziej intuicyjna smile.gif
Wykombinowałem cuś takiego jak na poniższym przykładzie. Kliknięcie w menu powoduje załadowanie do div-a "kolumna" jednej stronki a do div-a "srodek" innej stronki.

Czy fakt, że działa toto w pięciu przeglądarkach wystarczy, żeby uznać to za poprawne? Czy jednak muszę coś zmienić?

  1. <body>
  2. <!-- poczatek kontenera -->
  3. <div id="kontener">
  4.  
  5. <!-- poczatek menu -->
  6. <div id="menu">
  7. <li><a href="index.php?id=firma">FIRMA</a></li>
  8. <li><a href="index.php?id=galeria">GALERIA</a></li>
  9. <li><a href="index.php?id=kontakt">KONTAKT</a></li>
  10. </div>
  11. <!-- koniec menu -->
  12.  
  13. <!-- początek lewej kolumny -->
  14. <div id="kolumna">
  15. <?php
  16. if(empty($_GET['id']) or $_GET['id']=="firma"){
  17. include("o_firma.php");
  18. }
  19. ?>
  20. <?php
  21. if($_GET['id']=="galeria"){
  22. include("o_galeria.php");
  23. }
  24. ?>
  25. <?php
  26. if($_GET['id']=="kontakt"){
  27. include("o_kontakt.php");
  28. }
  29. ?>
  30. </div>
  31. <!-- koniec lewej kolumny -->
  32.  
  33. <!--początek prawej kolumny -->
  34. <div id="strona">
  35. <?php
  36. if(empty($_GET['id']) or $_GET['id']=="firma"){
  37. include("firma.php");
  38. }
  39. ?>
  40. <?php
  41. if($_GET['id']=="galeria"){
  42. include("galeria.php");
  43. }
  44. ?>
  45. <?php
  46. if($_GET['id']=="kontakt"){
  47. include("kontakt.php");
  48. }
  49. ?>
  50. </div>
  51. <!-- koniec prawej kolumny -->
  52.  
  53. <!-- poczatek stopki -->
  54. <div id="stopka"></div>
  55. <!-- koniec stopki -->
  56.  
  57. </div>
  58. <!-- koniec kontenera -->
  59.  
  60. </body>


Dzięki i pozdrawiam:)
Daiquiri
Pytasz o kod html czy php? Skorzystałabym mimo wszystko z rady pedro84 i switch. Sprawa jest prosta, robisz coś na zasadzie:
  1. switch ($_GET['id']) { // korzystamy z $_GET['id'] bo to zmienna informuje o tym, co wybraliśmy
  2. case "galeria":
  3. // tutaj robisz co chcesz, gdy użytkownik kliknie w link "galeria", np.
  4. include('galeria.php');
  5. break;
  6. case "kontakt":
  7. // analogicznie do "galeria"
  8. break;
  9. }
Możesz też skorzystać z parametru "default", którego to piękny opis znajdziesz w manualu smile.gif.


@s340 - co to jest intuicyjna znajomość PHP? smile.gif
s340
Cytat(Daiquiri @ 31.01.2011, 11:18:36 ) *
@s340 - co to jest intuicyjna znajomość PHP? smile.gif


Jestem grafikiem, ale staram się własnoręcznie tworzyć kompletne strony tzn. i grafikę i kod! Dawno temu wystarczał mi do tego wyłącznie html ale szybko się przekonałem, że przy bardziej rozbudowanych stronach powielanie stopek, nagłówków a zwłaszcza menu niepotrzebnie komplikuje i powiększa strony utrudniając przy tym jakiekolwiek zmiany. Z pomocą przyszła mi funkcja "include" w PHP. Zobaczyłem gdzieś przykład, mniej więcej zrozumiałem działanie i używam.
Okazuje się, że przez lata mi to wystarczało smile.gif
W powyższym przypadku posłużyłem się intuicją właśnie - jeżeli kliknięcie w menu w:
  1. <a href="index.php?id=galeria">GALERIA</a>

w div-e w którym została umieszczona funkcja:
  1. if($_GET['id']=="galeria"){
  2. include("galeria.php");
  3. }

powoduje wstawienie tam strony "galeria.php" to pomyślałem, że wystarczy w innym div-ie wstawić taką samą funkcję jedynie wywołującą inną stronę! Okazuje się - działa i mniej więcej rozumiem działanie tego "tworu".
Jedni mówią na to intuicja, inni kombinowanie smile.gif
Przyznam się natomiast, że moja nikła znajomość PHP powoduje, iż Twojej porady nie rozumiem zupełnie - nie wiedziałbym gdzie wpisać to co mi podałeś - domyślam się, że pewnie w jednym z div-ów, ale w którym nie wiem, a co wpisać w drugim - tym bardziej.
Byłbym wdzięczny za podpowiedź czy mogę używać tej funkcji w postaci jak podałem, a jeżeli nie to dlaczego?

Dzięki i pozdrawiam.
Daiquiri
Po prostu switch jest mechanizmem, działającym w określony sposób - w Twoim przypadku, nie widzę powodu dla którego lepiej pisać za każdym razem warunek. Na forum był już wątek o tym, możesz poczytać. Co do działania switcha... nie kombinuj. To jest takie, jak widzisz w pseudokodzie:
  1. switch($ID) // informacja, że dla wartości tej zmiennej będziemy rozpatrywać następujące przypadki:
  2. case "galeria": // jeżeli zmienna $ID ma wartość "galeria", w Twoim przypadku jeżeli ktoś ustawił tę wartość klikając w link index.php?ID=galeria
  3. // tutaj wstawiasz to, co ma się wykonać, jeżeli użytkownik kliknął w galerię, np.
  4. include('galeria.php');
  5. break; // kończymy ten przypadek
  6. case "kontakt": // przypadek w którym $ID = "kontakt"
  7. // tutaj wstawiasz to, co ma się wykonać, jeżeli użytkownik kliknął w kontakt, np.
  8. echo "kliknąłeś w kontakt";
  9. break; // kończymy ten przypadek
  10. // itd.


PS. Żartowałam z tą intuicyjnością. Dla mnie albo ktoś "ogarnia" PHP, albo nie - reszta to, wspomniane przez Ciebie, kombinowanie smile.gif.
s340
Cytat(Daiquiri @ 31.01.2011, 12:16:02 ) *
nie widzę powodu dla którego lepiej pisać za każdym razem warunek.

OK. Nareszcie ja paniał switch-a smile.gif
Dzięki.
fiszol
fajnie jeszcze w switchu określić defaulta na wypadek gdyby komuś przyszło do głowy dopisać coś w pasku adresu (a na tym forum aż roi się od "dopisywaczy":) )

  1. default:
  2. echo "404 :-("; // albo jakiś redirect czy strona błędu
  3. break;
s340
Cytat(fiszol @ 3.02.2011, 09:45:20 ) *
fajnie jeszcze w switchu określić defaulta na wypadek gdyby komuś przyszło do głowy dopisać coś w pasku adresu (a na tym forum aż roi się od "dopisywaczy":) )

Z dumą mogę napisać, że doszedłem do tego sam smile.gif
Tzn. wiedziałem tyle, że musi być taka opcja - w mojej poprzedniej wersji kodu była funkcja: "if(empty...." choć po niewczasie domyślam się, że to trochę mało i na dopisywanie głupot w pasku adresu pewnie by nie pomglo.

A co do dopisywania to ja jestem za. Spodziewałem się, że jeżeli pada pytanie w "Przedszkolu" (podtytuł: Raczkujesz w tematyce WWW....) to odpowiedź będzie raczej "łopatologiczna" smile.gif Aż się boję zajrzeć na dział "PHP". Tam pewnie nie będę w stanie zrozumieć pytań a odpowiedzi to mi co najwyżej dadzą... ból głowy smile.gif

pozdrawiam ohmy.gif)

PS. Byłbym ostatnim niewdzięcznikiem gdybym nie docenił odpowiedzi jakie tu spotykam, a lakoniczność niektórych zmusza mnie do głębszego "pogrzebania" i pomaga problem zrozumieć lepiej. Niemniej jednak na naukę to ja już za stary jestem i czasem wolałbym dostać coś "na tacy" smile.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.