include do tabelki

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
nietophez
Nowy
Nowy
Posty: 53
Rejestracja: wt lut 01, 2005 10:32 pm
Lokalizacja: Wieliczka
Kontakt:

include do tabelki

Post autor: nietophez »

Witam

Jestem początkującym jeśli chodzi o tematyke PHP i mam zapewne banalny, ale problem. Mam skrypcik osadzony w tabeli, która podzielona jest na 2 części. Częśc pierwsza z lewej zawiera linki, a część 2 to pole danych gdzie za pomocą skryptu powinna zostać załadowana informacja znajdująca sie w innym pliku. Problem jest taki, że pomimo różnych kombinacji za każdym razem wyświetla sie błąd 404 że nie ma takiej strony, strona która się powinna załadować jest w podkatalogu data, ale nawet jeśli jest on w katalogu głównym obok pliku index to i tak nie działa. Tabela i skrypt wyglądają nastepująco:

<table>
<tr>
<td>>
<a href="index.php?id=strona1">Strona 1</a>
</td>
<td><?
$urls=$id.".html"; /*zamiast html musimy podać jakie
rozszerzenia mają pliki, które chcemy wkleić */
if(file_exists("$urls"))
{
$file=fopen($urls,"r"); /* otwiera plik o ścieżce
dostępu równej wartości
zmiennej $id plus rozszerzenie */

while($linia=fgets($file, 99))
{
echo($linia); // wyświetla zawartość pliku $file
}
fclose($file); // zamyka plik
}
else{
echo("<p align=\"center\"><b>BŁĄD 404</b><br><br>
Wystąpił błąd. Plik do którego prowadzi ten link NIE
ISTNIEJE !!!<br><br><a href=\"javascript:history.back()\">Powrót</a>");
} /* Tu pojawia się informacja, gdy wystąpi błąd */
?>
</td>
</tr>
</table>

Bardzo prosze o jakąś podpowiedź, będę bardzo wdzięczny.
yarpo
Nowy
Nowy
Posty: 168
Rejestracja: wt lut 08, 2005 6:29 pm
Lokalizacja: Gdańsk
Kontakt:

Re: include do tabelki

Post autor: yarpo »

A może zamiast odczytywac zawartość pliku whilem zrób to tak:

[php]<?PHP
$plik = fopen($urls, r);
$tresc = fread($plik, filsize($urls));
echo $tresc
?>[/php]

Choć jeśli pokazuje ci, że nie ma pliku, to miejscem krytycznym, w ktorym należałoby szukać dziury jest warunke if(is_exist()).

Sprawdź jeszcze raz czy zgadzają się nazwy plików z wartościami zmiennych. Zamiast tego warunku i całej reszty daj

[php]<?PHP echo $urls ?>[/php]

Jeśli wartośc zmiennej bedzie się zgadzać z nazwąkonkretnego pliku to wtedy
może problem jest z chmod???? ale raczej nie....

W jaki sposób wywołujesz stronę? - napisz jak wygląda link
nietophez
Nowy
Nowy
Posty: 53
Rejestracja: wt lut 01, 2005 10:32 pm
Lokalizacja: Wieliczka
Kontakt:

re

Post autor: nietophez »

No stronke która ma być załadowana do tabeli wywołuje linkiem np.

<a href="index.php?id=strona1">Strona 1</a>

ktory znajduje sie w sąsiedniej kratce tabelki.
Będę wdzięczny za tłumaczenie jak 4- ro latkowi 8O .

Czyli wniosek z poprzedniego jest taki ze zamiast całego kodu z pierwszego posta wystarczy dać:
[php]<?php
$plik = fopen($urls, r);
$tresc = fread($plik, filsize($urls));
echo $tresc
?>[/php]
czy może
[php]<?php
$urls=$id.".html";
echo $urls
?>[/php]
:?: :?: :?: :?:
yarpo
Nowy
Nowy
Posty: 168
Rejestracja: wt lut 08, 2005 6:29 pm
Lokalizacja: Gdańsk
Kontakt:

Re: include do tabelki

Post autor: yarpo »

To ja napiszę całość:

na stronie index.php niech bedzie link:

Kod: Zaznacz cały

<a href="index.php?str=o_mnie">Wejdź na sronę</a>
A potem w tej drugiej komórce:

[php]<?PHP

@$strona = $_GET["str"]; // 1
$urls = $strona.".htm"
$plik = fopen($urls, r); // 2
$tresc = fread($plik, filsize($urls)); // 3

