

Dotaz do MySQL
Pořádáme festival, který bude po celé republice. Organizátoři akcí budou mít formulář, kam vloží údaje o organizaci
(kraj | jméno organizace | adresa organizace)
http://orbipontes.unas.cz/tkosp-formular/novy/inde x.html
a po odeslání se to uloží do db, do tabulky tkosp_organizace a načte se částečně předvyplněný formulář na vložení akce
(město, kde bude akce | datum akce...)
http://orbipontes.unas.cz/tkosp-formular/novy/vloz eni-akce.php
To se potom uloží do tabulky tkosp_akce.
Z toho všeho, by pak měl vylézt kompletní program. Ale nevím to základní. Jak potom vypsat kraj a město pouze jednou.
Dotaz do MySQL asi bude něco jako
SELECT * FROM tkosp_organizace,tkosp_akce ORDER BY kraj,mesto,datum;
A chtěl bych docílit toho, aby se vypsaly vložené kraje a vložená města a to pouze jednou. Zkrátka něco takového
Děkuji 964x za pomoc.
Ahoj, koukám, že ještě taky nespíš
.
Tahle věc by se dala velice pěkně naskriptovat v PHP, které máš na straně serveru.
Nejsem si těď jistý, jestli z hlediska formátování je vůbec možno to jednoduše vypsat jenom za pomocí zamýšleného SQL.
Zkrátka, jestli se lze vůbec PHP vyhnout.
Když už na to budeš muset pustit PHP, tak nějak takto (pokud to bude podle toho ORDER BY):
Prostě tam dáš něco takového:
definuješ pomocné proměnné. Do těch si zapíšeš poslední názvy vypsaného Kraje a Města.
No a jenom, když bude kraj či město nové, tak ho vypíšeš. Jinak znovu ne.
A v cyklu while, kde to vypisuje, budeš porovnávat hodnotu aktuálního záznamu s předchozím.
Tedy něco takového:
Takhle získáš úplnou a jednoduchou kontrolu nad tím, jak to vypisovat jen 1x
Uvidíme, co na to ostatní rádci. Tohle je první, co mě napadlo.
//Editace
A pokud bys bojoval s dotazem, že ti vypíše více záznamů opakovaně, tak použiješ DISTINCT na ID, tady je na něho demo:
https://www.w3schools.com/sql/trysql.asp?filename= trysql_select_distinct
Presne tak.
To vypisovani je vec klienta, reportu, aby pri opakujicich se hodnotach ignoroval a vypsal dalsi az pri zmene.
Slo by to i na strane serveru, ale bylo by to zbytecne ohybani - musel bys tam ten udaj ve sloupecku mit 2x (jednou kvuli razeni), pak to v cyklu projit a vyhazet z toho druheho sloupecku. Prace navic ve srovnani s klientem.
Tak až teď se k tomu vracím, jelikož už tam je asi 40 akcí. Vložil jsem to
a nevypisuje se nic. Myslel jsem, že tam budou kraje a města a že doplním ostatní.
Co dělám blbě?
http://orbipontes.unas.cz/tkosp-formular/program-v ypis-jednou.php
Já mám výpis takto
http://orbipontes.unas.cz/tkosp-formular/program-2 017.php
Podľa všetkých tvojich otázok čo som videl, tak problém je v tom, že sa zaoberáš vecami ktorým absolútne nerozumieš.
A tomu zase ja nerozumiem, prečo sa človek tlačí do niečoho o čom nemá ani páru.
blbá (najblbšia) otázka: čo máš v $dotazRow?
Místo otázky raději poraď. Změnil jsem $result na
a píše
Fatal error: Maximum execution time of 30 seconds exceeded in /3w/unas.cz/o/orbipontes/tkosp-formular/program-vy pis-jednou.php on line 47
na řádku 47 je if ($LastKraj != $AktualniKrajRowRecord)
Máš tam nekonečnú slučku. Vo while nemáš riadok..
Aha, já tam neměl endwhile a vznikla nekonečná smyčka. To jsem ale mamlas.
Ano, používáš tam $dotazRow, plníš někde tuto proměnnou?
I když to je zvláštní, mělo by to psát alespoň nějakou chybu.
Šoupni si zapnutí výpisu chyb.
Vlož na začátek skriptu: error_reporting(1);
To by mělo vypisovat všechny chyby.
Tedy za předpokladu, že výsledek dotazu není prázdný.
Jsem to nakonec udělal pro každý kraj do samostatného fieldsetu se samostatným dotazem do db a je to.
http://orbipontes.unas.cz/tkosp-formular/program-2 017.php