Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Podmienianie podstron
Forum PHP.pl > Forum > Przedszkole
Gość_kris
Witam wszystkich
Już pewnie znany jest to każdemu temat jednak ja nie znalazlem dokladnie tego o co mi chodzi i myśle ze jest to wlasciwe miejsce gdzie dostane odpowiedz. Chodzi mi o podmienianie podstron, moze pokaze jak to wyglada. Mam 3 pliczki index.php, id_funkcji.php, funkcje_wyswietl.php..

index.php wyglada;
  1. <?php 
  2.  echo '<table border=1 width = \"100%\" height=\"100%\" ></p>';
  3.  echo '<tr><td>';
  4.  include('id_funkcji.php');
  5.  echo '</td><td>';
  6.  include('id_funkcji.php');
  7.  echo '</td></tr></table>'; 
  8. ?>


id_funkcji.php wyglada;
  1. <?php
  2. include_once('funkcje_wyswietl.php');
  3.  
  4.  $id = $_GET['id'];
  5.  
  6.  $i++;
  7.  
  8.  if ($id == 1 || $i==1) lewa();
  9.  if ($id == 2 || $i==2) prawa();  
  10. ?>


funkcje_wyswietl.php wyglada;
  1. <?php
  2.  
  3. function lewa()
  4. {
  5. $i++;
  6. $b="nazwa$i";
  7. echo "<tablce border=1 width = \"50%\" height=\"100%\">"; 
  8. echo "<tr><td>";
  9. echo "<a href=\"id_funkcji.php?id=2\">$b</a></br>";
  10. echo "</td></tr></table>";
  11.  }
  12.  
  13.  function prawa()
  14. {
  15. $i++;
  16. $b="nazwa$i";
  17. echo "<tablce border=1 width = \"50%\" height=\"100%\">"; 
  18. echo "<tr><td>";
  19.  echo "<a href=\"id_funkcji.php?id=1 \">$b</a></br>";
  20.  echo "</td></tr></table>";
  21.  }
  22.  
  23.  ?>


Chodzi o to zeby nie byla przeladowywana cala strona tylko ta do ktorej sie odnosze klikajac na linki, dla sprawdzenia probowalem zrobic licznik gdzie po najechaniu na link danej strony zwieksza mi sie licznik na drugiej stronie zeby zobaczyc czy przypadkiem nie zostaje wczytywana cala strona. Linki wogole to nie dzialaja ale dlatego ze za kazdym razem jest wczytywana strona albo lewa albo prawa. Mam nadzieje ze zrozumieliscie o co mi chodzi, licze na wasza pomoc. Nie ukrywam ze zalezy mi na czasie. Dzieki z gory.


Poprawiłem
~mike_mech
Gość_kris
Zapomnialem dopisać ze mam już zrobiony wiekszy projekt ktory podobnie dziala jak to opisalem jednak caly jest zrobiony na freimset a wiem ze z ramkami jest róznie dlatego też chce go przerobic na tabele. Podsumowując chodzi o to zeby index.php zostal wczytany raz natomiast strony lewa i prawa byly podmieniane odwolujac sie do nich klikajac na linki.
quality
No jezeli dobrze rozumiem to chodzi Ci o to ze po wcisnieciu na link to lewa_strona.php ma sie otwierac w innej ramce tak? To robisz odnosnik i i w target wpisaujesz nazwe tej ramki np:
  1. <a href="lewa_strona.php" target="nazwa_frameset"> link</a>


Jezeli o to chodzi ;]
Gość_kris
Dziekuje za odpowiedz ale nie zupelnie o to mi chodzi, w sumie ja takze nie wiem o co mi chodzi bo juz sie calkowicie zakrecilem: stronke która ciągle ulepszam to sklep internetowy
znajdujący się na www.colpex.avx.pl może przedstawie dokladnie o co mi chodzi. Cała strona jest zrobiona na frameset i po krotce kilka linijek kodu co się znajduje w poszczegolnych plikach.