if ($strona) {
echo $tresc; // 4
} else {
echo "<p>tu treść strony pierwszej</p>"; //5
}
?>[/php]

Opis:
1. - pobieram zmienną z tablicy asocjacyjnej $_GET[]
[asocjacyjnej, czyli takiej, gdzie indexami są napisy]
[dzięki temu @ nie wyskoczy błąd jeśli jeszcze nie została pobrana zmienna - czytaj: ktos wszedł na stronę i nie kliknął linka]
2. - funkcja fopen() otwiera plik o nazwie [w tym wypadku] "o_mnie.htm". To "r" oznacza że plik otworzony tylko do odczytu.
3. - odczytuje wartość pliku
4. - prosta insrukcja if:
jeśli jest $strona - wyswietl $tresc, czyli treść pliku $urls
jeśli nie to napisz to co znajduje się na sronie głównej

Gotowy skrypt możesz znaleźć na stronie www.yarpo.prv.pl[url] - > skrypty -> [u ... ci strony"
A na stronie http://www.phpkurs.prv.pl masz to jeszcze dokładniej wytłumaczone.

w przyszłości proponuję ściągnięcie kilku dobrych kursów i przerobienie ich - zawsze się przyda:-)
nietophez
Nowy
Nowy
Posty: 53
Rejestracja: wt lut 01, 2005 10:32 pm
Lokalizacja: Wieliczka
Kontakt:

re

Post autor: nietophez »

Dzieki za odpowiedź, a jesli chodzi o kursy to wlasnie doszedlem jakis czas temu ze pasuje sie czegos dowiedziec, kumpel podal mi jakis taki kurs ale strasznie łopatologiczny jest, zainwestowalem nawet w ksiazeczke ale chyba nie jest ona zbyt przystepnie napisana dla poczatkujacych. No to kombinuje metoda prób i błędów ale to nie jest tak proste jak by sie wydawać mogło. Ale twoj kursik jest gitarka po prostu i polecam bo przystepnie napisany jest i tak można się wgłębić w podstawy, szkoda, że go wcześniej nie znalazłem.

Myśle że chyba sobie już dam rade ale jak by cos to walnę tu jeszcze jakąś głupote :wink:

Pozdrowionka :)
yarpo
Nowy
Nowy
Posty: 168
Rejestracja: wt lut 08, 2005 6:29 pm
Lokalizacja: Gdańsk
Kontakt:

Re: include do tabelki

Post autor: yarpo »

na stronie www.yarpo.prv.pl masz jeszcze kilka innych linków. [dział kursy -> php]

W www.google.pl wpisz "kurs"+"php" i też masz MNÓSTWO linków - co do ich jakości ... sam już wiesz:-)

jakby były jakies pytania to wal na forum, albo do mnie na priv:-)

PS. Mój kurs jest w rakcie budowy [kilka ostatnich lekcji]. i póki co [co zobaczyłem niedawno] trzeba go używac w Operze lub Firefoxie, bo MSIE6.0 nie obsługuje white-space: pre :-(
nietophez
Nowy
Nowy
Posty: 53
Rejestracja: wt lut 01, 2005 10:32 pm
Lokalizacja: Wieliczka
Kontakt:

re

Post autor: nietophez »

No to dobrze, że uzywam Firefoxa ;). Ale odnośnie skryptu, to dalej problem. Zamontowałem sobie na kompie Krasnala, tak jak w twoim kursie opisane, i troszke przerobiłem lekcji, a wszystkie skrypty działały. Natomiast ten, odnośnie zawartości w tabelce to, ani wersja z forum która podałeś, ani wersja ze strony nie pójdzie. Wersje z forum przestudiowałem i taka by mi najbardziej odpowiadała, dlatego omówie problem dle tego przypadku ;)
Stronka wygląda tak:

Kod: Zaznacz cały

1: <html>
2: <body>
3: <table>
4: <tr>
5: <td><a href="index.php?str=start">Wejdź na sronę</a></td>
6: <td>
7: <?PHP
8:
9: @$strona = $_GET["str"]; // 1
10: $urls = $strona.".htm"
11: $plik = fopen($urls, r);      // 2
12: $tresc = fread($plik, filsize($urls));   // 3
13: 
14: if ($strona) {
15:    echo $tresc;   // 4
16:   } else {
17:   echo "<p>tu treść strony pierwszej</p>"; //5
18:   }
19: ?>
20: </td>
21: <td><?php include("menul.htm"); ?></td>
22: </tr>
23: </table>
24: </body>
25: </html>
i jak próbuje sobie ja włączyć to mi wyskakuje błąd taki:
"Parse error: parse error in c:\usr\apache\httpd\html\kurs\index.php on line 11" :evil:

