Autor | Zpráva | ||
---|---|---|---|
Fisak Profil |
#1 · Zasláno: 31. 3. 2013, 18:04:29
Dobrý den. Snažím se si usnadnit život tím že skript si automaticky detekuje co dané video může být za hru... tnz. vyhledá v názvu jestli neobsahuje určitou hru a pokud ano přidá do optionu "selected" ... jenže mi to pořád vypisuje "Ostatní" pokud to nějakou hru v názvu najde.. jedná se o to poslední elseif... Neví někdo v čem by mohl být problém?
<?php $game = DB::query("SELECT * FROM [youtube_games] ORDER BY name")->fetchAll(); foreach ($game as $n => $game_echo) { $game_is = DB::query("SELECT * FROM [youtube_videos] where [id] = %i", $ech_ch->id, "and [name] LIKE %~like~", friendly_url($game_echo->name)); $game_is_nezaraditelne = DB::query("SELECT * FROM [youtube_videos] where [id] = %i", $ech_ch->id, "and [name] LIKE %~like~", "vlog", " or [id] = %i", $ech_ch->id, "and [name] LIKE %~like~", "informačka", " or [id] = %i", $ech_ch->id, "and [name] LIKE %~like~", "krafání"); $game_is_recenze = DB::query("SELECT * FROM [youtube_videos] where [id] = %i", $ech_ch->id, "and [name] LIKE %~like~", "recenze"); if(count($game_is) <> 0) echo "<option value=\"".$game_echo->name."\" selected>".$game_echo->name."</option>"; elseif(count($game_is_recenze) <> 0 and $game_echo->name == "Recenze" and count($game_is) == 0) echo "<option value=\"".$game_echo->name."\" selected>".$game_echo->name."</option>"; elseif(count($game_is_nezaraditelne) <> 0 and $game_echo->name == "Nezařaditelné" and count($game_is) == 0) echo "<option value=\"".$game_echo->name."\" selected>".$game_echo->name."</option>"; elseif(count($game_is) == 0 and $game_echo->name == "Ostatní" and count($game_is_nezaraditelne) == 0 and count($game_is_recenze) == 0) echo "<option value=\"".$game_echo->name."\" selected>".$game_echo->name."</option>"; else echo "<option value=\"".$game_echo->name."\">".$game_echo->name."</option>"; } ?> |
||
Virtus Profil |
No problém je očividně v tom, že to hru v názvu nenajde, podmínky v IFech "mluví jasně". Vypsal bych si někde dotazy co ti skládá metoda DB::query();, na první pohled vypadá totiž dost šíleně, podle parametrů, a zkusil bych si dané dotazy třeba v phpmyadminu, zda se skládají dobře a nejsou v nich chyby. A další věc, jestli to vždycky vypíše Ostatní, znamená to, že vždycky proměnná $game_echo->name, musí obsahovat řetězec Ostatní, takže asi by se nemělo v předchozích elseif tahle proměnná kontrolovat a ty elseify by měly vypadat nějak takhle:
if ( count($game_is) ) { echo "<option value=\"" . $game_echo->name . "\" selected>" . $game_echo->name . "</option>"; } elseif ( count($game_is_recenze) ) { echo "<option value=\"" . $game_echo->name . "\" selected>" . $game_echo->name . "</option>"; } elseif ( count($game_is_nezaraditelne) ) { echo "<option value=\"" . $game_echo->name . "\" selected>" . $game_echo->name . "</option>"; } elseif ( $game_echo->name == "Ostatní" ) { echo "<option value=\"" . $game_echo->name . "\" selected>" . $game_echo->name . "</option>"; } else { echo "<option value=\"" . $game_echo->name . "\">" . $game_echo->name . "</option>"; } Jinými slovy, tohle už sice budev fungovat jak má, ale stejně ti to vždycky vypíše Ostatní, proměnnou $game_echo->name by si měl v těch <option> nahradit za něco jinýho |
||
Časová prodleva: 11 let
|
0