1. plik index.php
  1. <?php
  2.  require ('lacz_strony.php');
  3. echo '<frameset cols="*,1050px,*" frameborder=0 >';
  4. echo '<frame name="margines" scrolling="no" >';
  5. echo '<frameset rows="170px,*" frameborder=0>';
  6. //echo '<frame name="margines" scrolling="no" >';
  7. echo '<frame name="naglowek" src="id_funkcji.php?id=23" scrolling="no" >';
  8.  
  9.  echo '<frameset cols="185px,690px , 165px" frameborder=0 >';
  10. echo '<frame name="lewa" src="id_funkcji.php?id=20" scrolling="no" >';
  11. echo '<frame name="srodek" src="id_funkcji.php?id=1" scrolling="no" >';
  12. echo '<frame name="prawa" src="id_funkcji.php?id=21" scrolling="no" >';  
  13.  
  14. echo '</frameset>';
  15.  echo '<noframes>';
  16. echo 'Twoja przeglądarka nie obsługuje ramek.';
  17. echo '</noframes>';
  18. echo '</frameset>';
  19. ?>
  20.  

2. plik lacz_strony.php
  1. <?php
  2. include_once('funkcje_prawid_dane.php');
  3. include_once('funkcje_wyswietl.php');
  4. include_once('lista_funkcji.php');
  5. include_once('funkcje_pobierz.php');
  6. include_once('funkcje_zamowien.php');
  7. ?> 
  8.  


3. plik id_funkcji.php w którym są numery funkcji które chce wywołać:
  1. <?php
  2. require ('lacz_strony.php');
  3.  $id = $_GET['id'];
  4.  if ($id == 1) str_lewa(); 
  5. ?>
  6.  


4. plik z funkcjami wywolanymi przez id z pliku id_funkcji.php , przykladowo:
  1. <?php
  2. function str_lewa()
  3. {
  4. $idkat = $_GET['idkategori'];
  5.  
  6. $tablica_podkategori = pobierz_podkategorie($idkat);
  7. wyswietl_podkategorie($tablica_podkategori);
  8. }
  9. ?>
  10.  


5.plik funkcje_wyswietl.php w którym są rózne formularzei generalnei wszystko to co mi sie wyswietla wraz z linkami, przykladowo:
///funkcja wyswietlajaca podkategorie danej kategori po ktorych kliknieciu otwiera mi sie to na stronie srodkowej
  1. <?php
  2.  
  3. function wyswietl_podkategorie($tablica_podkategori)
  4. { 
  5. foreach ($tablica_podkategori as $rzad)
  6. {
  7.  $a= $rzad['idpodkategori'];
  8.  $b= $rzad['nazwapodkategori'];
  9. $url = 'id_funkcji.php?id=2&idpodkategori='.$a;
  10. $tytul = $b; 
  11. echo "<a href =\"$url\" target=\"srodek\" class=\"menu_pkat1\">$b</a>"; 
  12. }
  13. }
  14.  
  15. ?>

To wszystko dziala, chcialem ci zakreslic jak to mam sobie rozplanowane. Chce zeby to bylo tak jak jest tylko zeby zamiast frameset uzywac tabel.
Ale tez aby nie wczytywać np. po wcisnieciu na dany link z lewej strony calej strony tylko zeby lewa strona zostawala gdzie jest a zmieniala sie np. prawa.
Ale też zeby nie odwolywać się do index.php. Bo wtedy znowu będzie wczytywana cala strona. Także chce uniknac tego zeby nie robić w funkcji id_funkcji.php includów , zeby to zostalo tak jak jest bo czytalem na niektórych forum ze mozna stosowac include i bedzie oki ale wtedy trzebabybylo zrobic bardzo duzo plików a ja chce sie odwolywac do funkcji czyli zostawic to tak jak jest. Na podanej stronce colpex chce zeby to dzialalo tak jak dziala ale zeby bylo to zrobione na tabelach jesli wogole tak sie da.
imashjan
a czy tu nie chodzi o takie cos?
  1. index.php?a=strona

questionmark.gif
Gość_kris
No znowu nie, wlasnie chce zeby index wczytal sie tylko raz przy uruchamianiu i zeby pozniej podmieniac strony tzn klikajac na link z lewej ma sie cos otwierac na srodku ale tylko na srotku np. zeby nie bylo tak ze zostaje wczytany srodek ale tez i naglowek itd.. wydaje sie jednak ze bez ramek nic sie nie da zrobic, zostawie to chyba tak jak mam bo jest dobrze tyle ze na tabelach napewno wygladaloby to znacznie lepiej. Dzieki i juz nie bede wracal do tego,zostawie to tak jak mam na ramkach. Dzieki za pomoc.
djmassive
Jeżeli dobrze rozumię, chcesz aby Twój sklep opierał się na tabelach tj.

