Autor | Zpráva | ||
---|---|---|---|
V4sek Profil * |
#1 · Zasláno: 23. 3. 2014, 11:03:08
Dobrý den, mám kod pro zobrazení všech obrázků z dané kategorie.
$sql2 = MySQL_Query("SELECT kategorie.seo_en, obrazky.nazev_en, obrazky.img, obrazky.seo_enn FROM kategorie LEFT JOIN kategorie_obrazky on kategorie.id = kategorie_obrazky.id_kategorie LEFT JOIN obrazky on obrazky.id = kategorie_obrazky.id_obrazky WHERE kategorie.seo_en = '".$_GET["id"]."'"); if (MySQL_Num_Rows($sql2)>0){ define ("COLS", 2); // počet sloupců echo "<table class='ohranic'>\n"; for ($i = 0; $zaznam = mysql_fetch_assoc($sql2); $i++) { if ($i % COLS == 0) echo "<tr>"; echo "<td>"; echo "<div style='width:225px;padding:10px;'> <div><img src=\"/images/obrazky/".$zaznam['img']."\" width=\"255\" height=\"255\"></div> <div><a href=\"/".$zaznam['seo_enn']."\">".$zaznam['nazev_en']."</a></div> </div>"; echo"</td>"; if ($i % COLS == COLS - 1) echo "</tr>\n"; } echo "</table>\n"; } else { none('V této kategorii není žádný obrázek.'); } Skript funguje, nicméně, když v kategorii není žádný obrázek, tak to nenapíše "V této kategorii není žádný obrázek." Ale v té kategorii je obrázek, který není načten (obrázek neexistuje). Když dám nějakou kategorii, kde jsou obrázky tak to funguje bez problémů, načte se obrázek i název. Nevíte někdo v čem mám chybu? |
||
Tori Profil |
#2 · Zasláno: 23. 3. 2014, 11:07:01
V4sek:
„Ale v té kategorii je obrázek, který není načten (obrázek neexistuje).“ Jak může být v kategorii a přitom neexistovat? |
||
V4sek Profil * |
#3 · Zasláno: 23. 3. 2014, 11:10:23
obrázek neexistuje je tam pouze
<img src=\"/images/obrazky/\" width=\"255\" height=\"255\">
|
||
Tori Profil |
#4 · Zasláno: 23. 3. 2014, 11:49:29
Pokud nepotřebujete pole kategorie.seo_en (v ukázaném kódu nikde není), použijte
INNER JOIN . Pokud ano, měla by stačit podmínka (pokud dotaz vrací jen jeden řádek výsledků a v něm je prázdné pole obrazky.img, tak obrázek neexistuje). V druhém případě to bude chtít nějak upravit celý cyklus.
|
||
V4sek Profil * |
#5 · Zasláno: 23. 3. 2014, 13:34:10
Děkuji INNER JOIN to vyřešil bravůrně. Ještě bych se chtěl zeptat šlo by do mého SQL dotazu zapsat ještě jeden
$result = mysql_query("SELECT p.*, r.prumer FROM obrazky p LEFT JOIN (SELECT rating_id, AVG(rating_num) prumer FROM ratings GROUP BY rating_id ) r ON r.rating_id = p.id"); Vůbec nevím jak na to, lze to vůbec? |
||
Tori Profil |
Zkuste:
SELECT o.nazev_en, o.img, o.seo_enn, IFNULL(AVG(r.rating_num), 0) prumer FROM kategorie k INNER JOIN kategorie_obrazky ko ON k.id = ko.id_kategorie INNER JOIN obrazky o ON o.id = ko.id_obrazky LEFT JOIN ratings r ON r.rating_id = o.id WHERE k.seo_en = '".$_GET["id"]."' GROUP BY o.id Anebo takhle, otestujte s EXPLAINem, co je výhodnější. SELECT o.nazev_en, o.img, o.seo_enn, IFNULL(AVG(r.rating_num), 0) prumer FROM obrazky o LEFT JOIN ratings r ON r.rating_id = o.id WHERE o.id IN (SELECT ko.id_obrazky FROM kategorie_obrazky ko INNER JOIN kategorie k ON k.id = ko.id_kategorie WHERE k.seo_en = '".$_GET["id"]."') GROUP BY o.id |
||
V4sek Profil * |
#7 · Zasláno: 23. 3. 2014, 16:35:54
Bohužel nefunguje, nezobrazuje ani hvězdičky, když je zadám ručne v databázi
$sql2 = MySQL_Query("SELECT o.nazev_en, o.img, o.seo_enn,o.id, IFNULL(AVG(r.rating_num), 0) prumer FROM obrazky o LEFT JOIN ratings r ON r.rating_id = o.id WHERE o.id IN (SELECT ko.id_obrazky FROM kategorie_obrazky ko INNER JOIN kategorie k ON k.id = ko.id_kategorie WHERE k.id = '".$_GET["id"]."') GROUP BY o.id"); if (MySQL_Num_Rows($sql2)>0){ define ("COLS", 2); // počet sloupců echo "<table class='ohranic'>\n"; for ($i = 0; $zaznam = mysql_fetch_assoc($sql2); $i++) { if ($i % COLS == 0) echo "<tr>"; echo "<td>"; echo "<div style='width:225px;padding:10px;'>".$zaznam['nazev_en']." <div><img src=\"/images/obrazky/".$zaznam['img']."\" width=\"255\" height=\"255\"></div> <div><a href=\"/".$zaznam['seo_enn']."\">".$zaznam["id"]."".pullRating("".$zaznam["id"]."",false,false,false)."</a></div> </div>"; echo"</td>"; if ($i % COLS == COLS - 1) echo "</tr>\n"; } echo "</table>\n"; } else { none('V této kategorii není žádný obrázek.'); } Schvalně jsem to převedl z seo_en na id, protože pak bude určitě stím bordel. |
||
Tori Profil |
A když ten samotný dotaz spustíte v PhpMyAdmin (s nějakým existujícím ID), hlásí nějakou chybu? A ten druhý dotaz taky nejde?
|
||
Časová prodleva: 10 let
|
0