Creare mai multe pagini cu un fisier PHP si variabila GET

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

Creare mai multe pagini cu un fisier PHP si variabila GET

Salut , Poate cineva da un exemplu cam cum se poate lucra cu variabila GET sa faci mai multe pagini intr-una singura.
Gen vreau sa fac o Select si un Update din SQL la un form,si vreau sa le pun pe ambele intr-un singur fisier HTml sau mai multe in acelasi fisier.

Sau vreau sa pot crea printr-un form un meniu de tip lista,iar fiecare element din lista sa ma directioneze catre o pagina.

Cod: Selectaţi tot

Iphone - domeniu.ro?=pagina=iphone
Ipad -  domeniu.ro?=pagina=ipad
Iphod - domeniu.ro?=pagina=iphod
Si pentru fiecare element din lista de mai sus sa nu creez cate o pagina html.Stiu ca se poate face cu get dar nu-mi dau seama cum.Am gasit doar pentru form si cam atat.Sau poate am cautat eu gresit.

M-ar putea ajuta cineva cu un exemplu.
Multumesc Mult.

MarPlo Mesaje:4343
Salut
Vezi acest tutorial: Creare site cu PHP, fara baza de date.
Precum si raspunsurile de la subiectul de pe forum: Creare mai multe pagini cu $_GET si un singur fisier PHP

tycyssg Mesaje:58
M-am uitat peste raspunsurile acelea,imi amintesc de acea discutie dar nu am reusit atunci sa fac ceva asemanator.
Atunci iti cer o opinie sau o solutie la cum as putea aborda urmatoarea problema in noul site.
- counter-kgb-clan.com/phones/ - Sa ne rezumam doar la meniul "Apple Devices" Acolo acea lista de Linkuri care ulterior ma va trimite pe o pagina principala unde voi afisa toate "device apple" ce le vreau pe pagina.

Apoi fiecare device in parte de exemplu "Iphone 5s" sa ma duca pe o alta pagina unde voi afisa reparatiile pt "iphone 5".

Exact cum am spus si in subiectul precedent.Cum as putea evita sa creez toate acele pagini pt fiecare telefon in parte ( care practic vor avea acelasi design/cod Html doar ca vor avea alt Select din DB gen "cod MSQL select , where phonemodel ="5s" / where phonemodel="5" si tot asa ")

Cu siguranta tu ai mai multa experienta deci cred ca ai o idee cum as putea face asta.

Ms.

Eu unu cand m-am gandit la get ca as putea face cam asa.

Pagina HTML cu design
Cod Mysql pt 5s
Cod mysql pt 5
etc.

Iar din Linkurile de la appel devices sa apelez direct codul "Cod Mysql pt 5s".
M-am gandit teoretic practic nu prea stiu cum sa fac.
Dar initial astept ideea ta.

MarPlo Mesaje:4343
Dupa ce sunt adaugate datele in baza de date, se face select-ul pt creare meniu. Asta depinde cum ai structurate tabelele in baza de date.
In principiu trebuie sa obtii id-urile care le adaugi la valoarea lui GET in adresa URL.

Cod: Selectaţi tot

SELECT id FROM tabel WHERE conditie
Si sa definesti link-uri de forma:
.../pagina.php?id=id_pagina
Apoi, in "pagina.php" se preia id-ul din get si se face Select pt acel id, ca sa obtii randul din tabel cu datele paginii cu acel id.
Cam asa:

Cod: Selectaţi tot

$id = intval($_GET['id']);    // intval() ca sa fii sigur ca e numar intreg
$sql = "SELECT titlu, descriere, continut FROM tabel_pagini WHERE id = $id LIMIT 1";
// Aici se preia titlu, descriere si continut si-l adaugi in codul html
Cam asta e ideea.

Nu ma pun sa fac tutorial despre asta, cum sa faci tabelele in baza de date, cum se adauga datele, etc.; deja or fi destule pe internet; chiar si unul mai vechi pe acest site: Creare site cu PHP si MySQL - CMS.
Poti gasi si pe internet, la cautare: " create web page with php and mysql ".

- Mai departe ramane sa incerci, vezi ce-ti iese si unde nu te descurci mai intrebi, referitor la ce cod faci.

tycyssg Mesaje:58
Deci sa vad daca am inteles.

Practic creez in baza de date un tabel cu randurile ce-mi trebuiesc mie.

Dupa care In pagina.php (care sa spunem ca inlocuieste iphonedevices.php) fac selectul pe id care ar trebui sa-mi creeze meniul de modele de telefon.
Care ar fi cam asa .

Cod: Selectaţi tot

(id pe autoincrement in sql)
COd HTML
<ul>
cod sql 
<li>.row[titlu]<a href="pagina.php?id=.row[id]"></a></li>
<ul>
Dupa care tot in aceeasi pagina, preiau din sql datele pe id-u respectiv.

Si id fiind pe autoincrement ar trebui sa-mi ia pe rand toate modelele de telefon.

Dar GET tot nu stiu unde sa-l pun in pagina.php sau sub ce forma ar trebui sa-l pun.

