Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][CSS] Ładowanie zawartości plików .php
Forum PHP.pl > Forum > Przedszkole
eol
Witam.
Zbudowałem stronę na czterech DIVach: baner,menu, środek i prawa (wszystko na position:absolute - jestem początkujący, więc na razie jest tak), która wygląda tak:

strona

Chciałbym, aby po wybraniu czegoś z menu (np. Spis treści), ładowało się to, do środkowego DIVa.

Obecnie na serwerze jest index.html

Wyczytałem już, że najłatwiej początkującym jest zrobić to za pomocą include(). Szperałem dalej i nawet udało mi się coś stworzyć. Jednak gdy załaduje plik index.php (teoretycznie zawierający skrypt do wczytywania zawartości do DIVa środkowego) pojawia się całkowicie biała strona, a firebug pokazuje że nic w pliku nie ma...

Oto kod index.php

Kod
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<title>cos tam</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<!--[if gte ie 5]>
<link rel="stylesheet" href="exstyle.css" type="text/css">
<![endif]-->
                  
</head>

<body>

<div id="banner"> Tekst w banerze </div>        
<div id="menu">

<h2>Menu</h2>

<ul>
<li><a href="index.php?id=home.php">HOME</a></li>
<li><a href="index.php?id=spis.php">Spis treść</a></li>
<li><a href="index.php?id=nowosci.php">Nowości</a></li>
<li><a href="index.php?id=kontakt.php">Kontakt</a></li>
</ul>

<h2>Menu 2</h2>

</div>

<div id="tresc">
<?php
if($_GET['id']!="")
{
     switch( $_GET['id']) {
         case 'home':
             include 'home.php'
         break;
         case 'spis':
             include 'spis.php';
         break;
         case 'nowosci':
             include 'nowosci.php';
         break;
         case 'kontakt':
            include 'kontakt.php';
         break;
        
         default:
             include 'home.php';
     }    
}
else{
     include 'home.php'      
     };
?>
</div>

<div id="prawa">
<p><span>Superważna wiadomość</span>
To jest naprawdę ważna wiadomośc, tak ważna,
że nawet nie moge jej tu napisać:-)</p>
<p><span>Imieniny:</span>
Dziś imieniny obchodzą Bonifacy i Kunegunda</p>
</div>
      
</body>
</html>


Jedyna różnica między index.html, a index.php jest taka, że w miejscu wstawienia kodu php (zaraz pod div id="treść") w pliku .html jest tekst, który obecnie znajduje się na stronie w środkowym DIVie.

Nie wiem, może trzeba coś do head wstawić, żeby to to widziało php czy cóś?

