Autor Zpráva
bender4
Profil
Zdravím všechny, mám web, který je propojený s MySQL databází. Zde jsou registrovaní uživatelé, chat a další. Zásadní problém je v tom, že je někde problém s kódováním a například, když se uživatel jmenuje Pepča, tak se na webu zobrazí PepaÄŤa, opět to je stejné ve chatu a v dalších. Problém bude v databázi, v nastavení webu (stránky jsou v php) nebo v použitém fontu? Jakým způsobem to "opravit" aby fungovaly české znaky?
Děkuji všem za rady.
Kajman
Profil
Některé časteji řešené dotazy pro MySQL - FAQ » MySQL a čeština
bender4
Profil
Kajman:
Dobrý den, děkuji za rychlou reakci. Když sem upravil soubor dle Vámi odkazované stránky, tak se na webu zobrazuje chyba: Fatal error: Uncaught Error: Call to undefined function mysql_set_charset() in *************virtual/www/messages.php:2 Stack trace: #0 {main} thrown in /data/web/virtuals/199446/virtual/www/messages.php on line 2
Tomášeek
Profil
bender4:
Hodit chybovou hlášku do vyhledavače tě nenapadlo? Pročíst si jakékoliv téma ohledně mysql tě nenapadlo? Je X let odstraněné, dříve deprecated.
Keeehi
Profil
Tomášeek:
X let odstraněné se nedá úplně tvrdit (aktivní podpora poslední PHP veze která rozšíření mysql obsahovala skončila před rokem a sedmi měsíci, bezpečnostní záplaty ještě dostává), stále tu mezi námi je kvůli některým hostingům tu asi i ještě chvíli bude.

bender4:
Co tím chtěl Tomášeek vlastně říci je to, že pravděpodobně používáš PHP některé sedmičkové verze ze které bylo rozšíření mysql odstraněno. Zmizely tedy všechny funkce mysql_*. Existuje však rodina funkcí mysqli_* které jsou velmi podobné těm odstraněným. Největším rozdílem pro začátečníka je asi to, že tam kde u funkcí mysql_* byl volitelný parametr pro určení spojení do databáze je u mysqli_* funkcí tento parametr povinný.
bender4
Profil
Keeehi:
Je to jako začarovaný kruh, opět při použití příkazu mysqli web háže stejnou chybu. Zkusím ještě prohledat Google, ale možná bude problém úplně jinde...
T-fon
Profil
Stejnou chybu házet nemůže, pokud jsi tam nenechal funkci mysql_set_charset(). Zkopíruj sem část kódu, kde se připojuješ k databázi a chybu ti tam najdem.
bender4
Profil
T-fon:
Tady posílám kompletní kopii kódu stránky, kam chci vložit příkaz pro českou diakritiku:
<?php
session_set_cookie_params(172800);
session_start();
require('core/config.php');
require('core/auth.php');
require('core/system.php');
$auth = new Auth;
$system = new System;

$system->domain = $domain;
$system->db = $db;

$menu['messages'] = 'active';
$page['name'] = 'Messages';

if(!$auth->isLogged()) {
    header('Location: index.php');
    exit;
}

$user = $system->getUserInfo($_SESSION['user_id']);
$system->setUserActive($user->id);

$conversations = $db->query("SELECT * FROM conversations WHERE (user1='".$user->id."' OR user2='".$user->id."') AND last_activity != '' ORDER BY last_activity DESC");

require('inc/top.php');
require('layout/messages.php');
require('inc/bottom.php');

Do jaké části to vložit, aby to fungovalo? Děkuji.
T-fon
Profil
Připojení do databáze bude nejspíš v system.php, ne?
bender4
Profil
T-fon:
V souboru config.php je připojení k databázi, kam tedy vepsat parametr?
// Database Configuration
$_db['host'] = 'xxxxxxx.wedos.net';
$_db['user'] = 'xxxxxxxx';
$_db['pass'] = 'xxxxxxxx';
$_db['name'] = 'xxxxxxx';
T-fon
Profil
Tipnul bych, že se tam používá PDO, takže někde by mělo být něco jako:
$dsn = 'mysql:dbname=' . $_db['name'] . ';host=' . $_db['host'];
$user = $_db['user'];
$password = $_db['pass';

$db = new PDO($dsn, $user, $password);
$db->exec("set names utf8");
S tim, že ten poslední řádek ti tam chybí.
bender4
Profil
T-fon:
Vůbec nic takového tam nemůžu najít. Abych ti upřesnil, o jaký script se jedná - matchmescript.com
Napsal bych si o podporu přímo autorovi, nicméně ten ukončil prodej na Envato marketu a není s ním vůbec žádné spojení.
T-fon
Profil
A něco takového?
$db=mysqli_connect($_db['host'],$_db['user'],$_db['pass'],$_db['name']);
bender4
Profil
Naprosto nic není k nalezení, všechno ohledně databáze je souboru config.php, a to již zmiňovaný kód:
// Database Configuration
$_db['host'] = 'xxxxxxx.wedos.net';
$_db['user'] = 'xxxxxxxx';
$_db['pass'] = 'xxxxxxxx';
$_db['name'] = 'xxxxxxx';
T-fon
Profil
A tyto proměnné, které jsi vypsal musí být někde použity. Aby se vytvořilo databázový spojení...
bender4
Profil
T-fon:
Vůbec to nemůžu najít, jestli máš zájem mi s tím pomoci, tak se můžeme domluvit třeba přes Stovkomat, a klidně bych ti za zprovoznění diakritiky zaplatil.
T-fon
Profil
Stovkomat neznám :).
Pokud někdo neporadí líp, tak mi tu klidně nech na sebe nějaký kontakt a já se na to podívám.
bender4
Profil
T-fon:
Dobře, napiš mi prosím na bender4@centrum.cz
Díky.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0