Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Otwieranie wielu odnośników w tabeli
Forum PHP.pl > Forum > Przedszkole
jackas95
mam w głównej części strony tabele do której są otwierane wszystkie linki i znam już taką metodę:
  1. <a href=index.php?q=costam>...</a>

  1. if($_GET['q']=="costam")
  2. {
  3. include("plik.php");
  4. }

ale ponieważ tych linków będzie bardzo dużo, to chciałbym uniknąć ciągłego wpisywania instrukcji include na stronie. zna ktoś może (pomijając iframe) prostsze rozwiązanie?
Matimor
Może require_once? Jeżeli plik jest już dołączony to nie wykona tego drugi raz, pomyśl może o cachowaniu strony?
mortus
@Matimor Autorowi chyba nie o to chodzi.
@jackas95 Może ten sposób będzie lepszy:
  1. if(isset($_GET['subpage']) && $_GET['subpage'] != '') {
  2. // zabezpieczenie przed próbą wywołania skryptów z innych katalogów
  3. $subpage = basename($_GET['subpage']);
  4. if(file_exists('pages/' . $subpage . '.html')) {
  5. include 'pages/' . $subpage . '.html';
  6. }
  7. }
  8. // i przykładowy odnośnik
  9. echo '<a href="?subpage=kontakt">Kontakt</a>;
W powyższym przykładzie pages to katalog, w którym znajdują się podstrony w html-u, ale mogą to być również pliki php.
jackas95
ok, tylko mam jeszcze taki problem, że chciałbym, aby po wejściu na stronę w tej komórce pojawiała się treść pewnego pliku iwpisałem coś takiego
  1. if(empty($_GET['q']){
  2. include("polecane.php");
  3. }
ale po zastosowaniu twojego sposobu ten mój już nie działa, bo za każdym razem ładowane są oba pliki. wymyśl coś jeszcze ;P
Psychopath
@jackas95
Użytkownik mortus napisał dobry skrypt, polecam ci przestudiowanie jakiejś książki o php, bo widzę, że jesteś trochę nieogarnięty jeszcze. Od siebie napisałem skrypt, który umożliwi ci wygodne dodawanie linków, może ci się przyda, poza tym, zrobiłem to bardzo podobnie do mortusa, z tą różnicą, że będziesz mógł includować pliki php.

  1. <?php
  2. // Zmienna określająca katalog, w którym będą strony do zinclude'owania, koniecznie z ukośnikiem na końcu
  3. $katalog = "podstrony/";
  4.  
  5. // Tworzy tablicę z elementami menu
  6. $linki = array(
  7. "glowna" => "Strona Główna",
  8. "galeria" => "Galeria zdjęć",
  9. "artykuly" => "Artykuły",
  10. "page1" => "Jakaś inna strona"
  11. );
  12.  
  13. // Menu
  14. foreach($linki as $nazwapliku => $tekst){
  15. echo '<a href="index.php?q='.$nazwapliku.'">'.$tekst.'</a><br>';
  16.  
  17. }
  18.  
  19.  
  20. // Sprawdza, czy zmienna "q" została określona (czyli, czy ktoś kliknął w odnośnik)
  21. if(isset($_GET["q"])){
  22. $strona = basename($_GET["q"]); // Zabezpieczenie przed wędrowaniem po innych katalogach
  23. $dir = $katalog.$strona.".php"; // Ścieżka do pliku
  24. include_once($dir);
  25. }
  26. ?>


Oczywiście jeżeli nie chcesz menu, to możesz usunąć pętle, która tworzy menu (całe foreach, łącznie z zawartością).
Jak to działa? Do tablicy array dodajesz po prostu "nazwa_pliku" => "tekst w menu". To chyba najwygodniejsze, jak masz dużo odnośników.
jackas95
dzięki, ale nie do końca o to mi chodziło, wystarczyłoby tylko zmodyfikować skrypt mortusa, aby po wejściu na stronę był wyświetlany jakiś plik w tej komórce tabeli, tak aby później strony do niej wczytywane nadpisywały zawartą wcześniej treść. i chyba masz racje, muszę trochę podszkolić swoje php ;]
Psychopath
No to nic bardziej prostszego. Po prostu wklejasz ten kod mortusa w miejsce (w tym wypadku tabele) w którym chcesz, żeby zawartość się pokazywała. Czyli, zakładając, że masz najprostszą tabelę jaką się da, robisz coś takiego:

  1. <table>
  2. <tr>
  3. <td>
  4. <?php
  5. if(isset($_GET['subpage']) && $_GET['subpage'] != '') {
  6. // zabezpieczenie przed próbą wywołania skryptów z innych katalogów
  7. $subpage = basename($_GET['subpage']);
  8. if(file_exists('pages/' . $subpage . '.html')) {
  9. include 'pages/' . $subpage . '.html';
  10. }
  11. }
  12. ?>
  13. </td>
  14. </tr>
  15. </table>

Ewentualnie, jeżeli nie chcesz sobie zaśmiecać kodu html, możesz zrobić funkcję, a potem ją tylko wywołać w tabeli. No i możesz dodać "else" do instrukcji warunkowej, żeby pokazać stronę x, jeżeli nie ma przypisanej zmiennej $_GET['subpage']. Najprosciej:

  1. else{
  2. include("pages/stronaglowna.html");
  3. }
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.