NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
Michael Nový:28.4.2016 17:10

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.4.2016 17:10
Avatar
Matěj Bělohoubek:28.4.2016 17:23

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.4.2016 17:23
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:28.4.2016 17:41

Skus

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

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.4.2016 20:12
Avatar
Odpovídá na shaman
Michael Nový:28.4.2016 20:13

okey zkusím.

 
Nahoru Odpovědět
28.4.2016 20:13
Avatar
Odpovídá na shaman
Michael Nový:28.4.2016 20:22

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.4.2016 20:22
Avatar
Michael Nový:28.4.2016 20:32

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

 
Nahoru Odpovědět
28.4.2016 20:32
Avatar
Odpovídá na Michael Nový
Uživatel sítě :28.4.2016 20:32

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

Nahoru Odpovědět
28.4.2016 20:32
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Uživatel sítě
Michael Nový:28.4.2016 20:42

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.4.2016 20:42
Avatar
Odpovídá na Uživatel sítě
Michael Nový:28.4.2016 20:48

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.4.2016 20:48
Avatar
LacoS.
Člen
Avatar
LacoS.:28.4.2016 21:01

Skus namiesto $_POST pouzit $_GET

 
Nahoru Odpovědět
28.4.2016 21:01
Avatar
Odpovídá na LacoS.
Michael Nový:28.4.2016 21:04

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

 
Nahoru Odpovědět
28.4.2016 21:04
Avatar
LacoS.
Člen
Avatar
LacoS.:28.4.2016 21:05

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

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

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.4.2016 21:09
Avatar
LacoS.
Člen
Avatar
LacoS.:28.4.2016 21:18

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.4.2016 21:18
 
Nahoru Odpovědět
28.4.2016 21:18
Avatar
Michael Nový:28.4.2016 21:28

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.4.2016 21:28
Avatar
Michael Nový:28.4.2016 21:58

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.4.2016 21:58
Avatar
LacoS.
Člen
Avatar
LacoS.:29.4.2016 7:53

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.4.2016 7:53
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:29.4.2016 10:47

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.4.2016 10:47
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Odpovídá na shaman
Michael Nový:29.4.2016 14:04

jdu to zkusit.

 
Nahoru Odpovědět
29.4.2016 14:04
Avatar
Odpovídá na shaman
Michael Nový:29.4.2016 14:14

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.4.2016 14:14
Avatar
Odpovídá na Michael Nový
Matúš Petrofčík:29.4.2016 14:25

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.4.2016 14:25
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Michael Nový:29.4.2016 14:32
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.4.2016 14:34
 
Nahoru Odpovědět
29.4.2016 14:32
Avatar
Odpovídá na Michael Nový
Uživatel sítě :29.4.2016 17:42

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

Nahoru Odpovědět
29.4.2016 17:42
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Uživatel sítě
Michael Nový:29.4.2016 18:18

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.4.2016 18:18
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:29.4.2016 19:08

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

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
29.4.2016 19:11
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Odpovídá na shaman
Michael Nový:29.4.2016 20:08

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.4.2016 20:08
Avatar
Odpovídá na shaman
Matúš Petrofčík:29.4.2016 20:37

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

Nahoru Odpovědět
29.4.2016 20:37
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Michael Nový
Uživatel sítě :29.4.2016 23:56

Špatné heslo?

Nahoru Odpovědět
29.4.2016 23:56
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Uživatel sítě
Michael Nový:30.4.2016 0:14

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.4.2016 0:14
Avatar
shaman
Člen
Avatar
Odpovídá na Michael Nový
shaman:30.4.2016 0:35

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.4.2016 0:35
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Michael Nový:30.4.2016 0:41

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.4.2016 0:41
Avatar
Michael Nový:30.4.2016 0:43

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.4.2016 0:43
Avatar
Matúš Petrofčík:30.4.2016 1:35

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.4.2016 1:35
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Michael Nový
Matúš Petrofčík:30.4.2016 12:20

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

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

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

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

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.4.2016 12:50
Avatar
Odpovídá na Michael Nový
Matúš Petrofčík:30.4.2016 13:26

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.4.2016 13:28
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
30.4.2016 13:26
obsah kocky = r^2 ... a preto vlak drnká
Avatar
LacoS.
Člen
Avatar
LacoS.:30.4.2016 13:53

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.4.2016 13:55
 
Nahoru Odpovědět
30.4.2016 13:53
Avatar
Odpovídá na Matúš Petrofčík
Michael Nový:30.4.2016 14:46

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
30.4.2016 14:46
Avatar
Odpovídá na Michael Nový
Matúš Petrofčík:30.4.2016 15:21

NZ, časom sa to zlepší ;)

Nahoru Odpovědět
30.4.2016 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.