Diskuze: Pomoc s Db.php z 5.dílu v Php tutorialu
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 44 zpráv z 44.
//= 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.
No a nebude to možná tím, že tu databázi máš na nějaké stránce, ale
soubor db.php máš uložený ve svém počítači?
Jinak mne nic teda nenapadá...
Skus
$dsn = "mysql:host=mysql.hostinger.cz;dbname=ners_db";
$user = "u483056427_net";
$password = "aheslo:-P";
Db::connect($dsn, $user, $password)
zkoušel jsem i nahrát ty soubory na web a napsat přesně jak mám tabulku i na Mysql serveru toho hostingu.
nepomohlo to..
tohle začne psát https://ctrlv.cz/2qdz
a napsal jsem to podle mě dobře. https://ctrlv.cz/1iwh
https://ctrlv.cz/1drk když jsem to zkusil vyřešit napsalo to toto.
A místo hosta napsat localhost nepomůže, či to je vzdálené připojení k db?
zkusím
jakože to osobně nevím..
moc se v tom nevyznám ale zde přikladám další obrázek.
ani pomocí localhostu to nejde, zobrazí mi to stránku registrace.php bez problému ale jak dám registrovat vypíše to samé co předtím https://ctrlv.cz/1drk
Taky to nejde, dám registrovat a znovu se načte registrace.php.. ach jo, bud někde najít jiný návod a nebo nevím.
tohle je na 60 řádku v db.php $statement =
self::$connection->prepare($query);
jop napsal, když nejsem v databazi 20 minut odhlásí mě to samo a chce to po
mě heslo a vždy funguje.
když jsem to dal na stránky tak mi to vypaslo o mnoho víc věci.. nechám to tak, zítra si najdu tutorial na jiný login system..
Ten riadok s DSN zmen na tu ip adresu co mas v control paneli. Tam mas vlastne napisane ze sa mas pripajat cez tu adresu.
$dsn = "mysql:host=31.170.164.42;dbname=ners_db";
Ta hlaska
Call to member function prepare() on null
je vlastne chyba ze sa snazis robit dotazy a nie si pripojeny na databazu. Pripojenie na databazu by mal byt objekt a nie null.
Dalsie nedorozumenie je ze ta odhlasuje kazdych 20 minut. Odhlasuje ta z uzivatelskeho rozhrania pri necinnosti 20 minut. Tvojho php scriptu sa to netyka, pretoze on sa prihlasuje pri kazdom volani programu.
Urcite sa nevzdavaj. Programovanie nie je o zopakovani riesenia problemu ale o opakovanom rieseni problemov.
https://ctrlv.cz/3GMu nejde ani když tam dám tu ip, napíše to upe něco jiného.
Píše ti že nemáš definované heslo.
Pripomeniem shamanov komentár vyššie:
$dsn = "mysql:host=mysql.hostinger.cz;dbname=ners_db";
$user = "u483056427_net";
$password = "aheslo:-P";
Db::connect($dsn, $user, $password)
Všimni si pridanie hodnôť do daných premenných a následne použitie týchto premenných v Db::connect(). Máš to podobne?
session_start();
require('Db.php');
$dsn = "mysql:host=mysql.hostinger.cz;dbname=ners_db";
$user = "u483056427_net";
$password = "123456789";
Db::connect($dsn, $user, $password);
mám to takhle. heslo je v pořádku. a když tam dám tu ip a nebo ten mysql.hostinger.cz tak i tak furt to vypíše tohle https://ctrlv.cz/3GMu
Můžeš zaslat soubory s kódem, které máš na serveru?
doufám že to otevřete. Jsem na linuxech a nevím jak to mám hodit do .zip
tak to máte v .tar.gz
http://leteckaposta.cz/718304806
Prave som to otvorila vidim v Db.php ze
public static function connect($host, $database, $user, $password)
{
if (!isset(self::$connection)) {
$dsn = "mysql:host=$host;dbname=$database";
self::$connection = new PDO($dsn, $user, $password, self::$options);
}
}
To znamena ze $dsn sa vytvori v triede Db v metode connect. Tato metoda potrebuje 4 parametre: host, databasu, usera a heslo. Takze tie tvoje riadky v tvojom registrace.php zmen takto:
<?php
session_start();
require('Db.php');
$host = "31.170.164.42";
$database = "ners_db";
$user = "u483056427_net";
$password = "123456789";
Db::connect($host, $database, $user, $password);
V tom clanku http://www.itnetwork.cz/…php-tutorial tam pouzili
session_start();
require('Db.php');
Db::connect('127.0.0.1', 'ners_db', 'root', '');
Tie posledne dve zatvorky je prazdne heslo, teda ziadne heslo. Je dolezite ked volas nejaku metodu triedu aby si si pozrel ake parametre potrebuje a dal mu ich v spravnom poradi a spravnej forme.
https://ctrlv.cz/5viM zase to nejde achjo a to jsem místo toho jak mi někdo poradil použít GET jsem přepsal zpátky na POST a i tak to nejde.
heslo mám to jedno a to samé a to je 12345679
zkusím ještě vytvořit znovu databázi a popřípadě zkusit free
domenu..
ta posledna chyba
SQLSTATE access denied for user
znamena ze sa pripajas na dobry server kde bezi SQL a sql ti odpoveda chybovou hlaskou. Teraz si uz len skontroluj ze mas spravnu databazu, uzivatela a heslo.
Všechno mám dobře.. vše co jste mi radili běží ale na hostingu
webzdarma.cz ...... ale když chci to dát na hostinger.cz tak prostě to nejde,
hledal jsem u nich v nápovědě a mají tam napsané "
Mohu se připojit k MySQL z mého domácího počítače?
Ne. Vzdálené připojení k MySQL je zakázáno z bezpečnostních a
výkonnových důvodů. Můžete se připojit k MySQL pomocí vašich PHP
skriptů, které jsou hostovány na našich serverch.
"
a prostě nevím jak to myslí... na webzdarma mi to funguje ale na hostingru
ne.
a ještě tam mají napsané "
Jaký host name použít pro MySQL?
Vstupte do ovládacího panelu a klikněte na ikonu "MySQL". Váš MySQL hostname bude uveden zde.
Důležité! Nikdy nepoužívejte "localhost" jako MySQL hostname. Jinak
budete mít odepřen přístup.
"
nechci to mít na webzdarma.cz ty data protože mám zaplacenej hosting u
hostingeru.cz i domenu tak doufám že to půjde.
A máš na tom hostingu databázy povolené pripájať sa na ňu externe? Môže byť že niektorí poskytovatelia majú také nastavenie, že na ich databázy sa dá pripojiť len z ich serverov (nie z iných a nie z localhost-u).
Len tak ma napadlo, ja sa napr. u endory neviem dostať na ftp kým si nezmenim povolenú IP, tak možno tam je niečo podobné
Presne to!!! Svoju ip adresu zistíš napr. na www.mojeip.cz
A do $host = mám napsat localhost, mysql.hostinger.cz nebo tu ip od databaze?
Nějak mi to furt nejde.. co píše na webu : https://ctrlv.cz/HKzb
databaze : https://ctrlv.cz/Vm5J
$connect = mysql_connect("mysql.hostinger.cz", "u483056427_jojo", "123456789") or die("Couldn't connect to the database!");
mysql_select_db("login1") or die("Couldn't find database");
zkusil jsem si ještě v noci nahodit jiný login, ale i tak to nejde, musí
být určitě chyba na straně hostingu.
ale když jsem oba loginy nahodil na webzdarma jede to ..
Och chlape, ale tvoja databáza sa nevolá login1 ale u483056427_jojo, teda rovnako ako užívateľ zdá sa. To login1 je už tabuľka v danej databáze.
Na pripojenie z tvojho skriptu na tú databázu máš použiť tú ip, máš to napísané vyššie v tom obrázku čo si posielal v predchádzajúcich komentároch. klikaj tu
A prečo zas používaš mysql_connect?! Ten je zastaralý a nemá sa používať, preto ti píše chybu. Používaj prosím PDO (teda wrapper Db.php z NERS-u). Mám taký pocit že skúšaš veci ktorým zatiaľ nerozumieš a neprešiel si tutoriály poctivo, len stiahol kód.
Tak ja ti to zhrniem:
// pridanie databázového wrapperu do tvojej aplikácie
require('Db.php');
// nastavenie pripojenia na tvoju databázu u hostingeru
$host = "31.170.164.42"; // mal by si použiť tú ip čo som čítal, ak funguje mysql.hostinger.cz tak budiž
$database = "u483056427_jojo"; // názov tvojej databázy, zmeň si tak ako si si vytvoril db
$user = "u483056427_jojo"; // užívateľské meno pod ktorým sa prihlasuješ na databázu
$password = "123456789"; // heslo očividne
// pripojenie na databázu pomocou toho Db wrappera
Db::connect($host, $database, $user, $password);
A nezabudni že si musíš povoliť pripojenie na databázu z tvojej ip! www.mojeip.cz
Děkuju moc! Mám to. Tutoriál jsem si četl poctivě.. jenom jsem nebyl na orientačním programováním v php.. přisahám že jsem to dělal poctivě jenom jsem to špatně pochopil. A ještě jednou děkuju moc
Zobrazeno 44 zpráv z 44.