Autor | Zpráva | ||
---|---|---|---|
Giga Profil * |
#1 · Zasláno: 23. 7. 2010, 09:55:57
Neviem či som dobre ale skúsim to tu.
Mám mysql tabuľku ku ktorej pristupujem z php kódu. Keď chcem vybrať všetky "červené", tak mi doma funguje ale na hostingu nie (vráti 0 záznamov). Pri ladení som si tento mysql dotaz nechal vypísať na stránku a po jeho skopírovaní do phpmyadmin prebhlo vštko tak, ako má. Stránky majú v hlavičke: <meta http-equiv="content-type" content="text/html; charset=utf-8"> Po otvorení databázy urbím: mysql_query("SET CHARACTER SET utf8"); php skripty su uložené v UTF-8. Kde hľadať chybu? |
||
xmark Profil |
#2 · Zasláno: 23. 7. 2010, 10:01:47
Co znamená "červené"?
|
||
Nox Profil |
#3 · Zasláno: 23. 7. 2010, 10:02:36
a kde je ta červená a kde je ten mysql dotaz?
|
||
Giga Profil * |
#4 · Zasláno: 23. 7. 2010, 11:18:33
Môžete si to pozrieť na priamo na stranke
Z databázy sa vytvorí "menu" (červená, žltá, zelená ...) a po kliknutí sa má objaviť zodpovedajúci výber. (sql dotaz sa objaví na vrchu stránky). Pre "zelenú" funguje, pre "červenú" nie a neviem prečo. |
||
Giga Profil * |
#5 · Zasláno: 23. 7. 2010, 11:19:52
A nepozriete si nič, pretože na serveri sa pos... mysql server ;-)
|
||
Giga Profil * |
#6 · Zasláno: 23. 7. 2010, 12:12:58
Zdá sa, že server nabehol. A už sa dá kuknúť priamo na stránku.
Dotaz zostavujem takto: $Vys = mysql_query($sql); $Lin = mysql_fetch_array($Vys); $ech = $Lin["galerie"]; $sql = "select * from `pokus` where galerie=\"$ech\" order by ID desc"; $Vys je výsledok dotazu na zoznam galérii podľa odovzdaného parametru G z adresného riadku. |
||
PostCC Profil * |
#7 · Zasláno: 23. 7. 2010, 12:50:31
Giga:
K označování řetězců v MySQL se nepoužívají uvozovky (") ale apostrofy ('). Pokud porovnáváte textové řetězce, používejte raději konstrukci "LIKE 'červená'". Do stránky, prosím, vypište celý podstatný kus kódu, tedy část, kde se doplňuje slovo "červená" na základě parametru G. Uveďte, jaké collation používá tabulka "pokus". Zkouším to nasimulovat, jediný stav, kdy mi select neproběhne v pořádku je ten, kdy script není v UTF-8, ale v jiném kódování. |
||
Giga Profil * |
#8 · Zasláno: 23. 7. 2010, 13:21:53
Vymenil som úvodzovky za apostrofy.
kopletný kód je tu: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Test</title> </head> <body> <?php include("dbacc.php"); if (!OpenMy()) Break; if (isset($_REQUEST["G"])) : $Gg = $_REQUEST["G"] *1; $sql = "select galerie from `pokus` group by galerie ORDER BY galerie"; $Vys = mysql_query($sql); $I = 0; if ($Gg == 0) : $sql = "select * from `pokus` order by ID desc"; else: while($Lin = mysql_fetch_array($Vys)){ $ech = $Lin["galerie"]; $I = $I + 1; if ($Gg==$I) : $sql = "select * from `pokus` where galerie='$ech' order by ID desc"; endif; } // while endif; echo "$sql<br>"; $Vys = mysql_query($sql); while($Lin = mysql_fetch_array($Vys)){ echo "$Lin[0] $Lin[1] $Lin[2] $Lin[3]<br>"; } endif; echo "<p>"; $sql = "select count(galerie) as poc, galerie from `pokus` group by galerie ORDER BY galerie"; $Vys = mysql_query($sql); $I = 1; while($Lin = mysql_fetch_array($Vys)){ $ech = $Lin["galerie"]; $pp = $Lin["poc"]; echo "<li><a href=\"testkod.php?G=$I\">$ech ($pp)</a></li>"; $I = $I +1; } // while echo "<li><a href=\"testkod.php?G=0\">Vše</a></li></p>"; ?> </body> </html> Určité kotrmelce v kóde majú svoje korene v zamýšlanej stránke a myslím, že nespôsobujú nastolený problém. Tabuľka je elementárna ID, nazov, galerie, datum. Vlastný php kód je v UTF-8 bez BOM. Doma funguje, na serveri pri prístupe cez phpMyAdmin funguje, pri prístupe cez stránku blbne. Typujem to nejake nastavenie, ale už neviem ake. |
||
PostCC Profil |
#9 · Zasláno: 23. 7. 2010, 13:39:21
Giga:
Ty kotrmelce fakt nechápu. U funkcí pro provedení dotazu (MySQL_Query) postrádám druhý parametr Connection, je určitě lepší ho používat. Když do té stránky napíšete jenom: $Result = MySQL_Query("SELECT * FROM Pokus WHERE Galerie LIKE 'červená' ORDER BY Id DESC", $Connection); // upravte dle skutečné proměnné připojení Echo "Vráceno: ".MySQL_Num_Rows($Result)." záznamů<br />".PHP_EOL; While($Row = MySQL_Fetch_Assoc($Result)) Echo Implode(";", $Row)."<br />".PHP_EOL; je výsledek stejný, tedy nulový počet záznamů? |
||
Giga Profil * |
#10 · Zasláno: 23. 7. 2010, 14:57:15
No, tak som na zaver kodu doplnil tri riadky od PostCC.
Doma je výsledok nasledovný: (http://localhost/giga/testkod.php?G=0) select * from `pokus` order by ID desc 9 ťuťo červená 2010-07-23 05:04:21 8 řepa bílá 2010-07-23 05:00:52 7 nechápu červená 2010-07-23 05:00:09 6 Lucie bílá 2010-07-23 10:50:26 5 Žabiak zelená 2010-07-23 10:43:12 4 Čičmany žlutá 2010-07-23 10:33:28 3 třpyt červená 2010-07-23 10:32:55 2 tetřev bílá 2010-07-23 10:32:04 1 říp červená 2010-07-23 10:31:38 bílá (3) červená (4) zelená (1) žlutá (1) Vše Pozdrav pre PostCC Vráceno: 4 záznamů PHP_EOL9;ťuťo;červená;2010-07-23 05:04:21 PHP_EOL7;nechápu;červená;2010-07-23 05:00:09 PHP_EOL3;třpyt;červená;2010-07-23 10:32:55 PHP_EOL1;říp;červená;2010-07-23 10:31:38 PHP_EOL Na serveri to vyzerá takto: Odkaz |
||
Kajman_ Profil * |
#11 · Zasláno: 23. 7. 2010, 15:10:23
Giga:
> Po otvorení databázy urbím: > mysql_query("SET CHARACTER SET utf8"); A když použijete mysql_query("SET NAMES utf8"); tak se něco změní? |
||
Giga Profil * |
#12 · Zasláno: 23. 7. 2010, 15:26:02
Bingo,
set names je riešenie. pridal som mysql_query("SET NAMES utf8"); za jestvujúci riadok mysql_query("SET CHARACTER SET utf8"); a veci sa pohli. ďakujem |
||
Časová prodleva: 15 let
|
0