Autor Zpráva
comeors
Profil
Dobrý večer,

nemohu pořád korektně dostat výpis. Celou DB mám nastavenou na 'utf8_czech_ci', soubory mám nastavené (v PSPadu) na UTF-8 a v hlavičce souboru také nastavené kódování utf-8. Korektně zapisuji data, korektně se zobrazují v phpmyadminu, ale vypsat je nedokáži, vypíší se jen otázníky...

Kde dělám chybu? :( Kód níže, díky za rady!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" href="../style.css" type="text/css" />
  
    <title>Přiznání - Administrace</title>
  </head>
  
     <?php require "../menu.php"; ?> 
   


   
              <div class="obsah">
                <h1><a href="">Administrace</a></h1>
                <center><a href="">Výpis přiznání</a> | <a href="overeni.php">Schválení/Smazání přiznání</a> | Přidat FB stránku | Soutěž</center>
                <div class="prispevek">
                
                
                <?php
$con=mysqli_connect("localhost","***","****","*****");
mysqli_query("SET CHARACTER SET UTF-8");
mysqli_query("SET NAMES UTF-8");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$result = mysqli_query($con,"SELECT * FROM priznani");
echo "<table><tr class='zahlavi'><td>Datum</td><td>Čas</td><td>Přiznání</td><td>Text</td><td>Stav</td><td>A</td></tr>";
while($row = mysqli_fetch_array($result))
  {

  echo "<tr><td>".$row['date'] . "</td><td>" . $row['time']. "</td><td>" . $row['id-fb']. "</td><td style='width: 400px;'>" .$row['text']. "</td><td>" . $row['stav']."</td><td>S<br /> <a target='_blank' href='send.php?id=".$row['id']."'>Schv!</span></td></tr>";
  }
echo "</table>";

mysqli_close($con);
?>
<br />

<small><strong>Nápověda:</strong><br />
A - Akce<br />
S - Smazat<br /> 
Ano - Schválit<br />           
</small>                </div>                
              </div>
  <?php require "../footer.php"; ?>
  
  
Someone
Profil
Jen jsem letmo projel asi první 4 řádky a napadá mě toto:
mysqli_query("SET NAMES 'utf8'");
Bez pomlčky a s apostrofy.
comeors
Profil
Díky, ale v tom to taky není...Zkoušel jsem více variant. Zkusil jsem dát do DB špatný text (Nové) a ten mi vypisuje dobře, nechápu...
Beavis
Profil
comeors:
Celou DB mám nastavenou na 'utf8_czech_ci'
Celou DB = včetně jednotlivých sloupců?
comeors
Profil
Beavis:
comeors:
„Celou DB mám nastavenou na 'utf8_czech_ci'“
Celou DB = včetně jednotlivých sloupců?

Díky, ale i kódování jednotlivých sloupců mám nastaveno. Já než někam napíšu, většinou si dost věcí projdu :))
Taps
Profil
comeors:
Je možné dát odkaz na živou ukázku ?
comeors
Profil
Kódování v celé DB

Ukázka - nikde bohužel online nic nemám, tak jsem jen nahrál konkrétní stránku bez čehokoliv dalšího.


Opravdu děkuji za pomoc! :))
Taps
Profil
comeors:
mají kodování utf nastaveny i souboru, které do stránky načítáš pomocí require ?
comeors
Profil
Taps:
comeors:
mají kodování utf nastaveny i souboru, které do stránky načítáš pomocí require ?

Opravdu od A až do Z jsem nastavil UTF-8 ...
Taps
Profil
comeors:
Zkus text v databázi ještě zaktualizovat, tzn. ručně přepsat
comeors
Profil
To jsem taky předtím zkoušel a nyní také bez výsledků :(
Kubo2
Profil
comeors:
http://php.net/mysqli-set-charset
A skús okrem utf8 aj binary.
comeors
Profil
binary? Nechápu, jak?
Micruss
Profil
Nechybí ti tam náhodou k těm mysqli_query() i odkaz na připojení k db ?.-)))
comeors
Profil
Micruss:
Nechybí ti tam náhodou k těm mysqli_query() i odkaz na připojení k db ?.-)))

Nechápu reakci, připojení funguje :))
Tori
Profil
comeors:
Micruss má pravdu, řádky 23+24.
Kubo2
Profil
comeors:
Pridaj si pred pripojenie pomocou mysqli_connect ešte príkaz error_reporting(E_ALL | ~E_STRICT); a potom skript ulož a spusť znovu. Malo by ti vypísať niekoľko chybových hlášok o tom, že prvý parameter mysqli_query nemá byť string, ale mysqli_resource, a že mysqli_query očakáva dva argumenty a ty si mu dvakrát poskytol iba jeden.

Alebo namiesto toho čo som ti napísal vyššie, zmaž riadky 23 a 24 a nahraď ich zápisom:
@mysqli_set_charset($con, "binary");
Alebo si namiesto toho binary daj utf8, to je už na tebe, ale binary by malo fungovať spoľahlivo.
comeors
Profil
Díky všem a především tobě Kubo2! Vše funguje jak má!
Kubo2
Profil
comeors:
Nestojí za reč... Ale hlavne sa poďakuj Tori a Micrussovi, ktorí našiel túto chybu, pretože ja používam výlučne objektový štýl mysqli a preto som zo začiatku aj ja túto chybu prehliadol.
Micruss
Profil
U většiny MySQLi je nutno dát odkaz na připojení mysqli_query($db, "dotaz"); a další kdyžtak mrkni na php.net tam je to napsaný u procedulárního stylu... sám ho někdy používám, avšak u objektového již toto není třeba ;-)

jinak doporučuji si udělat nějakou funkci abys nemusel ke každýmu query psát přípojení k db a dotaz ;), ale jen dotaz

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: