[Rezolvat] PHP URL friendly problem!
Moderatori: Moderatori, Start Moderator
-
adrianmihai
- Junior Member
- Mesaje: 41
- Membru din: Mie Mar 27, 2013 9:53 am
[Rezolvat] PHP URL friendly problem!
Ultima oară modificat Mar Mar 18, 2014 12:06 pm de către adrianmihai, modificat 1 dată în total.
Re: PHP URL friendly problem!
Salut
De ce transformi sirul pt "url" din GET in numar, cu (int)?
In coloana 'url' din baza de date e numr sau sir?
- mysql_query() e functie de muzeu, in prezent se foloseste PDO sau MySQLi.
De ce transformi sirul pt "url" din GET in numar, cu (int)?
In coloana 'url' din baza de date e numr sau sir?
- mysql_query() e functie de muzeu, in prezent se foloseste PDO sau MySQLi.
Cursuri gratuite: | | | |
-
adrianmihai
- Junior Member
- Mesaje: 41
- Membru din: Mie Mar 27, 2013 9:53 am
Re: PHP URL friendly problem!
Cea cu int era pentru cazul in care afisam pagina dupa id si anume: pages.php?id=1
Ce trebuie sa modific pentru a rezolva problema descrisa mai sus. Problema e ca script-ul functioneaza pentru url, insa in pagina la apelare imi apare de exemplu la continut tot continutul din baza de date din toate insert-urile, nu se delimiteaza de id, adica daca apelez din browser www.site.ro/despre-noi in loc sa-mi apara continutul de la pagina despre-noi care are ID-ul 1 imi apare continutul pentru toate paginile scrise in baza de date adica si cele cu id 2,3 etc. Nu sunt delimitate de id.
Ce trebuie sa modific pentru a rezolva problema descrisa mai sus. Problema e ca script-ul functioneaza pentru url, insa in pagina la apelare imi apare de exemplu la continut tot continutul din baza de date din toate insert-urile, nu se delimiteaza de id, adica daca apelez din browser www.site.ro/despre-noi in loc sa-mi apara continutul de la pagina despre-noi care are ID-ul 1 imi apare continutul pentru toate paginile scrise in baza de date adica si cele cu id 2,3 etc. Nu sunt delimitate de id.
- mndrk
- Senior Member
- Mesaje: 271
- Membru din: Mar Iun 22, 2010 12:02 pm
- Localitate: Bucuresti
- Contact:
Re: PHP URL friendly problem!
După cum vrei tu ai două alegeri:
1. (recomandat) să adaugi în tabelul din baza de date o nouă coloană cu url-ul către pagină ( nu complet, ci doar denumirea, în exemplul tău: despre-noi ); Apoi când citeşti din baza de date, în primul rând ştergi linia cu $url = (int) $_GET['url']; care e greşită chiar şi cum e scrisă acum, tu vrei să transformi "despre-noi" in număr, o să primeşti mereu valoarea 0.
2. Să scrii în .htaccess către o regulă pentru fiecare pagină. In care scrii manual id-ul paginii în funcţie de url. Nu recomand acest lucru pentru că o să trebuiască să modifici fişierul de fiecare dată când adaugi o nouă pagină în baza de date.
1. (recomandat) să adaugi în tabelul din baza de date o nouă coloană cu url-ul către pagină ( nu complet, ci doar denumirea, în exemplul tău: despre-noi ); Apoi când citeşti din baza de date, în primul rând ştergi linia cu $url = (int) $_GET['url']; care e greşită chiar şi cum e scrisă acum, tu vrei să transformi "despre-noi" in număr, o să primeşti mereu valoarea 0.
2. Să scrii în .htaccess către o regulă pentru fiecare pagină. In care scrii manual id-ul paginii în funcţie de url. Nu recomand acest lucru pentru că o să trebuiască să modifici fişierul de fiecare dată când adaugi o nouă pagină în baza de date.
-
adrianmihai
- Junior Member
- Mesaje: 41
- Membru din: Mie Mar 27, 2013 9:53 am
Re: PHP URL friendly problem!
In baza de date am camp cu denumirea url, in care e trecuta pagina despre-noi. Cu, codul postat mai sus si fisier-ul .htaccess pagina functioneaza din browser daca scriem http://site.ro/despre-noi - insa in aceasta pagina imi afiseaza tot continutul din toate paginile unul sub altul si nu separat de exemplu la despre-noi continutul paginii despre noi, iar la cum-comand continutul paginii cum comand. Mie imi afiseaza toate continuturile unul sub altul, si face asta probabil ca nu ii s-a furnizat un ID dupa care sa se ghideze, daca modific in codul de mai sus url cu id si apelez pagina in formatul pages.php?id=1 atunci totul functioneaza corect.
- mndrk
- Senior Member
- Mesaje: 271
- Membru din: Mar Iun 22, 2010 12:02 pm
- Localitate: Bucuresti
- Contact:
Re: PHP URL friendly problem!
De aceea scriam să nu cauţi după id, ci după denumire. Pentru că nu ai id-ul în URL, nu are de unde să ştie ce id vrei, iar (int) de orice string o să rezulte în 0. Nu ştiu cum de îţi afişează toate paginile, având în vedere că ai LIMIT 1, doar dacă nu ţi-a făcut match pe pagină, deşi exemplul dat de tine e corect pe partea aceasta şi face match rezultând în url-ul: http://site.ro/pages.php?url=despre-noi
Deci în $_GET['url'] ai valoarea 'despre-noi', iar în $url o să ai valoarea 0 din cauza acelui (int).
Deci în $_GET['url'] ai valoarea 'despre-noi', iar în $url o să ai valoarea 0 din cauza acelui (int).
-
adrianmihai
- Junior Member
- Mesaje: 41
- Membru din: Mie Mar 27, 2013 9:53 am
Re: PHP URL friendly problem!
Limit 1 e pentru continutul de meta, cuvinte cheie, descriere, titlu.
Codul functioneaza. Eu nu inteleg de ce atunci cand apelez pagina despre-noi, sau cum-comand - imi afiseaza tot continutul din toate paginile postate in baza de date, indiferent ca in url scriu despre-noi sau cum-comand.
Codul functioneaza. Eu nu inteleg de ce atunci cand apelez pagina despre-noi, sau cum-comand - imi afiseaza tot continutul din toate paginile postate in baza de date, indiferent ca in url scriu despre-noi sau cum-comand.
- mndrk
- Senior Member
- Mesaje: 271
- Membru din: Mar Iun 22, 2010 12:02 pm
- Localitate: Bucuresti
- Contact:
Re: PHP URL friendly problem!
Si eu ti-am spus de ce. Pentru că tu în $url ai valoarea 0.
Deci:
http://site.ro/despre-noi
= > http://site.ro/pages.php?url=despre-noi
=> $_GET['url'] = 'despre-noi'
=> $url = (int)$_GET['url'] = 0 (orice string, dacă nu începe cu cifră e transformat în 0 )
=> în query-ul mysql că ajungi să compari url = 0.
Acum dacă in baza ta de date coloana url este de tip string, o să-ţi returneze absolut toate rezultatele; dacă e de tip integer, nu o să-ţi returneze nimic.
Am obs mai târziu că ai limit doar la meta, în primul rând nu ai nevoie de atâtea query-uri, din primul query citeşti toate datele de care ai nevoie, apoi în al doilea rând, query-ul e greşit deoarece tu nu îi trimiţi id-ul.
Deci:
http://site.ro/despre-noi
= > http://site.ro/pages.php?url=despre-noi
=> $_GET['url'] = 'despre-noi'
=> $url = (int)$_GET['url'] = 0 (orice string, dacă nu începe cu cifră e transformat în 0 )
=> în query-ul mysql că ajungi să compari url = 0.
Acum dacă in baza ta de date coloana url este de tip string, o să-ţi returneze absolut toate rezultatele; dacă e de tip integer, nu o să-ţi returneze nimic.
Am obs mai târziu că ai limit doar la meta, în primul rând nu ai nevoie de atâtea query-uri, din primul query citeşti toate datele de care ai nevoie, apoi în al doilea rând, query-ul e greşit deoarece tu nu îi trimiţi id-ul.
-
adrianmihai
- Junior Member
- Mesaje: 41
- Membru din: Mie Mar 27, 2013 9:53 am
Re: PHP URL friendly problem!
In baza de date coloana este de tip varchar(250). Ce trebuie sa modific pentru a nu imi afisa tot continutul tuturor paginilor ci doar al celei care o apelez prin url?
- mndrk
- Senior Member
- Mesaje: 271
- Membru din: Mar Iun 22, 2010 12:02 pm
- Localitate: Bucuresti
- Contact:
Re: PHP URL friendly problem!
Trebuie să trimiţi conţinutul coloanei respective în URL. Si să stergi rândul cu (int). Dacă este varchar, atunci în coloana respectivă trebuie să apară exact denumirea paginii, în exemplul tău : "despre-noi" (fără ghilimele). Apoi când compari o să compari exact ce trebuie şi obţii pagina corectă.
-
adrianmihai
- Junior Member
- Mesaje: 41
- Membru din: Mie Mar 27, 2013 9:53 am
-
adrianmihai
- Junior Member
- Mesaje: 41
- Membru din: Mie Mar 27, 2013 9:53 am
Re: [Rezolvat] PHP URL friendly problem!
Cursuri gratuite: | | | |
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 36 vizitatori
