Autor Zpráva
Fisak
Profil
Dobrý den.. Mám výpis z db her...
<select name="games" class="form" id="jazyk">
  
  <?php
  $game = DB::query("SELECT * FROM [youtube_games] ORDER BY name")->fetchAll();
              foreach ($game as $n => $game_echo) {
  echo "<option value=\"".$game_echo->name."\">".$game_echo->name."</option>";
  }
  ?>
  
  </select>
a potřeboval bych zjistit jestli proměnná $ech_ch->name neobsahuje jednu z vypisovaných her.. pokud by obsahovala tak by se u té dané hry objevilo "selected" a pokud ne tak by se "selected" objevilo u hry s $game_echo->name = "Ostatní";
Prosím o jakékoliv rady.. předem děkuji..
jenikkozak
Profil
To se ptáš, jak udělat podmínku?
Fisak
Profil
jenikkozak:
ne jde mi o ten dotaz na db jak zjistit jestli obsahuje $ech_ch->name nějakou z vypisovaných her.. vím že se to dělá pomocí LIKE ale bohužel nevím jak..


udělat dotaz tak aby mi to vypisovalo "ano obsahuje" x "ne neobsahuje" a pak už podmínky k tomu selected zvládnu sám :-)
Tori
Profil
Fisak:
jestli obsahuje $ech_ch->name nějakou z vypisovaných her
Spíš opačně, ne? Jestli nějaká z vypisovaných her rovná se $ech_ch->name (ať už je to cokoli).

Když nepoužíváte jiná data z DB než name, tak je zbytečné tahat všechny sloupce.
Buď můžete vytáhnout všechna data do jednorozměr.pole, pak např. pomocí in_array zjistit, jestli obsahuje hodnotu $ech_ch->name, a pak vypisovat a podle toho zjištění zvýraznit kterou položku chcete.
Anebo by snad šlo použít poddotaz, ale zkontrolujte si EXPLAINem, jestli se fakt provádí jen jednou za dotaz nebo jednou pro každý řádek výsledku (mělo by to být OK, ale nejsem teď úplně jistá). Kdybyste přidával stránkování, musí se doplnit i do poddotazu.

dibi::query("SELECT (SELECT COUNT(*) FROM [youtube_games] WHERE [name] = %s) AS 'existuje', [name] 
    FROM [youtube_games] ORDER BY [name]", $ech_ch->name)->fetchAll();
- mělo by to v každém řádku vracet info, jestli někde ve výsledku je odpovídající hodnota. Možná bude potřeba doplnit tabulkám/sloupcům dva různé aliasy, aby se nepletly.

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: