Creare mai multe pagini cu $_GET si un singur fisier PHP

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
tycyssg
Mesaje: 58

Creare mai multe pagini cu $_GET si un singur fisier PHP

Revin iar cu intrebari
Cum m-ai lamurit anterior cu scriptul ala de reparatii , l-am pus pe un template e ok.Dar cineva ma sfatuit ca e o chestie in php cu variabila $_GET prin care poti avea aceeasi pagina ca template dar sa iti afiseze alte rezultate.
Mi-a aratat un cod de genu pe care nu prea il inteleg.

Cod: Selectaţi tot

www.somesite.com/example_id=123&another_example_id=456

Cod: Selectaţi tot

$id_1 = $_GET['example_id'];
$id_2 = $_GET['another_example_id'];

// testing we caught the ids //
print("The example id: $id_1 and the another example id is: $id_2");
In principiu vreau sa scap copii aceeasi pagina de vreo 45 de ori (pentru fiecare model de tel). Daca imi poate explica cineva cat de cat mai concis si cu un exemplu ar fi perfect.
Multumesc.

MarPlo Mesaje: 4343
Salut
Cu $_GET['nume'] se poate prelua din adresa URL valoarea asociata la "nume". Apoi, aceasta valoare poate fi utilizata in script-ul PHP ca sa proceseze anumite date si sa returneze /afiseze ceva in functie de valorile adaugate in adresa URL. Astfel, acelasi script /fisier PHP poate sa returneze date /pagini diferite pt fiecare adresa URL cu valori diferite.
De exemplu, daca ai un Array cu mai multe adrese de site-uri si vrei ca acelasi fisier PHP sa afiseze o anumita adresa in functie de valoarea $_GET, se face asa:

Cod: Selectaţi tot

<?php
$sites = array(
  'mp'=>'marplo.net',
  'cw'=>'www.coursesweb.net',
  'ph'=>'www.php.net'
);

// daca sunt primite date prin $_GET['s'], si exista in $sites element cu acea chei /index, afiseaza adresa asociata
// altfel, afiseaza un text
if(isset($_GET['s']) && isset($sites[$_GET['s']])) {
  $key = $_GET['s'];
  echo $sites[$key];
}
else echo 'Menu:';
?>
<div>
<a href="acest_fisier.php?s=mp" title="MarPlo">MarPlo</a><br/>
<a href="acest_fisier.php?s=cw" title="CoursesWeb">CoursesWeb</a><br/>
<a href="acest_fisier.php?s=ph" title="PHP">PHP</a>
</div>
"acest_fisier.php" e numele fisierului PHP in care e adaugat acest cod.
Similar, in functie de valoarea adaugata in adresa URL a paginii pot fi afisate date din diferite fisiere salvate pe server, sau dintr-o baza de date, in functie de valoarea de la $_GET.

Pe site e un curs de PHP, poti invata din lectiile si tutorialele din acel curs. De exemplu, cate ceva despre $_POST si $_GET la pagina: https://marplo.net/php-mysql/lucru_formulare.html
Mai este si optiunea de cautare; iar daca nu stii ce face o anumita functie PHP, poti gasi explicatii si exemple pe site-ul: php.net .

Vezi daca iti e de folos si acest tutorial: Creare site cu PHP, fara baza de date.

tycyssg Mesaje: 58
Am inteles si nu prea , pentru ca nu prea am idee cum sa adaptez.
Deci fac acel array $sites.dar eu in loc de adresele alea trebuie sa fac niste pagini nu? sau vorbesc eu prostii ca nu imi dau seama.hai sa explic mai bine.

"tygeo.co.uk/repairs.php#.UDIR192TtWQ" - aici e pagina de comenzi. Daca apesi pe Make a order spre exemplu de la Apple se deschide.

tygeo.co.uk/applerep.php#.UDITmN2TtWQ - Aici in dreapta e un meniu ce contine toate numele de device-uri ce pot fi reparate.daca alegi din meniu Iphone 3gs se deschide
tygeo.co.uk/3gs.php#.UDIU4N2TtWQ - care e pagina finala de afiseaza reparatiile.