PS. prv.pl obsługuje php
PS2. nadal nie wiem jak zrobić, żeby we wklejanym na forum kodzie wiersze były ponumerowane (używam pajączka)
Spirit86
Ten kod był masochistyczny. Sprawdź ten:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "htt://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  6. <title>MSGIE</title>
  7. <link rel="stylesheet" href="style.css" type="text/css" />
  8. <!--[if gte ie 5]>
  9. <link rel="stylesheet" href="exstyle.css" type="text/css">
  10. <![endif]-->
  11.                  
  12. </head>
  13.  
  14. <body>
  15.  
  16. <div id="banner"> Tekst w banerze </div>        
  17. <div id="menu">
  18.  
  19. <h2>Menu</h2>
  20.  
  21. <ul>
  22. <li><a href="index.php?id=home.php">HOME</a></li>
  23. <li><a href="index.php?id=spis.php">Spis treść</a></li>
  24. <li><a href="index.php?id=nowosci.php">Nowości</a></li>
  25. <li><a href="index.php?id=kontakt.php">Kontakt</a></li>
  26. </ul>
  27.  
  28. <h2>Menu 2</h2>
  29.  
  30. </div>
  31.  
  32. <div id="tresc">
  33. <?php
  34.     $fileToInclude = 'home.php';
  35.     if(!empty($_GET['id']){
  36.        if(file_exitst(empty($_GET['id'].'.php')){
  37.            $fileToInclude = $_GET['id'].'.php';
  38.        }
  39.        else{ //dzieki temu bedziesz mógł tu wstawić własną stronę z błędem
  40.            $fileToInclude = 'error.php';
  41.        }
  42.     }
  43.     include($fileToInclude);
  44. ?>
  45. </div>
  46.  
  47. <div id="prawa">
  48. <p><span>Superważna wiadomość</span>
  49. To jest naprawdę ważna wiadomośc, tak ważna,
  50. że nawet nie moge jej tu napisa:-)</p>
  51. <p><span>Imienin:</span>
  52. Dziś imieniny obchodzą Bonifacy i Kunegunda</p>
  53. </div>
  54.      
  55. </body>
  56. </html>
eol
Coś jest nie tak...

Rzeczywiście Twój jest bardziej przystępny, ale...

po umieszczeniu w index.php zawartości Twojego kodu także wyświetla pustą stronę (taką jak teraz jest pod linkiem do mojej strony z pierwszego postu).

Nie wiem gdzie jest błąd. Co ciekawe, gdy usunę część kodu dotyczącą php (od <?php do ?>), czyli to co dodałeś, to strona już ładuje się prawidłowo (z tym, że bez tego skryptu, czyli jest po staremu - po kliknięciu na element z menu, nie ładuje do środkowego, tylko na nowo wszystko)

Gdzie zatem może leżeć błąd?
Spirit86
heh, tak jak się pisze z palca smile.gif. Teraz poprawiłem.
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "ht://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  6. <title>MSGIE</title>
  7. <link rel="stylesheet" href="style.css" type="text/css" />
  8. <!--[if gte ie 5]>
  9. <link rel="stylesheet" href="exstyle.css" type="text/css">
  10. <![endif]-->
  11.                
  12. </head>
  13.  
  14. <body>
  15.  
  16. <div id="banner"> Tekst w banerze </div>        
  17. <div id="menu">
  18.  
  19. <h2>Menu</h2>
  20.  
  21. <ul>
  22. <li><a href="index.php?id=home.php">HOME</a></li>
  23. <li><a href="index.php?id=spis.php">Spis treść</a></li>
  24. <li><a href="index.php?id=nowosci.php">Nowości</a></li>
  25. <li><a href="index.php?id=kontakt.php">Kontakt</a></li>
  26. </ul>
  27.  
  28. <h2>Menu 2</h2>
  29.  
  30. </div>
  31.  
  32. <div id="tresc">
  33. <?
  34.    $fileToInclude = 'home.php';
  35.    if(!empty($_GET['id'])){
  36.       if(file_exitst($_GET['id'].'.php')){
  37.           $fileToInclude = $_GET['id'].'.php';
  38.       }
  39.       else{ //dzieki temu bedziesz mógł tu wstawić własną stronę z błędem
  40.           $fileToInclude = 'error.php';
  41.       }
  42.    }
  43.    include($fileToInclude);
  44. ?>
  45. </div>
  46.  
  47. <div id="prawa">
  48. <p><span>Superważna wiadomość</span>
  49. To jest naprawdę ważna wiadomośc, tak ważna,
  50. że nawet nie moge jej tu napis:-)</p>
  51. <p><span>Imieni:</span>
  52. Dziś imieniny obchodzą Bonifacy i Kunegunda</p>
  53. </div>
  54.    
  55. </body>
  56. </html>
eol
kurcze, dalej coś nie do końca jest w porządku, bo znika prawa ramka...

EDIT:
Zaraz po załadowaniu jest ok, bo wyświetla tak jak należy home.php. Ale jak tylko kliknie się na coś z menu, to znika prawa strona, środek się kurczy i nic nie wyświetla niestety


jeszcze raz link do strony, żeby nie wracać na górę
moja strona
Spirit86
Nie wiem jakie są ustawienia php na serwerach prv. Zrób na początku kodu strony:
  1. <? error_reporting(E_ALL); ?>

Kolejną rzeczą jaką zauważyłem to, że w pliku home.php umieszczasz:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  3. </head>
  4. <body>...


