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: Zoskupenie a spracovanie dat z MySQL databaze.

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Peter Schoeller:18.7.2017 20:24

Ahoje.
Potrebujem zobrazit z tabulky jednotlive data, zoskupenie clenov podla statov.
Tymto prikazom

foreach($conn->query('SELECT country, COUNT(*)
                        FROM members
                        GROUP BY country
                        ORDER BY COUNT(*) DESC') as $row_country)

dostanem na vystupe tabulku, ale to neriesi moj problem. Ja potrebujem dostat jednotlive hodnoty, napriklad:

$row_de
$row_us
$row_uk
$row_sk
$row_cz
...

Na vystupe tak nasledne dostanem cisla, pocty clenov, z jednotlivych krajin, ktore nasledne vyuzijem dalej v texte.
Opakujem, tabulka nie je ziaduca.
Viete mi niekto poradit?
Dakujem.

 
Odpovědět
18.7.2017 20:24
Avatar
Peter Schoeller:19.7.2017 0:28

Tak som vytvoril takuto funkciu:

$numb_rows_de = mysqli_query($conn, 'SELECT COUNT(*) FROM members WHERE country = "Deutschland"');
        $numb_row_de = mysqli_fetch_array($numb_rows_de);
        $row_de = $numb_row_de[0];

a pre kazdu krajinu je nutne vytvorit takuto sekciu....
Ma niekto jednoduchsi napad?

 
Nahoru Odpovědět
19.7.2017 0:28
Avatar
ConflictBoy
Člen
Avatar
ConflictBoy:19.7.2017 16:29

Můžeš zkusit něco takového :) Řešení ale není moc dobré - přidání státu znamená přidat další prvek pole. Lepší by bylo do tabulky members vkládat rovnou tu zkratku státu nebo ideálně mít novou tabulku "státy" a v tabulce members by byla pouze id z této tabulky :)

$states = array(
        'Deutschland' => 'de',
        'Czech republic' => 'cz'
);

$query = mysqli_query($conn, "SELECT COUNT(*) as `count`, `country` FROM `members` GROUP BY `country`");

foreach (mysqli_fetch_array($query) as $item) {
        ${'row_'.$states[$item['country']]} = $item['count'];
}
Nahoru Odpovědět
19.7.2017 16:29
I'm programmer, I have no life :)
Avatar
Odpovídá na ConflictBoy
Peter Schoeller:19.7.2017 16:39

Ano... to pole mam, v tom nie je problem....
Ide o to, ze pri kazdom novom clenovi s dalsim statom, musim pridat dalsiu sekciu...
Momentalne mam clenov zo 17 krajin, takze mam 17 prikazov "$numb_rows_XX"
Otazka je ci sa to da spravit jednoduchsie.

 
Nahoru Odpovědět
19.7.2017 16:39
Avatar
ConflictBoy
Člen
Avatar
Odpovídá na Peter Schoeller
ConflictBoy:19.7.2017 17:33

Však zkus ten zdroják, co jsem ti poslal :)

Nahoru Odpovědět
19.7.2017 17:33
I'm programmer, I have no life :)
Avatar
Odpovídá na ConflictBoy
Peter Schoeller:19.7.2017 18:34

Skusam ten tvoj zdrojak, ale vo vysledku som dostal par chybovych riadkov:

Warning: Illegal string offset 'country' in.....
Notice: Undefined offset: 3 in....
Warning: Illegal string offset 'count' in....
Notice: Undefined index: � in
atd...
je tych riadkov celkovo 12 a vsetky ukazuju na chybu v tomto riadku:

${'row_'.$states[$item['country']]} = $item['count'];
 
Nahoru Odpovědět
19.7.2017 18:34
Avatar
ConflictBoy
Člen
Avatar
Odpovídá na Peter Schoeller
ConflictBoy:19.7.2017 18:44

Když dáš v cyklu

var_dump($item);

co ti to vypíše?

Nahoru Odpovědět
19.7.2017 18:44
I'm programmer, I have no life :)
Avatar
Odpovídá na ConflictBoy
Peter Schoeller:19.7.2017 19:52

Tak toto je pre mna spanielska dedina.... :-D
Vies mi to prosim napisat, ako to mam modifikovat?

 
Nahoru Odpovědět
19.7.2017 19:52
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 8 zpráv z 8.