Autor Zpráva
Fisak
Profil
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>";
  
  
  }
  ?>
Předem dděkuji za všechny odpovědi..
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>";
    }
Edit: pokud proměnná $game_echo->name obsahuje pokaždé řetězec Ostatní, tak vždycky budeš mít v tom selectu taky vypsáno Ostatní. (zvírazněno nahoře, proč)
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: