Autor Zpráva
Giga
Profil *
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
Co znamená "červené"?
Nox
Profil
a kde je ta červená a kde je ten mysql dotaz?
Giga
Profil *
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 *
A nepozriete si nič, pretože na serveri sa pos... mysql server ;-)
Giga
Profil *
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 *
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 *
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
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 *
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 *
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: