Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Includowanie oraz GET
Forum PHP.pl > Forum > PHP
AboutMe
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>
nospor
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.
MateuszS
Tak jak pisze nospor, może powinieneś jeszcze użyć

  1. if(isset($_GET["id"]))
  2. {
  3. //ten twoj kod z 1 postu
  4. }
AboutMe
Ź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

tehaha
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?
AboutMe
Ale ja doskonale wiem że trzeba zastosować modrewrite
tehaha
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');
AboutMe
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.
mortus
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 ) ); ?>
AboutMe
Wyświetliło mi

Cytat
Array
(
)

mortus
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
AboutMe
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 ) ); ?>
mortus
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. ?>
tehaha
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?
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.