NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
Zdenek
Člen
Avatar
Odpovídá na Michal Štěpánek
Zdenek:5.3.2017 20:45

foreach ($qry1 as $soucet)

 
Odpovědět
5.3.2017 20:45
Avatar
Odpovídá na Zdenek
Neaktivní uživatel:5.3.2017 21:05

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ě.

  • V první budeš mít pouze základní informace o uživatelích a jejich ID.
  • Ve druhé budeš mít seznam odpovědí ve stylu ID uživatele, otázka, odpověď.

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...

Nahoru Odpovědět
5.3.2017 21:05
Neaktivní uživatelský účet
Avatar
Odpovídá na Zdenek
Michal Štěpánek:5.3.2017 21:35

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;
Nahoru Odpovědět
5.3.2017 21:35
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Zdenek
Člen
Avatar
Zdenek:5.3.2017 21:57

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>');
 
Nahoru Odpovědět
5.3.2017 21:57
Avatar
Odpovídá na Zdenek
Michal Štěpánek:5.3.2017 22:04

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>');
Nahoru Odpovědět
5.3.2017 22:04
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Zdenek
Člen
Avatar
Odpovídá na Michal Štěpánek
Zdenek:5.3.2017 22:10

Bohužel musím s tebou souhlasit jak s podmínkou tak s úpravou, ale ta úprava nemá vliv na výsledek.

 
Nahoru Odpovědět
5.3.2017 22:10
Avatar
Odpovídá na Zdenek
Michal Štěpánek:5.3.2017 22:21

Zkus si ty jednotlivé hodnoty vypsat, abys věděl, co ti to vlastně dělá...

Nahoru Odpovědět
5.3.2017 22:21
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 57.