wywal to, tylko fragment kodu jaki ma się wyświetlić w tym divie, czyli samo:
  1. <p>Witamy na stronie</p>

Ciężko mi tak zdalnie Ci odpowiedzieć, gdzie jest błąd. Kod jaki Ci podałem u mnie działa jak należy. Wygląda jakby był błąd w php bo anuluje wykonywanie strony w momencie gdzie zaczyna się php. Wrzuć tego errora to zobaczmy.

No i kwestia linków w menu powinno być:
  1. <li><a href="index.php?id=home">HOME</a></li>
  2. <li><a href="index.php?id=spis">Spis treść</a></li>
  3. <li><a href="index.php?id=nowosci">Nowości</a></li>
  4. <li><a href="index.php?id=kontakt">Kontakt</a></li>


Edit: Z tego co widzę, to działa to poprawnie.
eol
Wrzuciłem to na początku, ale po <html> (nie wiem, czy o to miejsce chodziło)

Kod
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "ht://www.w3.org/TR/html4/strict.dtd">
<html>
<? error_reporting(E_ALL); ?>
<head>


Działa dobrze, ale tylko przy pierwszym ładowaniu; jak już klikniesz coś z menu, to prawa znika, a środek prawie też znika (a na pewno nie wyświetla tak jak powinien

A w poszczególnych plikach skojarzonymi z menu, wyrzuciłem wszystko oprócz tekstu właściwego (zgodnie z Twą radą - dzięks)

PS. A swoją drogą... może ktoś polecić darmowy stabilny serwer (najlepiej bez reklam - może będzie lepszy od prv.pl). Może być zagraniczny.
Spirit86
Primo stwórz plik error.php.

A dopisz coś takiego:

  1. <?
  2.   $fileToInclude = 'home.php';
  3.   if(!empty($_GET['id'])){
  4.      if(file_exists($_GET['id'].'.php')){
  5.          $fileToInclude = $_GET['id'].'.php';
  6.      }
  7.      else{ //dzieki temu bedziesz mógł tu wstawić własną stronę z błędem
  8.          $fileToInclude = 'error.php';
  9.      }
  10.   }
  11.   include($fileToInclude);
  12. ?>

heh, literówka smile.gif.
eol
Jest progres...

Stworzyłem error.php
Wstawiłem też nowy/stary kod i jest lepiej, coś wyświetla w środku - co prawda nie to co powinien, ale... Jednak nadal znika prawa

link
Spirit86
  1. <?
  2.   $fileToInclude = 'home.php';
  3.   if(!empty($_GET['id'])){
  4.      if(file_exists($_GET['id'].'.php')){
  5.          $fileToInclude = $_GET['id'].'.php';
  6.      }
  7.      else{ //dzieki temu bedziesz mógł tu wstawić własną stronę z błędem
  8.          $fileToInclude = 'error.php';
  9.      }
  10.   }
  11.   include($fileToInclude);
  12. ?>

heh, literówka smile.gif.
eol
Jesteś WIELKI... bo... już prawie witamy się z gąską smile.gif

Prawa ramka już jest:). Tylko teraz na środku ładuje się error.php.

link

EDIT: oczywiście wszystkie pliki (tj. home.php, spis.php, nowosci.php i kontakt.pnp) są już na serwerze
ShadowD
Nie odsyłaj do strony:
http://www.msgie.prv.pl/index.php?id=home.php
Tylko do:
http://www.msgie.prv.pl/index.php?id=home

I będzie wszystko śmigało...
Spirit86
No dokładnie, popraw linki (bez końcówek php) i po problemie.
Powodzenia.
eol
YES! YES! YES!

Dzięki chłopaki. Czy wy wiecie ile czasu, mnie zielonemu przedszkolakowi, zajęłoby dochodzenie do tego co wypracowaliście?? Dni całe, a może nawet tygodnie.

Dzięki wielkie:)

PS. Teraz spokojnie będę mógł spróbować zmodyfikować jeszcze .css, żeby był na float... a potem zacznę zgłębiać tajniki php i kolejnych języków.

Jeszcze raz wielkie dzięki. May the force be with you:)
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.