header (czyli logo, ew banner i podst menu)
lewa (np. spis kategorii)
środek (jakieś tam produkty w promocji lub nie)
prawa (np. wyszukiwarka, logowanie i koszyk)

więc co mogę doradzić, ramki rzeczywiście nie są najlepszym rozwiązaniem, też je stosowałem do pewnego momentu. Musisz zrobić mniej więcej tak w pliku index.php

  1. <?php
  2.  
  3. <table width=100% height=100% border=0>
  4. <tr>
  5. <td>
  6.  
  7. ?>

teraz tutaj musisz zrobić sobie tabele górną (tzw. naglowek czy jak kto tam nazywa)
  1. <?php
  2.  
  3. <table width=100% height=100>
  4. <tr>
  5. <td>
  6. [php]
  7. tutaj wpisujesz sobie np. obrazek itp (zakładamy, że to jest logo)
  8.  
  9.  
  10. </td>
  11. </tr>
  12. <tr>
  13. <td>
  14. ?>



podstawowe menu

  1. <?php
  2. </td>
  3. </tr>
  4. </table>
  5. ?>

mamy górę smile.gif jest cud - teraz robimy to samo, przyczym dzielimy tabele na 3 części, które dadzą nam lewy, środek i prawy panel

  1. <?php
  2.  
  3. <table width=100% height=100%>
  4. <tr>
  5. <td width=30%>tutaj masz lewy panel (1)*</td>
  6. <td width=30%>tutaj środek(2)*</td>
  7. <td width=30%>tutaj prawy(3)*</td>
  8. </tr>
  9. </table>
  10. </td>
  11. </tr>
  12. </table>
  13.  
  14. ?>

zakładając, że lewy i prawy się nie zmienia specjalnie, w miejsce(x) * wstawiasz kolejno najprostszą zmienną:

(1)* > zmienna np. include('$lewypanel');
(2)* > include('$srodek');
(3)* > include('$prawy');

i w ten oto sposób masz prosty szablon, który jeżeli przekształcisz odpowiednio, możesz wysyłać 'obraz' danego panela poprzez zmienne ?lewypanel=$nazwa_pliku,lub coś tam innego smile.gif

Najprostrzy chyba sposób szablonowy, ale nie najlepszy, siądziesz to pomyślisz smile.gif i napewno zjarzysz już jak to można zrobić smile.gif
z4l.pl
Próbowałem ten kod wcisnąć w w tabele ale coś nie idzie... <sadface>

chodzi mi o to by na początku wgrywania strony wyświetlany był plik 'newsy.php',
a gdy wejde w link to na jego miejscu byłby np. rejestracja.php... mógłby ktoś mi pomóc? worriedsmiley.gif
z4l.pl
tzn. ja już tabele mam i wszystko tylko potrzebuje ten kawałek kodu, że jak ktoś wejdzie na strone na na środku w tabeli będzie wyświetlany najpierw 'newsy.php', a jak wejdzie w inny link to inna zawartość w ich miejsce... tongue.gif
djmassive
Nie widze innego wyjścia jak w każdym pliku który ma być wyświetlany wykorzystać pierw tabele exclamation.gif i po kłopocie exclamation.gif

to co wyżej napisałem - piszesz w index.php (gdzie w srodku) includujesz newsy.php?op=pokaz, kolejny plik to samo - walisz tabele jak wczesniej i w srodku ustawiasz np. rejestracja.php?op=zarejestruj i po kłopocie
popo
erm o ile dobrze zrozumialem to kris chce zeby strona dzialala tak jak na ramkach czyli przeladowuje sie fragment odpowiadajacy dawnej ramce a nie cala strona.

W zwiazku z powyzszym, jesli cala strona jest na tabelach czy divach to nie bardzo widze mozliwosc przeladowania jej fragmentu (w tym momencie jest to caly dokument a nie 2 lub 3 oddzielne jak na ramkach). Jedyne wyjscie zeby tylko fragmenty strony przeladowywyac to XMLHTTPRequest + javascript czyli tak zwany AJAX (wczytywanie kodu xml z serwera i dynamiczna zmiana zawartosci strony bezposrednio w przegladarce (jest do tego kilka klas gotowych)

btw w USA ponoc ktos AJAX'a opatentowal ?!?
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.