| Autor | Zpráva | ||
|---|---|---|---|
| quatzael Profil |
Mám dotaz do databáze:
SELECT COUNT(*) FROM seznam_psc WHERE psc = 12000 AND část_obce = 'Praha - Nusle' Nevíte někdo, kde by mohl být problém? |
||
| lionel messi Profil |
quatzael:
Samotný dotaz vyzerá v poriadku, zoskupovanie je podľa mňa v tvojom prípade úplne zbytočné, možno by som však nepoužil diakritiku v názve stĺpca. Ak totiž do on-line nástroja na kontrolu SQL príkazov zadám tvoj dotaz, nestane sa vôbec nič (neukáže ani dobre, ani zle), ale keď vyhodím diakritiku, ukáže syntax správne. Osobne som diakritiku v názve stĺpcu nepoužil nikdy. Ešte pred zmenou tabuľky skús uzavrieť aspoň názov stĺpca s diakritikou do spätných apostrofov (na českej klávesnici pravý Alt + ý), mne to teraz v tom online nástroji pustilo: SELECT COUNT(*) FROM seznam_psc WHERE psc = 12000 AND `část_obce` = 'Praha - Nusle' |
||
| quatzael Profil |
#3 · Zasláno: 13. 12. 2014, 00:01:34 · Upravil/a: quatzael
lionel messi:
Sorry, ta diakritika se mi tady objevila náhodou. Normálně jí tam v tom dotazu nemám. Takže je to takhle: SELECT COUNT(*) FROM seznam_psc WHERE psc = 12000 AND cast_obce = 'Praha - Nusle' Ale prostě to v tom PHPku nefunguje.. lionel messi: a ty uvozovky taky nic stejně nedělaj.. |
||
| yFang Profil |
#4 · Zasláno: 13. 12. 2014, 00:16:08
quatzael:
„Ale prostě to v tom PHPku nefunguje..“ A jak to používáš v PHP? |
||
| juriad Profil |
#5 · Zasláno: 13. 12. 2014, 00:17:05
Ukaž kód provádějící ten kód v PHP. Jiné dotazy (na stejném místě) ti fungují? Co když úplně zrušíš celou klauzuli WHERE, vrátí to ne-NULL?
|
||
| quatzael Profil |
#6 · Zasláno: 13. 12. 2014, 00:50:46 · Upravil/a: quatzael
yFang, juriad:
$sql = "SELECT COUNT(*) FROM seznam_psc WHERE psc = " . $psc . " AND cast_obce = '" . $obecitem . "'"; $qresult = mysqli_query($db_connect, $sql); $row = mysqli_fetch_row($qresult); Funguje to když to dám jenom takhle: $sql = "SELECT COUNT(*) FROM seznam_psc WHERE psc = " . $psc; $qresult = mysqli_query($db_connect, $sql); $row = mysqli_fetch_row($qresult); yFang, juriad: Ještě pro jistotu upřesním, že ten název sloupce je ve skutečnosti obec_cast_obce místo cast_obce. Chtěl jsem to tady zkrátit, aby to nemátlo. Ale snad to nemá vůbec žádnej vliv, že tam jsou dvě podtržítka..
|
||
| Alphard Profil |
#7 · Zasláno: 13. 12. 2014, 01:02:12
|
||
| yFang Profil |
#8 · Zasláno: 13. 12. 2014, 01:02:15
quatzael:
Zkoušel sis vypsat proměnnou $sql, abys viděl jak dotaz vypadá? Případně zkusit vypsat mysql errory. |
||
| quatzael Profil |
yFang:
Právě, že jsem to vypisoval. Ukazuje to tohle: SELECT COUNT(*) FROM seznam_psc WHERE psc = 12000 AND `obec_cast_obce` = 'Praha - Nusle' Error to nevyhazuje žádnej. Alphard: psc ukládám jako INTEGER. Před tím to mám ještě ošetřený takhle: $psc = (int)str_replace(' ','',$psc);Vlastně původně bez těch uvozovek (to jsem jen zkoušel na radu Lionela Messiho). Takže takhle je to: SELECT COUNT(*) FROM seznam_psc WHERE psc = 12000 AND obec_cast_obce = 'Praha - Nusle' Píšu to v PSPadu. Formát mám normálně nastavenej na UTF-8. Nenapadá mě kde by mohla být ta zrada.. Ten SQL dotaz je normálně zkopírovanej. Prve jsem tam upravoval ten název toho sloupce, takže tady vzniklo více variant, ale ta poslední je skutečná jak jí opravdu mám. A prostě to nefunguje |
||
| lionel messi Profil |
#10 · Zasláno: 13. 12. 2014, 12:27:52
quatzael:
Skús ešte nejakým spôsobom overiť, či nemáš v PSPade okolo spojovníku medzi „Prahou“ a „Nuslemi“ nedeliteľnú medzeru. Schválne skús nasledovné: SELECT COUNT(*) FROM seznam_psc WHERE psc = 12000 AND obec_cast_obce LIKE 'Praha%' Toto by malo fungovať (vráti samozrejme iný výsledok). |
||
| Kajman Profil |
#11 · Zasláno: 13. 12. 2014, 13:38:04
|
||
| quatzael Profil |
#12 · Zasláno: 13. 12. 2014, 14:16:02
Kajman:
Už jsem to tady psal. Chybu to právě nevypisuje vůbec žádnou. Je to totální záhada. |
||
| juriad Profil |
#13 · Zasláno: 13. 12. 2014, 14:19:08
A když vybereš víc sloupců z databáze? A var_dumpneš si vrácený řádek?
|
||
| quatzael Profil |
#14 · Zasláno: 13. 12. 2014, 14:20:27 · Upravil/a: quatzael
lionel messi:
Teď nejsem u kompu, píšu z mobilu. Zkusím za chvíli. Ale kdyby tam byla nějaká mezera, tak by to přece nevadilo je to v uvozovkách jako string. Navíc by to byl problém se syntaxem a to by hodilo error, ne? juriad: Nevím co přesně myslíš těch více sloupců. Ten asterisk znamená všechny sloupce, ne? Já jsem zkoušel si ty proměnný var_dumpnout skoro všechny a vždycky vrátily NULL. Myslím hlavně proměnný: $qresult a $row. Teď mě napadá, že jsem nezkoušel var_dumpnout $db_connect, ale to by přece řvalo u toho výpisu mysqli_error. Navíc hned nad tím mám ten dotaz jen na to PSČ a to funguje.. |
||
| juriad Profil |
quatzael:
Byla by to mezera, ale jiná, která by neodpovídala tomu, co je v databázi. Count by ale vrátil nulu (0). Tím jsem chtěl řict, ať zrušíš funkci COUNT a necháš tam jen SELECT * FROM.
Počkej, $qresult je NULL, jsi si jistý? To nikdy nemůže být po provedení mysqli_query. |
||
| lionel messi Profil |
quatzael:
„Ale kdyby tam byla nějaká mezera, tak by to přece nevadilo je to v uvozovkách jako string.“ Nemáš celkom pravdu. Pri porovnávaní reťazcov pomocou = je totiž dôležité, aby sa na chlp presne zhodovali. Praha != praha != praHa, to isté Praha - Nusle != Praha - Nusle (v druhom prípade sú pred spojovníkom 2 medzery) a pod.
„Navíc by to byl problém se syntaxem a to by hodilo error, ne?“ Na 99,99% nehodilo. quatzael: > juriad: > Nevím co přesně myslíš těch více sloupců. Ten asterisk znamená všechny sloupce, ne? Hviezdička sa nevzťahuje k výberu stĺpca, ale k agregačnej funkcii COUNT. Hoď sem prosím čo najkompletnejší PHP kód. |
||
| quatzael Profil |
#17 · Zasláno: 13. 12. 2014, 14:36:05
lionel messi:
No, jenže tu hodnotu Praha - Nusle beru ze selectboxu, který ji tam má vygenerovanou že stejný tabulky..
Je to prostě divný.. |
||
| pcmanik Profil |
#18 · Zasláno: 13. 12. 2014, 16:19:38
quatzael:
Keď to berieš zo selectboxu, prečo nepoužijes ID namiesto názvu? Bude to ešte aj rýchlejšie. |
||
| quatzael Profil |
#19 · Zasláno: 13. 12. 2014, 16:25:22 · Upravil/a: quatzael
pcmanik:
Tohle je PHP, ne javascript.. Mám tu hodnotu v proměnný $_POST po odeslání formuláře a potom vloženy jako argument do funkce.. Tak záhada vyřešena!! Mám to ve funkci a zapomněl jsem tam definovat globalní proměnnou pro ten connect: $db_connect
Ale nechápu proč to u toho prvního requestu funguje a u druhýho už ne.. |
||
| pcmanik Profil |
quatzael:
Spomínal som nejaký javascript? Jednoducho ako value selectu zadas id oblasti. Lenže ako pozerám v tvojom prípade to nepojde keďže nemáš rozdelnú tabuľku oblastí a PSČ. Čo máš mimochodom zlý návrh databázy keďže jedna oblasť môže mať viacero PSČ a takisto jedno PSČ môže prislúchať viacerým oblastiam. |
||
| quatzael Profil |
#21 · Zasláno: 13. 12. 2014, 20:59:14
pcmanik:
sorry, já jsem byl nějak myšlenkama v html, že by ten problém mohl nějak souviset se skutečnou hodnotou v selectboxu, že by tam byly nějaký skrytý znaky nebo tak něco.. Tak jsem myslel, že navrhuješ, abych místo atributu name to bral podle id elementu. No nevím co mě to napadlo.
„a takisto jedno PSČ môže prislúchať viacerým oblastiam.“ To není můj návrh. Takhle jsou prostě podle PSČ rozdělený jednotlivý oblasti v ČR. Musím to mít v databázi udělaný tak jak to odpovídá realitě ne jak by to ve "správném návrhu databáze".. |
||
|
Časová prodleva: 12 let
|
|||
0