| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal Lier: 02.08.2009 10:22 | |
|
Ahojte. Mam jeden problem a ja ako začiatočnik nemam sancu to urobit. Rozmyslam, citam a nemozem nasjt riesenie. Mam databazu kde mam 2 tabulky. Jedna sa vola jos_users - kde su mena uzivatelov a kazdemu je dane id. Nasledne je tabulka s nazvom jos_joomgallery a ta ma v sebe riadky (ako nazov obrazku, id obrazku a to hlavne owner) Owner je cislo, ktore je presne take ako ID v tabulke jos_users. Vlastne popisuje, kto to tam pridal. Ja by som chcel urobit TOP 10 uzivatelov.
Viete mi poradit?
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
TOP 10 uzivatelov vzhladom na co ?
|
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 02.08.2009 11:09 | |
|
Ahaa.. no v tabulke jos_joomgallery sa ukaladaju obrazky a kazdy ma sveje: owner
Potreboval by som spocitat.. napriklad owner 65 pridal 27 obrazkov a 65 je v tabulke jos_users: Mato. Dufam, ze som to nedoplietol
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
Aha, takze ty chces vlastne zoradenie TOP 10 podla toho kolko maju fotiek ulozenych ? Mozes to spravit napr. tak , ze si vytvoris este jeden stlpec kde ak si niekto ulozi fotku tak uploadnes aktualnu hodnotu a potom spravis nieco take ako Kód: SELECT * FROM jos_users ORDER BY pocet_fotiek DESC LIMIT 10 Alebo ma potom este napadlo to urobit dynamicky (za pochodu), mozno nejak takto : Kód: <?php # Vyber ID od uzivatelov $VyberId = mysql_query("SELECT id FROM jos_users "); for($count = 0; $count < mysql_numrows($VyberId); $count++){ $id = mysql_result($VyberId, $count, "id"); $CountPhoto = mysql_query("SELECT * FROM jos_joomgallery WHERE owner ='$id'"); # Ulozenie do pola pocet fotiek $PocetFotiek[$id] = mysql_numrows($CountPhoto); }
# Zoradenie pola podla hodnot zostupne arsort($PocetFotiek);
$limit = 0; foreach($PocetFotiekID as $IDE => $pocet){ if($limit == 10) // Tu si nastavis kolko chces zobrazeni (TOP 10) break; # Tu si uz vyberies a echnes co porebujes $VyberTop = = mysql_query("SELECT * FROM jos_users WHERE id='$IDE'"); echo $pocet." fotiek"; // Pocet fotiek $limit++; } ?>
Robim to z hlavy tak sa ospravedlnujem ak tak bude nejaka chyba. Mozno sa to hodi ak nemas az tak obrovsku databazu
|
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 02.08.2009 13:28 | |
|
Da sa to urobit aj tak, aby som tam nic nepridaval? Ziadny novy stĺpec?
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
ved to druhe riesenie co som ti napisal => zacina od Citácia: Alebo ma potom este napadlo to urobit dynamicky (za pochodu), mozno nejak takto :
Je riesenie aby si tam dalsi stlpec nemusel pridavat
|
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 02.08.2009 17:14 | |
|
Je tento riadok v poriadku?
Kód: foreach($PocetFotiekID as $IDE => $pocet) ? Vypisuje mi: Kód: Invalid argument supplied for foreach()
Skusal som to hocijako a nic..
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
no odstran ID z
Kód: foreach($PocetFotiekID as $IDE => $pocet){
|
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 02.08.2009 18:49 | |
|
Dakujem ti Snacker. Stacilo uz iba dodat tahanie mien a je to .. Super. dakujem este raz.
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 03.08.2009 12:26 | |
|
Ja by som riadky
Kód: $CountPhoto = mysql_query("SELECT * FROM jos_joomgallery WHERE owner ='$id'"); # Ulozenie do pola pocet fotiek $PocetFotiek[$id] = mysql_numrows($CountPhoto); zmenil na Kód: $CountPhoto = mysql_query("SELECT COUNT(*) FROM jos_joomgallery WHERE owner ='$id'"); # Ulozenie do pola pocet fotiek $PocetFotiek[$id] = mysql_result($CountPhoto, 0);
Prvý spôsob je pomalší, pretože sa vytiahnu všetk údaje, pripravia sa do štruktúry na spracovanie, alebo ako to povedať
Ak použiješ COUNT(), je to oveľa rýchlejšie, pretože sa iba vytiahne štatistický údaj.
_________________ Sorry za prelkepy |
|
Registrovaný: 20.12.08 Prihlásený: 02.02.20 Príspevky: 28 Témy: 5 Bydlisko: Košice | Napísal awtt: 05.08.2009 14:36 | |
|
Ako nehnevajte sa ale 11 query na databázu ? Hlavne ak sa to dá pomocou jedneho.
Za predopkladu že máš štruktúru tabuliek takúto:
jos_users:
id - jedinečne id užívateľa
user - meno užívateľa
...
jos_joomgallery:
name - id užívateľa
...
potom top 10 užívateľov vyberieš jednym query, napríklad takto:
Kód: SELECT user FROM jos_users RIGHT JOIN ( SELECT name FROM jos_joomgallery GROUP BY name ORDER BY count( name ) DESC ) AS t1 ON id = name LIMIT 0 , 10
|
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|