MarPlo Mesaje:4343
In pagina.php verifici daca exista $_GET['id'], preiei valoarea lui, adica id-ul, si selectezi cu el datele din tabel de la acel id.

Cod: Selectaţi tot

if(isset($_GET['id'])) {
  $id = $_GET['id'];
  // restul codului, cu Select in mysql si preluare date de la acest id
} 
Mai clar de atat nu stiu sa explic, daca tot nu intelegi, incearca si testeaza codul asa cum pricepi; si poate o sa mai raspunda si altcineva mai clar.

tycyssg Mesaje:58
Am cam 12 ore de stat numa cu ochii pe google si pe variabilele astea get si mare lucru nu am reusit sa invat.
Am ajuns la la niste concluzii si un script.
M-am gandit sa structurez formularul de adaugat reparatii separat pe fiecare "brand" de telefon.
Dupa care am facut urmatorul cod.

Cod: Selectaţi tot

<?php
$sql = "SELECT id,phonemodel FROM iphone";
$rows = $conn->sqlExec($sql);

$nr_rows = $conn->num_rows;
if($nr_rows>=0) {
  foreach($rows as $row){
  $id = (int)$_GET['".$row["id"]."'];
  
  switch($id){
  case '':
  echo '
  <ul>
  <li><a href="iphone.php?id='.$row['id'].'">'.$row['phonemodel'].'</li>
  </ul>
  ';
  break;
  
  case '"$row["id"]"':
  $sql = "SELECT * FROM iphone WHERE id = $id ";
  $rows = $conn->sqlExec($sql);

$nr_rows = $conn->num_rows;
if($nr_rows>0) {
  foreach($rows as $row){
   echo 'Nume Tel: '.$row["phonemodel"].' Titlu : '.$row["titlereparation"].' Pret : '.$row["price"].' Message : '.$row["mesajpromotional"].' ID : '.$row["id"].'<br />';
   }
  }
  else {
  echo '0 Results';
 }
 break;
  }
 }
}
?>
Am incercat sa-ti urmez ideea , dar nu stiu ce select si ce conditie pt WHERE sa pun ca sa obtin valoarea pt ID.Practic nu stiu cum sa o fac.

In speranta ca voi reusi sa fac acel select :

Cod: Selectaţi tot

  switch($id){
  case '':
  echo '
  <ul>
  <li><a href="iphone.php?id='.$row['id'].'">'.$row['phonemodel'].'</li>
  </ul>
  ';
  break; 
In partea asta de cod , vreau sa fie pagina principala,meniul cu modelele de telefoane.
SI in ce a mai ramas paginile cu reparatii pt fiecare telefon apelandu-le din GET.

M-am inspirat de pe youtube ca sa inteleg cum functioneaza GET , dar asta e tot ce am reusit.
Intr-un final primesc urmatoarele erori.
Notice: Undefined index: ".$row["id"]." in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\phone\iphone.php on line 122
Iphone 5s
Daca dau click pe unu-l din linkuri (Iphone 5s,Iphone 3).
Browser-ul imi arata urmatorul url.

Cod: Selectaţi tot

localhost/phone/iphone.php?id=1
localhost/phone/iphone.php?id=2
Etc.
Practic cumva am reusit sa afisez Meniul cu modelele de tel si sa dau valoare la linkuri dar nu reusesc sa afisez selectul continutul fiecarui tel.

Linia 122 -

Cod: Selectaţi tot

  $id = (int)$_GET['".$row["id"]."'];
Scuze anticipate pentru povestea asta asa lunga.

MarPlo Mesaje:4343
Scuze, dar codul e complet aiurea. Nu stiu de ce foloseste "switch()" si "case" cand nici nu stii cum se utilizeaza, si de ce ai Selectul pentru id in foreeach() de la selectul pentru meniu.
Poti folosi simplu instructiuni if() si "else" in loc de switch(), sau vezi si in manualul php ce e cu switch().
Parerea mea e ca te grabesti si aplici bucati de cod fara sa stii ce fac.
Mai simplu e mai bine.

Cod: Selectaţi tot

// Partea de select pentu meniu
$sql = "SELECT id,phonemodel FROM iphone";
$rows = $conn->sqlExec($sql);

$nr_rows = $conn->num_rows;
$meniu = '<ul>';
if($nr_rows>=0) {
  foreach($rows as $row){
    $meniu .= '<li><a href="iphone.php?id='.$row['id'].'">'.$row['phonemodel'].'</li>';
  }
}
$meniu .= '</ul>';
echo $meniu;

// Select date de la id
if(isset($_GET['id'])) {
  $id = (int) $_GET['id'];
  $sql = "SELECT * FROM iphone WHERE id = $id ";
  // restul ...
} 
- Mai mult nu ma bag pe codul tau.

tycyssg Mesaje:58
DUpa cum spuneam nu am inteles cum functioneaza GET,si pe unde am citit unii foloseau swich si la primul Case fara nici o instructiune sa apara Pagina de meniu iar case-ul al doilea sa-mi selecteze id-u care se incrementa ulterior.

Stiu ca mai simplu e mai bine :)

Ms pt ajutor

Subiecte similare