Asta e doar pentru un telefon.Dar dupa cum observi la Apple sunt vreo 10 tipuri , apoi pentru Nokia la fel , HTC , BlackBerry , Laptops.In total vor fi vreo 45 de pagini gen 3gs.php doar ca cu alt nume.

Acum dupa mine cred ca fac acel array in fiecare pagina parinte. in cazu de aici applerep.php.

Cod: Selectaţi tot

$sites = array(
  '3g'=>'3g.php',
  '3gs'=>'3gs.php',
  '4'=>'4.php'
);
 
Dupa care vine scriptul si apoi acele linkuri care in cazul meu le voi baga in meniul acela:

Cod: Selectaţi tot

<a href="apple.php?s=3g" title="Iphone 3g">Iphone 3g</a><br/>
<a href="apple.php?s=3gs" title="Iphone 3gs">Iphone 3gs</a><br/>
<a href="apple.php?s=4" title="Iphone 4">Iphone 4</a>
Dar acum continutul paginilor 3g,3gs,4 unde vor fi ? Ca eu asta nu inteleg, pentru ca in fiecare pagina am acelasi template dar scriptul e diferit.

Cod: Selectaţi tot

<?php
mysql_select_db("autentificare", $conexiune);
$result=mysql_query("SELECT *FROM reparation WHERE phonemodel='3gs'");
          while($row = mysql_fetch_array($result))
              {
                 echo'
                <div class="menupricelist">
          <div class="useus">'.$row['namerep'].'</div>
          <form>
           <table width="735"><tr><td valign="top" width="560">
           <div class="centerpricelist">&ensp;'.$row['desreparation'].' </div>
           <div class="wetry">'.$row['daylimsj'].'</div>
            </td><td valign="top">
            <div class="pricelistbuton">
                <div class="pret">£ '.$row['price'].'</div>
                <center><div><input class="butonpret" type="submit" value="Add to cart" name="addcart"></div></center>
            </div>
            </td></tr></table></form>
          </div>
          <br />
          ' ;
              }        
          mysql_close($conexiune);
?>
Acel WHERE ( WHERE phonemodel='3gs') trebuie sa il schimb in functie de pagina..adica 3g , 4 , 4s etc. Deci cam asta e dilema mea. Daca ma poti ajuta ok , daca nu iarasi e ok , sunt constient de timpul pierdut si atele.

O zi buna si mersi pana aici .

P.S: Nu stii dc imi apare acel sir "#.UDIR192TtWQ" dupa php , ca nu imi dau seama dc.

MarPlo Mesaje: 4343
Daca ai continut static, diferit pt. fiecare pagina, il poti adauga in fisiere TXT, HTM, pe server, apoi incluzi fisierul pt. pagina accesata in functie de valoarea din $_GET.
Exemplu:

Cod: Selectaţi tot

$file = strip_tags($_GET['s']);       // sterge posibile tag-uri ce pot fi adaugate in URL, la "s"
include($file. '.htm');
 
- Ideea este sa folosesti acelasi template o singura data, doar continutul care se schimba sa fie adaugat in fisiere separate. Astfel, cand faci modificari la template, editezi doar acel fisier PHP.

Daca ai continutul intr-o baza de date, ca sa selectezi doar ce trebuie pt acea pagina, in functie de adresa URL, se adauga la conditia WHERE valoarea din $_GET.
Asa:

Cod: Selectaţi tot

$val = strip_tags($_GET['s']);       // sterge posibile tag-uri ce pot fi adaugate in URL, la "s"
$val = mysql_real_escape_string($val);         // filtreaza valoarea pt utilizare in siguranta in MySQL
$result = mysql_query("SELECT *FROM reparation WHERE phonemodel='$val'");
 
- Acel cod care apare in adresa paginii in browser e de la un script JavaScript din pagina. Nu stiu care sau de ce.

Subiecte similare