Diskuze: SELECT pro poslední řádek s filtrem ?
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 57.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Už jsem to tady možná psal. Podívej se na svůj kód. Přijde ti toto jako správně navržená databázová tabulka, jejíž sloupce se můžou v průběhu času měnit tím, že budeš přidávat otázky?
Doporučuji ti začít od znova a vytvořit si tabulky dvě.
Ačkoli to je na první pohled trochu složitější, tvůj program bude schopen pracovat s vícero hodnotami, průběžně je měnit bez toho, aniž bys musel upravovat sloupce.
Například takový součet všech těch jedniček, jak si psal na začátku, by se udělal
SELECT SUM(odpovedi) FROM tabulka_odovedi WHERE ID_uzivatele = 12 -- #12 je Pepa například
Jak vidíš, nikde nemusíš složitě vypisovat ony qA07_1 apod, dokonce si můžeš vytvořit místo sloupce "otázka" sloupec "otazka" a "podotazka" a tím snadněji vybrat třeba všechny otázky qA07_*
Poznámka na konec: Někde jsem četl, že ty sloupce qA01_1 jsou odpovědi na nějaké otázky, tak proto zde píši o otázkách...
Když pominu to, že souhlasím s tím, že je to špatně navržená databáze, tak přeci řádek
foreach ($qry1 as $soucet)
je naprostý nesmysl, bo v $qry1 máš dotaz a v $soucet máš mít součet
"jedniček"
Tam už nemá být žádný cyklus, ale prosté
echo $soucet;
Ano máš pravdu. Ale echo mi pak háže 0 což je špatně.
$soucet = 0;
for ($i = 0; $i <= 3; $i++) {
for($j = 0; $j <= 9; $j++) {
for($k = 1; $k <= 5; $k++){
$u = 'qA_' . $i . $j. '_' . $k;
if ($u==1){
$soucet+=1;
}
}}}
echo('<h2>Hodnocení</h2><table border="1">');
{
echo('</td><td>' . htmlspecialchars($soucet));
echo('</td></tr>');
}
echo('</table>');
pokud je po projití cyklu $soucet = 0, znamená to, že je ta podmínka špatně napsaná. A propos nemělo by těch posledních pár řádků být nějak takto?
echo('<h2>Hodnocení</h2><table border="1">');
echo('<tr><td>' . htmlspecialchars($soucet));
echo('</td></tr>');
echo('</table>');
Bohužel musím s tebou souhlasit jak s podmínkou tak s úpravou, ale ta úprava nemá vliv na výsledek.
Zkus si ty jednotlivé hodnoty vypsat, abys věděl, co ti to vlastně dělá...
Zobrazeno 7 zpráv z 57.