| 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: 13 let
|
|||
0