![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 16.05.2003 Skąd: POLAND Ostrzeżenie: (0%) ![]() ![]() |
Witam grupowiczow.
Kiedy pisalem swoj pierwszy skrypt, nie przypuszczalem, ze najdzie mnie ochota go wykorzystac ![]() Postanowilem owy skrypt wykorzystac na jakiejs stronie internetowej. Stworzylem prosty plik HTML z trzema table'sami i po lewej stronie dodalem 3 linki a w srodku moj (includowany) skrypt news. Wyglada to mniej wiecej tak: Kod | l | N | |
| i | E | | | n | W | | | k | S | | | i | | | I teraz. Kiedy klikne na "Dodaj komentarz" to ni jak nie udaje mi sie dostac do strony z formularzem. Kurcze, i wiem jaka przyczyna. Link w skrypcie newsowym wyglada tak: <a href='$PHP_SELF?action=add_comments&id=$db_n[id]&inc_comments=yes'> przegladarka widzi go jako: strona.php?action=more_news&id=90&inc_comments=yes a skrypt newsowy jest includowany zas jego nazwa to news.php. Wiec nic dziwnego, ze on nie rozumie co sie do niego mowi. Mam nadzieje, ze nie namieszalem za mocno. Jak wybrnac z tego problemu? Co u licha zrobic teraz z tymi linkami. Jak zaczynalem pisac news.php to w ogole nie kumalem php. Obecnie skrypt zajmuje 20 kb, wiec szkoda by mi bylo go stracic... a i linkow jest tam sporo odwolujacych sie do $PHP_SELF. Pomocy! PS. troche mi sie ASCIIart ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Zamień przy pomocy dowolnego programu wszystkie $PHP_SELF na news.php - o to chodzi?
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 16.05.2003 Skąd: POLAND Ostrzeżenie: (0%) ![]() ![]() |
no wlasnie nie
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 273 Pomógł: 0 Dołączył: 5.05.2003 Skąd: Mazury Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź co jest w $PHP_SELF przy pomocy funkcji exho(). Może sprubój ze stałą __FILE__ ona może pomóc. Jak cos jest nie tak z $PHP_SELF przyczyny trzeba szukać gdzie indziej... :?
-------------------- <<< EB >>>
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
BTW:
Należy korzystać ze zmiennej $_SERVER["PHP_SELF"] - może w tym tkwi problem. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 16.05.2003 Skąd: POLAND Ostrzeżenie: (0%) ![]() ![]() |
Zmienna $PHP_SELF dziala poprawnie. Sluchajcie, ja wiem w czym tkwi blad, tylko nie zabardzo umiem to powiedziec. Kiedy skrypt news.php dzialal sobie sam na sam, wszystkie linki funkcjonowaly, a ich postac wygladala tak:
http://serwer.com/news.php?action=more_new...nc_comments=yes kiedy skrypt news.php includowalem do strony index.php, link wyglada tak: http://serwer.com/strona.php?action=more_n...nc_comments=yes i on juz nie kuma o co chodzi - po kliknieciu pokazuje biala kartke. Podejrzewam, ze hint Omegi ze stala __FILE__ moze mi pomoc, tylko ze nie wiem jak to wykorzystac (zas sama stala gdzies juz w zyciu widzialem). Pomozcie prosze, za duzo sie napisalem news.php aby teraz sie zastrzelic i robic wszystko od nowa. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 273 Pomógł: 0 Dołączył: 5.05.2003 Skąd: Mazury Ostrzeżenie: (0%) ![]() ![]() |
W manualu jest to ładnie opisane, chyba nawet po polsku. Przypisz zawartość __FILE__ do jakiejś zmiennej, albo nawet do $PHP_SELF i powinno zadziałać.
-------------------- <<< EB >>>
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat __FILE__ (nieważna wielkość liter)
Nazwa pliku ze skryptem php, który jest aktualnie parsowany (przetwarzany); stała użyta w pliku, który został włączony (include) lub jest wymagany (require), zwraca nazwę tego właśnie pliku, a nie nazwę pliku głównego. Tak jak napisał Omega spróbuj przypisać tą stałą do zmiennej $PHP_SELF, lub zamień wszystkie $PHP_SELF na tą stałą. -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 16.05.2003 Skąd: POLAND Ostrzeżenie: (0%) ![]() ![]() |
Ale to mi daje dokladnie to samo, jakbym $PHP_SELF zmienil na artykuly.php - wtedy to dziala, ale po kliknieciu na jakikolwiek temat, trace w tym wypadku calkowicie layout strony. W tym jest wlasnie problem.
Z lewej ramki wyoluje do srodkowej (ramki stolu, gdyz robie to na tablesach a nie frames) plik artykuly php: http://serwer.com/strona.php?pilot=art w skrypcie to ma sie tak: echo "<a href='$PHP_SELF?pilot=art'>odnosnik do artykulow</a><BR>"; w tym czasie skrypt wykonuje: [php:1:35d86618c0]<?php if($_GET["pilot"] == "art"){ include("artykuly.php"); } ?>[/php:1:35d86618c0] i jest ok. Skrypt artykuly.php defaultowo wyrzuca tematy artykulow ktore siedza w bazie danych. Kazdy temat jest linkie do artykulu: http://serwer.com/artykuly.php?art=show_art&id=1 a gdy plik artykuly.php jest includowany, to ten linki wygladaja tak: http://serwer.com/strona.php?art=show_art&id=1 i wtedy nie dzialaja. Jak przypisalem do zmiennej: $module_name = __FILE__; i wcisnalem w link: <a href='$module_name?art=show_art&id=$db_art[id]'>$db_art[temat]</a> to wprawdzie dzieki temu link wyglada inaczej: http://serwer.com/artykuly.php?art=show_art&id=1 aczkolwiek kiedy sie na linka klika, tak on "zamyka" strone z layoutem i otwiera nowa, biala, czysta kartke z napisami. Juz nie wiem jak to napisac inaczej ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam
![]() mam propozycje ... nie wiem czy ona ci pomoze ale mozesz sprobowac ... ale bez przerabiania lekkieg pliku sie chyba nie obejdzie ... zreszta 20 kb ... na sam skrypt news ... wow przerob lekko plik news.php i kazde zadanie podczep do funkcji [ np. news(); add_news(); edit_news(); del_news() itd.] potem zrob warunek na sprawdzanie czy np.: [php:1:569d8a7bde]<?php if ($_GET['mode'] =='news' ) { /*konkretny news*/ if ($_GET['id'] != "all") { include "modules/news.php"; news($_GET['id']); } } ?>[/php:1:569d8a7bde] czyli spradzaj czy jest warunek w adresie i potem w dowolnym miejscu wywolujesz funkcje news(); [ tutaj pobiera newsa o okreslonym id ] w miejscu z ktorego wywolasz ta funkcje [ news(); ] bedziesz mial to co chcesz wiec np. w srodkowej kolumnie tej tabeli z 1 postu ja wywolujesz i dziala ... mam nadzieje ze pomoglem a nie namieszalem bardziej ![]() cya |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 16.05.2003 Skąd: POLAND Ostrzeżenie: (0%) ![]() ![]() |
Kurcze, nie kumam. Napisze na szybko przyklad:
tworzymy plik na szybko strona.php: Kod <html><body>
<center><table border="1" width="750" bordercolor="#FF0000" cellspacing="1"> <tr><td width="241" valign="top"> <p align="center"><b>LINKI</b></p> <? /* banda linkow */ echo "<a href='$PHP_SELF?pilot=newsy'>odnosnik do newsow</a><br><br>"; echo "<a href='$PHP_SELF?pilot=artykuly'>odnosnik do artykulow</a><BR><BR>"; echo "<a href='$PHP_SELF?pilot=duperele'>odnosnik do jeszcze czegos innego</a><Br><BR>"; ?> <BR><BR><BR><BR> <td width="402" valign="top"> <p align="center"><b>MAIN</b></p> <BR><BR> <? /* reakcja po kliknieciu na link */ if($_GET["pilot"] == "newsy"){ include("newsy.php"); } if($_GET["pilot"] == "art"){ include("artykuly.php"); } if($_GET["pilot"] == "duperele"){ include("duperele.php"); } ?> <BR><BR> <td width="85" valign="top"><BR></td></tr></table></center></body></html> teraz tworzymy 3 pliki: newsy.php, artykuly.php i duperele.php. O tresc uzupelniamy tylko newsy.php (pokaze problem): [php:1:d2952221de]<?php if($_GET["action"] == "zawartosc_linka_1"){ zawartosc_linka_1(); } if($_GET["action"] == "zawartosc_linka_2"){ zawartosc_linka_2(); } echo "jestem w newsach.php"; echo "<br><br>"; echo "linki"."<BR><BR>"."<a href='$PHP_SELF?action=zawartosc_linka_1'>link 1</a>"."<BR>"; echo "<a href='$PHP_SELF?action=zawartosc_linka_2'>link 2</a>"; function zawartosc_linka_1() {echo "tutaj link 1";} function zawartosc_linka_2() {echo "tutaj zas link 2";} ?>[/php:1:d2952221de] I teraz. Po wczytaniu strona.php i kliknieciu na link 1 pokazuje sie nam plik newsy.php w srodkowej ramce. A linki klikane w newsy.php juz nie dzialaja (mimo, ze wczytany do przegladarki plik newsy.php nie sprawia problemu). Nie wiem jak sobie z tym wlasnie poradzic, stad ten dlugasny post. Prosze nadal o pomoc. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam
$PHP_SELF odnosi sie do aktualnie przetwarzanego pliku czyli wywolujac $PHP_SELF w pliku news.php nie mozesz sie odwolywac do niego tylko do pliku z ktorego includujesz news.php ... czyli : [php:1:0be4737cbc]<a href='$PHP_SELF?action=zawartosc_linka_1'>link 1</a>[/php:1:0be4737cbc] zamieniasz na [php:1:0be4737cbc]<a href='strona.php?action=zawartosc_linka_1'>link 1</a>[/php:1:0be4737cbc] tak powinno dzialac cya |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 16.05.2003 Skąd: POLAND Ostrzeżenie: (0%) ![]() ![]() |
Robilem to
![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam
hmm ... nie mam pojecia dlaczego to nie dziala ... hmm ... a moze : [php:1:ef5d5a184d]<?php if($_GET["pilot"] == "newsy"){ include("newsy.php"); } ?>[/php:1:ef5d5a184d] zamien na : [php:1:ef5d5a184d]<?php if($_GET["pilot"] == "newsy"){ include("newsy.php"); // to musisz zawsze includowac na poczatku if ($_GET["pilot"] == "") { /* tu wstaw wywolanie funkcji np news_all(); ktora pokazuje spis wszystkich newsow*/ }elseif ($_GET["action"] != ""){ if($_GET["action"] == "zawartosc_linka_1"){ zawartosc_linka_1(); /* a tu masz konkretnego newsa ... ale konstrukcja z news(n); [ za n dajesz nr newsa ] bedzie chyba lepsza */ } } } ?>[/php:1:ef5d5a184d] hmm ... musisz kontrole na action robic w pliku glownym ... i z niego wywolywac wszystkie funkcje ... cya |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 15:40 |