No i jest lipa, a oczywiscie plik menul.htm i start.htm są w tym samym katalogu co index.php

?>[/php]
yarpo
Nowy
Nowy
Posty: 168
Rejestracja: wt lut 08, 2005 6:29 pm
Lokalizacja: Gdańsk
Kontakt:

Re: include do tabelki

Post autor: yarpo »

Ale ze mnie ślepota!

aki błąd Ci napisałem. Już popawiam. W 11 lini napisz:

Kod: Zaznacz cały

 11: $plik = fopen($urls, "r");  
i teraz wsztko powinno dzialać - r należało dać w cudzysłowiach "r".

Takie błędy są najtrudniejsze....
nietophez
Nowy
Nowy
Posty: 53
Rejestracja: wt lut 01, 2005 10:32 pm
Lokalizacja: Wieliczka
Kontakt:

re

Post autor: nietophez »

No to poprawiłem i dodałem cudzysłów, ale problem nie miną :evil:
yarpo
Nowy
Nowy
Posty: 168
Rejestracja: wt lut 08, 2005 6:29 pm
Lokalizacja: Gdańsk
Kontakt:

Re: include do tabelki

Post autor: yarpo »

Słuchaj, ale mówisz o tym, że nie dziala, po kliknięciu na ten link.

czyli najpier pojawia sie napis "To co na pierwszej stronie":.
Po klinieciu na link powinna sie pojawić strona.

W pliku php.ini sprawdź czy masz register global ostawione na off czy on.
[plik php ini powinieneś znaleźć w folderze "windows", albo wpisz by ci wyszukało]
yarpo
Nowy
Nowy
Posty: 168
Rejestracja: wt lut 08, 2005 6:29 pm
Lokalizacja: Gdańsk
Kontakt:

Re: include do tabelki

Post autor: yarpo »

Ale pojawia się jakiś błąd, czy pop prost zawsze jest "ten text będzie na pierwszej stronie"?
nietophez
Nowy
Nowy
Posty: 53
Rejestracja: wt lut 01, 2005 10:32 pm
Lokalizacja: Wieliczka
Kontakt:

re

Post autor: nietophez »

no własnie problem jest o tyle gorszy że cała strona sie nie wyświetla tylko ten komunikat jest.
No myślałem że może krasnal coś nie tak, ale inne skrypty działają i przetestowałem skrypt też na serwerze friko.pl ale tam to samo jest.
Tak eksperymentowałem z tym i dodałem " ; " na końcu 10 linii i pojawił się odnośnik już "Wejdź na stronę" ale dodatkowo fatal error ;) :P
mickaellos
Posty: 1
Rejestracja: pt lut 11, 2005 8:31 pm

Re: include do tabelki

Post autor: mickaellos »

w 12 linijce jest błąd
wpisane jest filsize -> zamień na filesize :)

literówka
nietophez
Nowy
Nowy
Posty: 53
Rejestracja: wt lut 01, 2005 10:32 pm
Lokalizacja: Wieliczka
Kontakt:

re

Post autor: nietophez »

No tak nikt nie jest nieomylny ale ta literówka na razie nic nie zmienia bo problem jest nadal i nie wyświetla sie żaden z komponentów dla testów nawet dałem kolor jako tło i on tez się nie wyświetla ani żadne polecenie html które jest przed albo po skrypbie jest tylko napis na białym tle jeden jedyny

Parse error: parse error in c:\usr\apache\httpd\html\kurs\index.php on line 11
yarpo
Nowy
Nowy
Posty: 168
Rejestracja: wt lut 08, 2005 6:29 pm
Lokalizacja: Gdańsk
Kontakt:

Znalazłem bład

Post autor: yarpo »

Wyświetla, że bład jest w lini 11. w rzeczywistości jest w lini 10!
Linia dziesiąta nie koczy sie średnikiem!

W lini dziesiątej daj:
[php]<?PHP
10: $urls = $strona.".htm" ;
?>[/php]

Teraz powinno ladnie działać:-)
ODPOWIEDZ