Diskuze: Pomoc s Db.php z 5.dílu v Php tutorialu

PHP PHP Pomoc s Db.php z 5.dílu v Php tutorialu American English version English version

Avatar
Michael Nový:

Ahojte všichni :-P cca před týdnem jsem dokončil php tutorialy, v 5. dílu byl db.php tak jsem si ho stáhnul a chtěl ho použít pro login formu ale když napíšu Db::connect('mys­ql.hostinger.cz', 'ners_db', 'u483056427_net, 'aheslo:-P') tak mi to vypíše
"Warning: PDO::__construct(): php_network_ge­taddresses: getaddrinfo failed: Po�adovan� n�zev je platn�, ale nebyla nalezena ��dn� data po�adovan�ho typu. in C:\xampp\htdoc­s\nettest\Db.php on line 48"

Fatal error: in C:\xampp\htdoc­s\nettest\Db.php on line 48" jsem z toho ztracený.. :-(

zde je screen toho co mi to vypisuje : https://ctrlv.cz/48JO
Všem děkuju za pomoc :-)

 
Odpovědět 28. dubna 17:10
Avatar
Matěj Bělohoubek:

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á...

 
Nahoru Odpovědět 28. dubna 17:23
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:

Skus

$dsn = "mysql:host=mysql.hostinger.cz;dbname=ners_db";
$user = "u483056427_net";
$password = "aheslo:-P";
Db::connect($dsn, $user, $password)
Editováno 28. dubna 17:43
Nahoru Odpovědět 28. dubna 17:41
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Odpovídá na Matěj Bělohoubek
Michael Nový:

zkoušel jsem i nahrát ty soubory na web a napsat přesně jak mám tabulku i na Mysql serveru toho hostingu.

 
Nahoru Odpovědět 28. dubna 20:12
Avatar
Odpovídá na shaman
Michael Nový:

nepomohlo to..
tohle začne psát https://ctrlv.cz/2qdz
a napsal jsem to podle mě dobře. https://ctrlv.cz/1iwh

 
Nahoru Odpovědět 28. dubna 20:22
Avatar
Michael Nový:

https://ctrlv.cz/1drk když jsem to zkusil vyřešit napsalo to toto.

 
Nahoru Odpovědět 28. dubna 20:32
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Michael Nový
Marek Z.:

A místo hosta napsat localhost nepomůže, či to je vzdálené připojení k db?

Nahoru Odpovědět 28. dubna 20:32
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Michael Nový:

zkusím
jakože to osobně nevím.. :D moc se v tom nevyznám ale zde přikladám další obrázek.

 
Nahoru Odpovědět 28. dubna 20:42
Avatar
Odpovídá na Marek Z.
Michael Nový:

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

 
Nahoru Odpovědět 28. dubna 20:48
Avatar
LacoS.
Člen
Avatar
LacoS.:

Skus namiesto $_POST pouzit $_GET

 
Nahoru Odpovědět  -1 28. dubna 21:01
Avatar
Odpovídá na LacoS.
Michael Nový:

všude kde je post použít get?

 
Nahoru Odpovědět 28. dubna 21:04
Avatar
LacoS.
Člen
Avatar
LacoS.:

Ano. Mozno sa ti iba nedostanu premenne z jednej stranky na druhu...

 
Nahoru Odpovědět 28. dubna 21:05
Avatar
Odpovídá na LacoS.
Michael Nový:

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.

 
Nahoru Odpovědět 28. dubna 21:09
Avatar
LacoS.
Člen
Avatar
LacoS.:

co mas na riadku 60 v DB.php ? (vraj je tam nieco NULL ...???)

Daj si vypisat svoje meno/heslo, ci si si ho spravne poslal...

Editováno 28. dubna 21:18
 
Nahoru Odpovědět 28. dubna 21:18
Avatar
Michael Nový:

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.

 
Nahoru Odpovědět 28. dubna 21:28
Avatar
Michael Nový:

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..

 
Nahoru Odpovědět 28. dubna 21:58
Avatar
LacoS.
Člen
Avatar
LacoS.:

