Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak napsat select (vrací Resource id #5)?

Testujeme 6 stejných bankovních ústavů v každém kraji. Do databáze se uloží data z formuláře, co už testeři navštívili. Chci udělat přehled, co už je hotové. Třeba tabulka pro středočeský kraj. Chci tam mít šest řádků s vypsanými bankami a prázdné místo pro město a ulici. Když to tester navštíví, doplní se město a ulice. Např tedy

<td>Česká spořitelna a. s.</td>
<?php
$sc_cs_mesto = mysql_query( 
"Select mesto FROM bb_2013 WHERE kraj='Středočeský kraj' LIKE banka='Česká spořitelna a. s.'"
);
?>
<td><?php echo $sc_cs_mesto; ?>

Jenže tohle mi vrací Resource id #5
Co dělám blbě?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
[http://pc.poradna.net/file/view/15392-select-png] když tam dám while( $row = mysql_fetch_array($sc…
Kráťa 12.09.2013 08:32
Kráťa
resource id #5 atd. ti vypisuje pretoze nepouzivas mysql_fetch_array alebo mysql_fetch_assoc. s najv…
wam_Spider007 12.09.2013 09:08
wam_Spider007
nojo, kódování SQL-dotaz SQL-dotaz: SHOW VARIABLES WHERE variable_name LIKE '%coll%'; [ Upravit ]…
Kráťa 12.09.2013 09:14
Kráťa
no to mas trochu rozhasene. najidealnejsie je pouzivat utf8_czech_ci vsade. nastavis to v configu my…
wam_Spider007 12.09.2013 09:16
wam_Spider007
export tabulky a COLLATE má 1250 CREATE TABLE `bb_2013` ( `id` int(11) NOT NULL auto_increment, `jm… nový
Kráťa 12.09.2013 09:30
Kráťa
To jsem z toho jelen... [http://pc.poradna.net/file/view/15394-porovnani-pn g] nový
Kráťa 12.09.2013 09:18
Kráťa
vid moj prispevok ohladne vysvetlenia collation o jedno vyssie. cp1250_czech_cs je nejaky windows li… nový
wam_Spider007 12.09.2013 09:22
wam_Spider007
Mě to nikdy nezlobilo, mám tak snad 50 jiných. nový
Kráťa 12.09.2013 09:31
Kráťa
skus este upravit ten select: Select mesto FROM bb_2013 WHERE trim(kraj)='Středočeský kraj' and bank… nový
wam_Spider007 12.09.2013 09:42
wam_Spider007
Nepomohlo nový
Kráťa 12.09.2013 10:06
Kráťa
tak skus tieto premenne nastavit vsetky na cp1250_czech_cs a potom ci pojde tvoj povodny select. pod… nový
wam_Spider007 12.09.2013 10:20
wam_Spider007
Dík za pomoc, nebudu se s tím nervovat, udělal jsem to jako jsem začal tu Prahu a nad tím vším udělá… nový
Kráťa 12.09.2013 11:05
Kráťa
Aby sis do budoucna ušetřil nervy, poopravil bych návrh databáze. Zaveď si číselník krajů i bank. Ne… poslední
hynajs 12.09.2013 11:20
hynajs

resource id #5 atd. ti vypisuje pretoze nepouzivas mysql_fetch_array alebo mysql_fetch_assoc.
s najvacsou pravdepodobnostou mas problem s diakritikou.

cize daj sem co ti vypise v sqlku tento dotaz:
show variables where variable_name like '%coll%';

malo by to vyplut nieco podobne:

+----------------------+----------------+
| Variable_name        | Value          |
+----------------------+----------------+
| collation_connection | utf8_slovak_ci |
| collation_database   | utf8_slovak_ci |
| collation_server     | utf8_slovak_ci |
+----------------------+----------------+

nojo, kódování

SQL-dotaz
SQL-dotaz:
SHOW VARIABLES WHERE variable_name LIKE '%coll%';

[ Upravit ] [ Vytvořit PHP kód ] [ Obnovit ]

Operace s výsledky dotazu
Náhled k vytištění Náhled k vytištění (s kompletními texty)

Variable_name Value
collation_connection utf8_unicode_ci
collation_database latin2_czech_cs
collation_server utf8_czech_ci

jdu studovat proč

no to mas trochu rozhasene. najidealnejsie je pouzivat utf8_czech_ci vsade. nastavis to v configu mysql servera.
len potom treba dat pozor, ze aj ked zmenis collation servera, treba zmenit collation aj na tabulkach.

ked si das: "show create table bb_2013" tak ti to vypluje kod tabulky a v nom najdes aj aku collation dana tabulka pouziva.

vid priklad:
CREATE TABLE `proces` (
`ProcesID` int(11) NOT NULL AUTO_INCREMENT,
`ProcesName` varchar(50) COLLATE utf8_slovak_ci NOT NULL,
`Catg` varchar(50) COLLATE utf8_slovak_ci NOT NULL,
`Img` varchar(100) COLLATE utf8_slovak_ci DEFAULT NULL,
`shortdesc` varchar(200) COLLATE utf8_slovak_ci DEFAULT NULL,
`longdesc` varchar(500) COLLATE utf8_slovak_ci DEFAULT NULL,
`detail` varchar(2000) COLLATE utf8_slovak_ci DEFAULT NULL,
PRIMARY KEY (`ProcesID`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci

a len tak btw, collation nie je kodovanie. collation sluzi len na definiciu ako sa vyhodnocuju retazce. niektore collation napriklad dovoluju case sensitive vyhladavanie, alebo napriklad to, ze pri vyhladavani pismena "s" sa vyhladaju aj pismena "š". atd. cize nejde o kodovanie, to je characterset.

export tabulky a COLLATE má 1250

CREATE TABLE `bb_2013` (
`id` int(11) NOT NULL auto_increment,
`jmeno` varchar(50) collate cp1250_czech_cs NOT NULL,
`emil` varchar(30) collate cp1250_czech_cs NOT NULL,
`postizeni` varchar(10) collate cp1250_czech_cs NOT NULL,
`kraj` varchar(30) collate cp1250_czech_cs NOT NULL,
`banka` varchar(55) collate cp1250_czech_cs NOT NULL,
`mesto` varchar(150) collate cp1250_czech_cs NOT NULL,
`ulice` varchar(100) collate cp1250_czech_cs NOT NULL,
`body_bariery` varchar(3) collate cp1250_czech_cs NOT NULL,
`body_vstricnost` varchar(3) collate cp1250_czech_cs NOT NULL,
`body_samoobsluha` varchar(3) collate cp1250_czech_cs NOT NULL,
`poznamka` text collate cp1250_czech_cs NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs AUTO_INCREMENT=5 ;

tak skus tieto premenne nastavit vsetky na cp1250_czech_cs a potom ci pojde tvoj povodny select. podla mna je cely problem v tom, ze je to rozhasene na rozne collation a nie je to ujednotene.

Variable_name Value
collation_connection utf8_unicode_ci
collation_database latin2_czech_cs
collation_server utf8_czech_ci

Aby sis do budoucna ušetřil nervy, poopravil bych návrh databáze.
Zaveď si číselník krajů i bank.
Nejenomže se zbavíš výše řešeného problému - kód 001 v databázi najdeš třeba v čínštině.
Ale banka se třeba může přejmenovat. Neopravoval bys všechny záznamy, ale jenom políčko název v číselníku.

Zpět do poradny Odpovědět na původní otázku Nahoru