ďťż

[PHP] Funkcja include() odnośniki i formularze w includowanej stronie

       

Podstrony


telcocafe

Ahoj

Mam mały problem i zastanawiam się jak go rozwiązać. Otóż mam index'a.php ze stałą zawartością, a w nim includowany plik (np strona.php). Gdy umieszczam w includowanej stronie jakiś odnośnik albo formularz, to co dopisać do kodu, aby po kliknięciu na jakiś link/button przeładowywała się tylko i wyłącznie includowana zawartość (strona.php), a index pozostawał bez zmian.
Ale pogmatwałem...

Trochę prościej opisane:

Mam index'a.php i includowany plik (strona.php). Gdy w pliku strona.php umieszczam fomularz to co mam do parametrów dopisać, aby tylko strona.php była przeładowywana? Jak umieszczam w atrybucie "action" adres:
index.php?page=strona
i po wysłaniu danych GET'em to adres wynikowy wygląda tak:
index.php?daneciekawe=aaa
i w wyniku strona nie wyświetla się poparawnie
--------------------------------------------------------------------------------------------------
Natomiast jak w atrybucie action dam:
strona.php
, to strona.php otwiera się, ale jest na całej "szerokości". Nie ma natomiast pliku "index.php" który ma za zadanie includować "strona.php"

// jak będą problemy ze zrozumieniem, to mówcie....
Użytkownik sauron edytował ten post 03 sierpień 2007, 18:10


A może mod_rewrite pomoże?
Spróbuj przekierować index.php?page=strona na index_strona.html i do niej wysyłaj dane.
Ewentualnie możesz zrobić input typu hidden i tam pobierać, i przekazywać $_GET['action'].

//edit
Edytowałem, bo źle Cię zrozumiałem.:)
Użytkownik kiperoman edytował ten post 03 sierpień 2007, 18:36
@up
No tak ale tam mam fomularz z polem typu "text" i nie za bardzo byłoby gdybym już z góry nadawał wartość do zmiennej ;)

// zmieniłeś treść postu ;]

A jak to zmienić, nie ingerując w URL? Tzn. zostawić tak jak było i dalej się głowić nad include ;)

@jeszcze raz up:
Rozwiń swoją myśl, z tym inputem "hidden", bo troche nie rozumiem do czego dążysz... ;-)
Użytkownik sauron edytował ten post 03 sierpień 2007, 18:42
Strasznie nagmatwałeś :P Z tego co napisałeś można wywnioskować,że chcesz użyć Ajaxa,ale nic o tym nie wspomniałeś.
BTW Jak można przeładować sam plik includowany nie używając Ajaxa? :P Bo to trochę dziwne . . .
IMO Można to rozpatrzeć jeszcze inaczej :P Tylko nie potrafię tego określić :P Daj jakiś kodzik jeśli Twoja myśl go uwzględnia :D Bo ciężko się pracuje na teorii . . .




~
Na szybko napisałem takie coś:
<table width="80%" height="100%" border="0"> <tr> <td width="30%"> JAKAŚ TAM STAŁA WARTOŚĆ (Nie ma się przeładowywać) </td> <td width="50%"> <?php include('strona.php'); ?> </td> </tr> </table>

Plik strona.php:
<form action="index.php?page=strona" method="GET"> <input type="text" name="wartosc"> <input type="submit" value="Wyślij"> </form>

Jak zrobić, żeby ta includowana strona dalej przesyłała wartości (a nie cała index.php)
tzn. żeby strona.php była odświeżana itepe, a index.php został taki jaki jest ;]

Chodzi mi o coś takiego jak w np. iframe parametr "target". Można byłoby wtedy zdefiniować, w której ramce ma być otworzona dana www ;-)
Użytkownik sauron edytował ten post 03 sierpień 2007, 19:43
Niewiele więcej zrozumiałem :P W czym dokładnie jest problem? Chcesz zrobićinclude($_GET['page']);czy by strona.php miała zmienną wartość?
//edit
Przecież to jest definitywnie Ajax <_< Chyba że chcesz iframe :P
Użytkownik andrzej_aa edytował ten post 03 sierpień 2007, 19:48
O ile dobrze zrozumiałem, to chcesz aby po wysłaniu formularza nie doszło do przeładowania całej strony (czyli wszystkiego co jest wyświetlane w przeglądarce), tylko do przeładowania załączanego pliku. Tak się niestety nie da. Includowanie odbywa się już na serwerze, a do przeglądarki dociera jeden dokument HTML (no chyba, że stosujesz ramki). Jeśli nie chcesz przeładowania całego wyświetlanego dokumentu to albo AJAX, jak sugerował andrzej_aa, albo stronę z formularzem umieść w ramce (np iframe). Tyle, że to drugie rozwiązanie jest be.

//edit
include($_GET['page']);
Powyższego szczerze odradzam. To bardzo ryzykowne rozwiązanie.

Pozdrawiam.
Użytkownik mikele edytował ten post 03 sierpień 2007, 20:13

@jeszcze raz up:
Rozwiń swoją myśl, z tym inputem "hidden", bo troche nie rozumiem do czego dążysz... ;-)


Bez przeładowywania to only AJAX. Jednak możesz w pliku strona.php dodać kod w formularzu:
<input name="action" type="hidden" value=<? echo '"''.$_GET['action']."'; ?> />
Oczywiście strona będzie całkiem odświeżana przy takim rozwiązaniu, ale będzie przechodzić na stronę index.php?action=strona&wartosc=cośtam czyli zrobi to co chciałeś osiągnąć.
Użytkownik kiperoman edytował ten post 03 sierpień 2007, 20:36
@kiperoman:
:notworthy:
Po malych przeróbkach jest :thumbsup:

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.