Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Includowanie oraz GET
AboutMe
post
Post #1





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

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


Witam,

Mam poniższy kod w footerze, niestety zwraca error ponieważ nie otrzymuje żadnej wartości przez GET, działa dopiero jak umieszczę kod bezpośrednio na stronie. Czy jest jakiś sposób żeby poniższy kod zadziałał w pliku foot.php który jest includowany na stronach?

  1. <?php
  2. if (is_numeric($_GET['id'])) {
  3. $wynik = ($_GET['id']+1);
  4. $xnext1 = file_get_contents('content2.php?id=' . $wynik);
  5. } else {
  6. $xnext13 = "error";
  7. }
  8. ?>
  9. <a href="<?php echo($wynik); ?>"><?php echo($xnext1); ?></a>


Ten post edytował AboutMe 10.04.2010, 14:23:01
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Do includowania sluzcy INCLUDE() a nie FILE_GET_CONTENTS().
Dla inlcude podaje sie sciezke do pliku bez danych dodatkowych parametrow jak w url.

Napisz co chccesz osiągnąc bo przekombinowujesz wlasnie.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Tak jak pisze nospor, może powinieneś jeszcze użyć

  1. if(isset($_GET["id"]))
  2. {
  3. //ten twoj kod z 1 postu
  4. }


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
AboutMe
post
Post #4





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

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


Źle mnie zrozumieliście.
Jeśli user wpisuje adres www.domena.pl/543.html
to zostaje wyświetlony art. nr 543 i dodatkowo chciałbym niżej wyświetlić tytuł kolejnego artykułu:

Cytat
$wynik = ($_GET['id']+1);


Niestety to nie działa bo nie otrzymuje liczby 543

Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


no bo żeby z czegoś takiego www.domena.pl/543.html wyciągnąć id to potrzebujesz jeszcze regułkę to htaccess, coś takiego:

  1. Options FollowSymLinks
  2. RewriteEngine On
  3.  
  4.  
  5. RewriteRule ^([^-]*).html$ article.php?id=$1 [L]


a tworzenie linku do następnego przez dodawanie 1 to zły pomysł bo co jak usuniesz artykuły i następny będzie miał nie o 1 a o 3 wyższe?
Go to the top of the page
+Quote Post
AboutMe
post
Post #6





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

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


Ale ja doskonale wiem że trzeba zastosować modrewrite
Go to the top of the page
+Quote Post
tehaha
post
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


to w czym problem? // jeżeli zmienna nie jest przekazywana to regułka musi się nie zgadzać

chyba rozumiem o co Ci chodzi , zmienna jest przekazywana tylko takie coś nie działa tak?
  1. #
  2. $xnext1 = file_get_contents('content2.php?id=543');


Ten post edytował tehaha 11.04.2010, 11:52:11
Go to the top of the page
+Quote Post
AboutMe
post
Post #8





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

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


Mam stronę www.domena.pl/543.html

ID = 543
Cytat
<?php
if (is_numeric($_GET['id'])) {
$wynik = ($_GET['id']);
$art = file_get_contents('content.php?id=' . $wynik);
} else {
$art = "error";
}
?>


<?php echo implode('<br />', array_slice( explode("\n", $art ), 0 ) ); ?>

<?php include('foot.php'); ?>



W pliku foot.php mam przykładowo:
Cytat
<?php
if (is_numeric($_GET['id'])) {
$wynik = ($_GET['id']+1);
$art2 = file_get_contents('content.php?id=' . $wynik);
} else {
$art2 = "error";
}
?>


<?php echo implode('<br />', array_slice( explode("\n", $art2 ), 0 ) ); ?>



I niestety footer wyświetla error bo nie otrzymuje nic przez GET, ponieważ foot.php jest includowany.

Ten post edytował AboutMe 11.04.2010, 12:06:39
Go to the top of the page
+Quote Post
mortus
post
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Ale jakie to ma znaczenie, że foot.php jest includowany? Spróbuj wstawić kod:
  1. echo '<pre>';
  2. print_r($_GET);
  3. echo '</pre>';
w pliku foot.php przed warunkiem if(is_numeric($_GET['id'])) {. Poza tym zastanawiam się, dlaczego nie użyjesz zmiennej $wynik zamiast $_GET['id']. Przecież wiesz, że $wynik jest liczbą i możesz zrobić w pliku foot.php coś takiego:
  1. <?php
  2. $wynik = $wynik + 1;
  3. $art2 = file_get_contents('content.php?id=' . $wynik);
  4. ?>
  5. <?php echo implode('<br />', array_slice( explode("\n", $art2 ), 0 ) ); ?>
Go to the top of the page
+Quote Post
AboutMe
post
Post #10





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

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


Wyświetliło mi

Cytat
Array
(
)

Go to the top of the page
+Quote Post
mortus
post
Post #11





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Hmm... Problem polega na tym, że funkcja
  1. $dane = file_get_contents('content.php?id=1');
szuka pliku o nazwie "content.php?id=1". My jednak chcemy, aby plik content.php wygenerował odpowiednią zawartość dla podanego id i dopiero tę zawartość zwrócił przez file_get_contents. Należy to zatem zrobić w taki sposób
  1. $dane = file_get_contents('http://localhost/sciezka/do/pliku/content.php?id=1');
Wtedy również include zadziała prawidłowo.
Pozdrawiam
Go to the top of the page
+Quote Post
AboutMe
post
Post #12





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

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


Niestety jest to samo.

Jak wkleję ten kod przed <?php include('foot.php'); ?>
czyli jak użyję go bezpośrednio na stronie to działa prawidłowo

Cytat
<?php
$wynik = $wynik + 1;
$art2 = file_get_contents('content.php?id=' . $wynik);
?>
<?php echo implode('<br />', array_slice( explode("\n", $art2 ), 0 ) ); ?>
Go to the top of the page
+Quote Post
mortus
post
Post #13





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Załóżmy, że masz stronę www.domena.pl, a na niej odnośnik, który prowadzi do adresu www.domena.pl/543.html, czyli do artykułu o id=543 W pliku .htaccess odpowiednie reguły przekazują nazwę pliku 543.html bez rozszerzenia do tablicy $_GET['id']. Pliki index.php, content.php i foot.php znajdują się w tym samym katalogu i jest to główny katalog na Twoim serwerze.
plik index.php
  1. <?php
  2. if(isset($_GET['id'] && is_numeric($_GET['id'])) {
  3. $wynik = $_GET['id'];
  4. $art = file_get_contents('http://www.domena.pl/content.php?id=' . $wynik);
  5. echo implode('<br />', array_slice( explode("\n", $art ), 0 ) );
  6. } else {
  7. echo "error";
  8. }
  9. ?>
  10. <?php include('foot.php'); ?>
plik foot.php
  1. <?php
  2. if (isset($_GET['id'] && is_numeric($_GET['id'])) {
  3. $wynik = $_GET['id'] + 1;
  4. $art2 = file_get_contents('http://www.domena.pl/content.php?id=' . $wynik);
  5. echo implode('<br />', array_slice( explode("\n", $art2 ), 0 ) );
  6. } else {
  7. echo "error";
  8. }
  9. ?>


Ten post edytował mortus 11.04.2010, 16:48:32
Go to the top of the page
+Quote Post
tehaha
post
Post #14





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


a tak właściwie to czemu nie możesz w tym pierwszy kodzie(index.php) wygenerować tego przycisku i tylko go wyświetlić w footer?
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: 20.08.2025 - 13:36