Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klopot z czyms tak prostym, ze az wstyd.
Marusz
post
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 smile.gif

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 winksmiley.jpg rozjechal, ale mam nadzieje, ze cos widac.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
spenalzo
post
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?


--------------------

Go to the top of the page
+Quote Post
Marusz
post
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


no wlasnie nie smile.gif bo wtedy calkowicie znikaja mi stoly i strona pokazuje sie w czystym oknie, bez layoutu (probowalem to).
Go to the top of the page
+Quote Post
Omega
post
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 >>>
Go to the top of the page
+Quote Post
spenalzo
post
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.


--------------------

Go to the top of the page
+Quote Post
Marusz
post
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.
Go to the top of the page
+Quote Post
Omega
post
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 >>>
Go to the top of the page
+Quote Post
spenalzo
post
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łą.


--------------------

Go to the top of the page
+Quote Post
Marusz
post
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 winksmiley.jpg. Jak sobie z tym poradzic?
Go to the top of the page
+Quote Post
orson
post
Post #10





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam smile.gif

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 biggrin.gif

cya
Go to the top of the page
+Quote Post
Marusz
post
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.
Go to the top of the page
+Quote Post
orson
post
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
Go to the top of the page
+Quote Post
Marusz
post
Post #13





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


Robilem to sad.gif I tak jak pisalem wyzej, gdy klikniesz na tego typu link, to strona.php sie "chowa", jak i stoly, zas otwiera zupelnie nowa czysta kartka z zawartoscia linku...
Go to the top of the page
+Quote Post
orson
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:40