Diskuze: Nahrání index.php na web?
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 25 zpráv z 25.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
vyhodí ti to nějakou chybu, ale máš nastaveno zakazování zobrazení chyb.
Určitě tam máš někde error a na Endoře vypnuté zobrazování chyb.
Jako zakázáno na webu nebo v prohlížeči?
V administraci Endory máš vypnutí/zapnutí zobrazování PHP errorů.
Myslím že u nastavení hostingu, úplně dole
Tam to mám zapnuté, ale pořád se nic neobjevuje.
Zkuste se prosím podívat na http://eni-story.cekuj.net/index.php Díky
Otevři si F12 (ve Chrome) - Fatal error: require(): Failed opening required 'Db.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/users/enistory/eni-story.cekuj.net/web/index.php on line 3
cesta... nenašlo ti to soubor co chceš přidat...
Prosím, teď jsem to upravil a stále error.
Mrkněte teďka na web www.eni-story.cekuj.net
Díky
Ten error to nevypisuje jen tak - má ti říci, co máš, případně
můžeš mít, špatně...
Tak si ho prosím přečti, pogoogli a uprav to...
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /home/users/enistory/eni-story.cekuj.net/web/Db.php:48 Stack trace: #0 /home/users/enistory/eni-story.cekuj.net/web/Db.php(48): PDO->__construct('mysql:host=;dbn...', NULL, NULL, Array) #1 /home/users/enistory/eni-story.cekuj.net/web/index.php(4): Db::connect() #2 {main} thrown in /home/users/enistory/eni-story.cekuj.net/web/Db.php on line 48
Já už jsem si ho prošel několikrát, ale ztrácím se v takové záplavě
:-/
Navíc mi to vyhazuje i nějaký error v Db.php , který mám stažený odtud, v
něm se nevyznám :-/
Nevidíš v tom nějaký jasný řešení? Já se s tím jinak budu prát celou
noc..
Kód můžeš mít odtud, ale pokud ho špatně použiješ tak bude házet chyby...
Sem dej ten zdroják, ne? Jak ti asi jinak pomoc...
Takhle vypadá můj index.php:
<?php
require('Db.php');
Db::connect();
if (isset($_GET['clanek']))
$url = $_GET['clanek'];
else
$url = 'uvod';
$clanek = Db::queryOne('
SELECT *
FROM clanky
WHERE url=?
', $url);
if (!$clanek)
{
if ($url != 'chyba')
{
header('Location: index.php?clanek=chyba');
exit();
}
else
die('Nebyl nalezen chybovy clanek');
}
?>
<!DOCTYPE html>
<html lang="cs-cz">
<head>
<meta charset="utf-8" />
<meta name="description" content="<?= htmlspecialchars($clanek['popisek']) ?>" />
<meta name="keywords" content="<?= htmlspecialchars($clanek['klicova_slova']) ?>" />
<link rel="shortcut icon" href="images/E2.bmp" />
<link rel="stylesheet" href="css/style.css" type="text/css" />
<title><?= htmlspecialchars($clanek['titulek']) ?></title>
</head>
<body>
<header>
<div id="logo"><h1>Eni-story</h1></div>
<nav>
<ul>
<li><a href="index.php?clanek=uvod">Domů</a></li>
<li><a href="clanky.php">Příběhy</a></li>
<li><a href="index.php?clanek=kontakt">Kontakt</a></li>
</ul>
</nav>
</header>
<article>
<div id="centrovac">
<header>
<h1><?= htmlspecialchars($clanek['titulek']) ?></h1>
</header>
<section>
<?= $clanek['obsah'] ?>
</section>
<div class="cistic"></div>
</div>
</article>
<footer>
Vytvořil ©Eni-story.cz
<a href="administrace.php">Administrace</a>
</footer>
</body>
</html>
Podle indexu a toho erroru tipuji, že chyba bude v prvních 4 řádcích
<?php
require('Db.php');
Db::connect();
Máš index.php ve složce na stejné úrovni jako Db.php?
Přidej sem ještě Db.php prosím. (označ mi, co je řádek 48)
Zde je část Db.php , chybový řádek je hned ten první. A mám oba soubory na stejné úrovni.
**public static function query($query) {**
$statement = self::executeStatement(func_get_args());
return $statement->rowCount();
}
Doufám že nevadí, že Db::connect() je prázdné, jen jsem vymazal údaje k databázi, které tam předtím byly.
Tak jsem zkusil zase nějakou dobu problém řešit, ale nenacházím východisko. Zřejmě nejsem dostatečně zběhlý na to, abych byť triviální problém okamžitě odhalil :-/
Jan Bezdíček jestli se chceš dohadovat, můžete se přesunout do PMka, tady je fórum. Vaše zprávy mažu.
Nemá přece vůbec vyplněněné parametry pro připojení k databázi ...
Db::connect();
Chybí ti tam hostitel, heslo, jméno a název databáze. Hostitel bude u Endory localhost, zbylé údaje si zadáš v administraci v správě databází. Založíš si pro hosting db (pokud nemáš) a uživatele(pokud nemáš), údaje doplníš v kódu a bude to fungovat.
Já tam ty údaje měl, jen jsem je vymazal, protože se jednak zobrazovaly v chybové hlášce, ale možná to bylo špatně zadané.. Na první pozici má být tedy SLOVY localhost?
Záleží na tom jak máš funkci connect napsanou v Db.php.
function connect($host, $db, $user, $pass){}
pokud takhle tak zápis bude:
Db::connect('localhost', 'db_k_webu', 'db_username', 'db_password' );
Místo těchto údaju dáš to co ti hosting vygeneruje pří vytvoření pro přístup k DB.
Díky, měl jsem to předtím zřejmě špatně zadáno popořadě Ale vyskytla se mi další chyba a
opět tomu nerozumím, jelikož mě to odkazuje na Db.php :/
"Fatal error: Call to a member function execute() on a non-object in
/home/users/enistory/eni-story.cekuj.net/web/Db.php on line 61"
Pro jistotu odkaz na web: eni-story.cekuj.net
nejspíše mě to odkazuje na tuto část souboru Db.php :
private static function executeStatement($params)
{
$query = array_shift($params);
$statement = self::$connection->prepare($query);
$statement->execute($params);
return $statement;
}
Tak to vypadá zatím vyřešeně! Trošku jsem si pohrál s drobnostmi, naodkazoval jsem vše na
správnou databázi a ejhle, zřejmě vše funguje.
Podívejte se ještě prosím jednou na web eni-story.cekuj.net , zda se vám
načte alespoň úvodní stránka
Zobrazeno 25 zpráv z 25.