 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
ovi2ut
Data înscrierii: 13/Sep/2002
Mesaje: 166
Locație: Middle of Nowhere
|
| Trimis: Mie Sep 10, 2003 9:19 am Titlul subiectului: Sortare tablou cu mai multe dimensiuni |
|
|
Am un portal de stiri ce permite utilizatorilor inregistrati sa adauge, editeze, etc ... stiri.
Stirile sunt de 2 tipuri: stiri normale, adica niste articole lungi, si niste stiri scurte, de cateva randuri. Cele doua tipuri de stiri sunt tinute in 2 table MySQL.
Ceea ce vreau eu este ca, pe o alta pagina (pagina index a site-ului), sa afisez intotdeauna ultimele 4 stiri in functie de data, indiferent din care din cele doua categorii face parte. O solutie ar fi fost cu UNION, dar serverul este 3.23.52, deci nu exista asa ceva.
Cum m-am gandit eu sa fac este sa pun primele patru stiri din fiecare categorie intr-un tabel, dupa care sa extrag de acolo ceea ce am nevoie.
Problema este ca acest tabel este un tabel cu mai multe dimeniuni, de forma:
$news[$nr]['id']
$news[$nr]['title']
$news[$nr]['date']
unde $nr ia valori de la 1 la 8.
Cum as putea sorta acest tablou dupa data ?
P.S. Daca aveti si alte :idea: , sunt binevenite |
|
| Sus |
|
cristi
Data înscrierii: 26/Mai/2002
Mesaje: 270
Locație: Timisoara
|
| Trimis: Mie Sep 10, 2003 1:04 pm Titlul subiectului: |
|
|
Poti incerca cu functia array_multisort [http://www.php.net/manual/en/function.array-multisort.php] sau usort[http://www.php.net/manual/en/function.usort.php].
Cod: function sortbyorderdate($a, $b) {
if (empty($a["order_date"])) return -1;
if (empty($b["order_date"])) return 1;
return strcmp(strtotime($a["order_date"]), strtotime($b["order_date"]));
}
while ($rows[] = mysql_fetch_array($result)) {}
usort($rows, "sortbyorderdate");
Cristi |
|
| Sus |
|
iugin
Data înscrierii: 22/Mai/2003
Mesaje: 82
Locație: Oradea
|
| Trimis: Lun Sep 15, 2003 10:29 am Titlul subiectului: Re: Sortare tablou cu mai multe dimensiuni |
|
|
ovi2ut a scris: Am un portal de stiri ce permite utilizatorilor inregistrati sa adauge, editeze, etc ... stiri.
Stirile sunt de 2 tipuri: stiri normale, adica niste articole lungi, si niste stiri scurte, de cateva randuri. Cele doua tipuri de stiri sunt tinute in 2 table MySQL.
Ceea ce vreau eu este ca, pe o alta pagina (pagina index a site-ului), sa afisez intotdeauna ultimele 4 stiri in functie de data, indiferent din care din cele doua categorii face parte. O solutie ar fi fost cu UNION, dar serverul este 3.23.52, deci nu exista asa ceva.
Cum m-am gandit eu sa fac este sa pun primele patru stiri din fiecare categorie intr-un tabel, dupa care sa extrag de acolo ceea ce am nevoie.
Problema este ca acest tabel este un tabel cu mai multe dimeniuni, de forma:
$news[$nr]['id']
$news[$nr]['title']
$news[$nr]['date']
unde $nr ia valori de la 1 la 8.
Cum as putea sorta acest tablou dupa data ?
P.S. Daca aveti si alte :idea: , sunt binevenite
pai intrun fel e greseala ta. De ce nu ai putut sa le pui pe toate in aceeasi tabela? iti mai pun un camp acolo (boolean), news_type sa zicem.
Ce o sa faci daca mai inventenzi un nou tip de stiri?? Mai creezi o tabela?
Fati o tabela news_type si o tabela news care se leaga intre ele si asa potzi face cate tipuri vrei.
E ca si cum ai spune ca bagi stiri pe domenii (sport, stiri, politica samd) in baza de date si pt fiecare creezi tabela separata.
Nu am vrut sa fiu rau(cu exemplele) numai tiam aratat unde ai gresit. Eu zic sa rescrii partea asta pana nu e prea tarziu si dupa aceea partea cu ordonarea o sa fie "floare la ureche". |
|
| Sus |
|
ovi2ut
Data înscrierii: 13/Sep/2002
Mesaje: 166
Locație: Middle of Nowhere
|
| Trimis: Lun Sep 15, 2003 10:45 am Titlul subiectului: |
|
|
Mda, ai dreptate,
problema e insa ca nu eu am facut portalul de stiri. Este facut de altcineva si este folosit de ceva timp asa ca si daca as vrea nu prea pot sa-l schimb(si nici nu am timp acum).
Tot ce trebuie sa fac eu este sa afisez in alta pagina ultimele n (adica 4) stiri.
Problema se rezolva foarte usor daca aveam MySQL mai nou pe server, nu era nici o problema, mai ales ca datele din tabele sunt aceleasi, dupa cum ai spus si tu, deci puteam face un UNION ... |
|
| Sus |
|
biban
Data înscrierii: 13/Apr/2003
Mesaje: 204
Locație: Giurgiu
|
| Trimis: Mar Sep 16, 2003 5:57 pm Titlul subiectului: |
|
|
Nu exista chiar nici o corelatzie intre tabelele alea (exemplu sa aibe titlul in comun sau ceva acolo)??
Pentru ca din ceea ce ai scris nu reiese nimic.
Cum accesezi stirea mare cand este afisata cea mica(daca imi dai voie sa le zic asha) pt ca te potzi lega de chestia asta ca sa generezi un tabel comun folosind JOIN. |
|
| Sus |
|
ovi2ut
Data înscrierii: 13/Sep/2002
Mesaje: 166
Locație: Middle of Nowhere
|
| Trimis: Mar Sep 16, 2003 6:13 pm Titlul subiectului: |
|
|
Nu am cum sa folosesc JOIN, am nevoie de UNION, numai ca serverul este 3....
Nu exista nici o legatura intre tabele, stirile scurte sunt afisate in dreapta paginii, iar articolele pe mijloc, fara nici o legatura intre ele.
Tabele au insa niste campuri comune, printre care si cele de care am eu nevoie, id, titlu, data, autor. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|