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

Předmět Autor Datum
ve Where ti chybi AND mezi podminkami Pokud nepouzivas v bance zastupne znaky, ale testujes vzdy cel…
Jan Fiala 12.09.2013 06:25
Jan Fiala
Jo vlastně AND. To jsem moula :-) Sesmolil jsem to takto <td style="font-weight: bold; width: 370px…
Kráťa 12.09.2013 06:33
Kráťa
Takhle bude ten dotaz o hodně rychlejší, ale stejně se podívej, jak se čte výsledek níže.
Flash_Gordon 12.09.2013 06:35
Flash_Gordon
Jenže furt je něco blbě, i když jsem udělal <td style="font-weight: bold; width: 370px">Česká spoři…
Kráťa 12.09.2013 06:48
Kráťa
Takto to nemůžeš přímo číst. Takhle: $sc_cs_mesto = mysql_query( "Select mesto FROM bb_2013 WHERE…
Flash_Gordon 12.09.2013 06:27
Flash_Gordon
To mi sice zmizel onen nápis, ale město se mi neobjevilo :-/
Kráťa 12.09.2013 06:45
Kráťa
Tam asi nebude potřeba while. Je to vždy jen jedno místo (jedno město).
Kráťa 12.09.2013 06:50
Kráťa
Potřebuji vytáhnout pouze to jedno město [http://pc.poradna.net/file/view/15391-select-png]
Kráťa 12.09.2013 07:05
Kráťa
a ked si ten select, ktory si dal vyssie hodis priamo v phpmyadmin, tak co ti to vypluje?
wam_Spider007 12.09.2013 07:59
wam_Spider007
Nojo, nevyjede MySQL vrátil prázdný výsledek (tj. nulový počet řádků). (Dotaz zabral 0.0016 sekund)…
Kráťa 12.09.2013 08:06
Kráťa
no, par tipu: 1) funguje ti to na polozky bez diakritiky? Problem s jazykovou konverzi... zkus: S…
gd 12.09.2013 08:24
gd
viz obrázek níže. V phpmyadminu se vypíše.
Kráťa 12.09.2013 08:43
Kráťa
jenze PHP myadmin je webova stranka, ktera automaticky konvertuje cestinu pro kodovani v databazi. F…
gd 12.09.2013 08:51
gd
Všechno mám v 1250 web i porovnání v databázi. Praha se mi načítá normálně. Jenže tu jsem začal děla…
Kráťa 12.09.2013 09:11
Kráťa
[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
neco jsi vynechal... ;-) $query = "SELECT * FROM novinky WHERE id=$id AND smazano=0"; $result = my…
gd 12.09.2013 08:39
gd
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…
Kráťa 12.09.2013 09:30
Kráťa
To jsem z toho jelen... [http://pc.poradna.net/file/view/15394-porovnani-pn g]
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…
wam_Spider007 12.09.2013 09:22
wam_Spider007
Mě to nikdy nezlobilo, mám tak snad 50 jiných.
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…
wam_Spider007 12.09.2013 09:42
wam_Spider007
Nepomohlo
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…
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á…
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

Jo vlastně AND. To jsem moula :-) Sesmolil jsem to takto

<td style="font-weight: bold; width: 370px">Česká spořitelna a. s.</td>
<?php
$sc_cs_mesto = mysql_query( 
"Select mesto FROM bb_2013 WHERE kraj='Středočeský kraj' AND banka='Česká spořitelna a. s.'"
);

?>
<td><?php echo $sc_cs_mesto; ?>

a stále Resource id #5

Jenže furt je něco blbě, i když jsem udělal

<td style="font-weight: bold; width: 370px">Česká spořitelna a. s.</td>
<?php
$sc_cs_mesto = mysql_query( 
"Select mesto FROM bb_2013 WHERE kraj='Středočeský kraj' AND banka='Česká spořitelna a. s.'"
);
while( $row = mysql_fetch_array($sc_cs_mesto))

?>
<td><?php echo $row['mesto']; ?></td>

Nojo, nevyjede

MySQL vrátil prázdný výsledek (tj. nulový počet řádků). (Dotaz zabral 0.0016 sekund)
SQL-dotaz:
SELECT mesto
FROM bb_2013
WHERE kraj = 'Středočeský kraj'
AND banka = 'Československá obchodní banka, a. s.'
LIMIT 0 , 30

Já chci vytáhnout jednu konkrétní buňku buuuuuuuuuu

no, par tipu:

1) funguje ti to na polozky bez diakritiky? Problem s jazykovou konverzi...

zkus:

SELECT mesto
FROM bb_2013
WHERE kraj = 'St_edo_esk_ kraj'
AND banka like '_eskoslovensk_ obchodn_ banka, a. s.'
LIMIT 0 , 30

2) je vyraz skutecne v dB? Rozumej - otrimovano, aby tam nebyly prebytecne mezery na zacatku a konci apod.

zkus:

SELECT mesto
FROM bb_2013
WHERE kraj = 'Středočeský kraj'
AND banka like '%Československá obchodní banka, a. s.%'
LIMIT 0 , 30

3) zkousel jsi to pro jiny vyraz?

Všechno mám v 1250 web i porovnání v databázi. Praha se mi načítá normálně. Jenže tu jsem začal dělat jinak

<table border="1" cellpadding="6" cellspacing="0" style="width: 100%">
<tr>
<td colspan="2" style="background-color: black; color: white; font-weight: bold; padding-left: 36px">
<strong>Praha</strong></td>
</tr>

<?php
$vyp_praha = mysql_query( 
"Select * FROM bb_2013 WHERE kraj='Praha'"
);
while ($zaznam = mysql_fetch_array ($vyp_praha)): ?>

<tr>
<td style="font-weight: bold; width: 390px"><?php echo $zaznam['banka']; ?></td>
<td><?php echo $zaznam['mesto']; ?>, <?php echo $zaznam['ulice']; ?></td>
</tr>
<?php endwhile ?>
</table>

a to se mi nelíbí, jelikož nemám prázdná města a ulice, načte se jen vyplněné. Avšak možná to tak nakonec udělám celé a bude to :-)
K vidění jsou ty pokusy tady

http://kochlear.cz/banka-bez-barier/2013/vypisy/vy plnene.php?php echo $zaznam['mesto']; ?

neco jsi vynechal... ;-)

    $query = "SELECT * FROM novinky WHERE id=$id AND smazano=0";
	$result = mysql_query($query) or die("Načtení zpráv se nezdařilo.");
	if (mysql_num_rows($result) == 0) {echo "zadny zaznam";}
		else {	$line = mysql_fetch_assoc($result);  };

result prohnano funkci mysql_fetch_assoc, ktera zpristupni obsah...

Když se nic nezobrazi, dej SELECT COUNT(*) FROM ... at vis pocet vracenych radku. Muzes mit problem s cestinou... (viz. vyse)

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