Nesmies sa vzdavat. Ak budes hladat LEN nove/funkcne riesenia, vela sa toho nenaucis.
Skus radsej prist na to, preco to nejde ... to Ti da viac, nez najst na nete funkcne riesenie bez toho, aby si tomu rozumel.

 
Nahoru Odpovědět 29. dubna 7:53
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:

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.

Nahoru Odpovědět 29. dubna 10:47
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Odpovídá na shaman
Michael Nový:

https://ctrlv.cz/3GMu nejde ani když tam dám tu ip, napíše to upe něco jiného.

 
Nahoru Odpovědět 29. dubna 14:14
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Michael Nový
Matúš Petrofčík:

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?

Nahoru Odpovědět 29. dubna 14:25
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Michael Nový:
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

Editováno 29. dubna 14:34
 
Nahoru Odpovědět 29. dubna 14:32
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Michael Nový
Marek Z.:

Můžeš zaslat soubory s kódem, které máš na serveru?

Nahoru Odpovědět 29. dubna 17:42
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Michael Nový:

doufám že to otevřete. Jsem na linuxech a nevím jak to mám hodit do .zip :D tak to máte v .tar.gz
http://leteckaposta.cz/718304806

 
Nahoru Odpovědět 29. dubna 18:18
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:

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);
Nahoru Odpovědět  +2 29. dubna 19:08
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:

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.

Nahoru Odpovědět  +1 29. dubna 19:11
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Odpovídá na shaman
Michael Nový:

https://ctrlv.cz/5viM zase to nejde achjo :D 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.

 
Nahoru Odpovědět 29. dubna 20:08
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na shaman
Matúš Petrofčík:

Šikovno, ja som si toho nevšimol :D

Nahoru Odpovědět 29. dubna 20:37
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Z.
Redaktor
Avatar
Nahoru Odpovědět 29. dubna 23:56
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Michael Nový:

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..

 
Nahoru Odpovědět 30. dubna 0:14
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:

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.

Nahoru Odpovědět 30. dubna 0:35
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Michael Nový:

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.

 
Nahoru Odpovědět 30. dubna 0:41
Avatar
Michael Nový:

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.

 
Nahoru Odpovědět 30. dubna 0:43
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:

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é :)

Nahoru Odpovědět 30. dubna 1:35
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Michael Nový
Matúš Petrofčík:

Presne to!!! Svoju ip adresu zistíš napr. na www.mojeip.cz ;)

Nahoru Odpovědět 30. dubna 12:20
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Michael Nový:

A do $host = mám napsat localhost, mysql.hostinger.cz nebo tu ip od databaze?

Editováno 30. dubna 12:36
 
Nahoru Odpovědět 30. dubna 12:34
Avatar
Odpovídá na Matúš Petrofčík
Michael Nový:

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 ..

 
Nahoru Odpovědět 30. dubna 12:50
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Michael Nový
Matúš Petrofčík:

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

Editováno 30. dubna 13:28
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 30. dubna 13:26
obsah kocky = r^2 ... a preto vlak drnká
Avatar
LacoS.
Člen
Avatar
LacoS.:

mysql_select_db("lo­gin1") ... to akoze login1 je databaza?
... co tymto riadkom chcel autor povedat?

Nemyl si to s prikazom "Select..." v nejakej tabulke;
Uz si predsa pripojeny k DB: "u483056427_jojo"

Editováno 30. dubna 13:55
 
Nahoru Odpovědět 30. dubna 13:53
Avatar
Odpovídá na Matúš Petrofčík
Michael Nový:

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 :)

 
Nahoru Odpovědět  +2 30. dubna 14:46
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Nahoru Odpovědět  +1 30. dubna 15:21
obsah kocky = r^2 ... a preto vlak drnká
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 44 zpráv z 44.