IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Problém s zapisováním do databáze

Aktivity
Avatar
Tomáš Kala
Člen
Avatar
Tomáš Kala:30.5.2018 9:40

Zdravím,
vytvořil jsem si jednoduchý redakční systém (podle tutoriálu zde na síti) s registrací/přih­lašováním a psaním článků.
Do databáze se mi ovšem zapíše pouze jeden uživatel a jeden článek
vždy se v pohodě vytvoří, ale už se nezapíše do databáze

dokázal by mi někdo pomoci? :D

 
Odpovědět
30.5.2018 9:40
Avatar

Člen
Avatar
:30.5.2018 10:19

Počkej, vytáhnu si křišťalovou kouli abych nahlédl to tvého kódu.

Editováno 30.5.2018 10:19
 
Nahoru Odpovědět
30.5.2018 10:19
Avatar
Tomáš Kala
Člen
Avatar
Tomáš Kala:30.5.2018 10:21

zdroják registrace, předtím se mi to neposlalo

<?php
session_start();
require('Db.php');
Db::connect('127­.0.0.1', 'rs', 'root', '');

if ($_POST)
{
if ($_POST['rok'] != date('Y'))
$zprava = 'Chybně vyplněný rok.';
else if ($_POST['heslo'] != $_POST['heslo_zno­vu'])
$zprava = 'Hesla se neshodují';
else
{
$existuje = Db::querySingle('
SELECT COUNT(*)
FROM uzivatele
WHERE jmeno=?
LIMIT 1
', $_POST['jmeno']);
if ($existuje)
$zprava = 'Uživatel s touto přezdívkou již existuje.';
else
{
$heslo = password_hash($_POS­T['heslo'], PASSWORD_DEFAULT);
Db::query('
INSERT INTO uzivatele (jmeno, heslo)
VALUES (?, ?)
', $_POST['jmeno'], $heslo);
$_SESSION['uzi­vatel_id'] = Db::getLastId();
$_SESSION['uzi­vatel_jmeno'] = $_POST['jmeno'];
$_SESSION['uzi­vatel_admin'] = 0;
header('Location: administrace.php');
exit();
}
}
}
?>
<!DOCTYPE html>
<html lang="cs-cz">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl clanky2.css" type="text/css" />
<title>Registra­ce</title>
</head>

<body>
<div id="centrovac"></div>
<header>
<div id="logo"><h1>IT Tipy a triky</h1></div>

<nav>
<ul>
<li id="aktivni"><a href="index.php">Do­mů</a></li>
<li><a href="clanky.php">Člán­ky</a></li>
<li><a href="kontakt­.php">Kontakt</a></li>

</ul>
</nav>
</header>
<article>

<header>
<h2>Registrace</h2>
</header>
<section>
<?php
if (isset($zprava))
echo('<p>' . $zprava . '</p>');
?>

<form method="post">
Jméno<br />
<input type="text" name="jmeno" /><br />
Heslo<br />
<input type="password" name="heslo" /><br />
Heslo znovu<br />
<input type="password" name="heslo_znovu" /><br />
Zadejte aktuální rok (antispam)<br />
<input type="text" name="rok" /><br />
<input type="submit" value="Registrovat" />
</form>
</section>
<div class="cistic"></div>

</article>
<footer>
Vytvořil Tomáš Kala 2018 podle návodu na <a href="http://­www.itnetwork­.cz/">ITnetwor­k.cz</a>
</footer>
</body>
</html>

 
Nahoru Odpovědět
30.5.2018 10:21
Avatar

Člen
Avatar
:30.5.2018 10:28

Kód snad vypadá dobře.
Vždy se vytvoří uživatel se stejným ID? Když už tam je uživatel 1x, vyhodí to nějaký error? Máš v databázi nastaven AUTO_INCREMENT na ID?

Příště to dávej do
<code]

</code]

Editováno 30.5.2018 10:28
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
30.5.2018 10:28
Avatar
Tomáš Kala
Člen
Avatar
Odpovídá na
Tomáš Kala:30.5.2018 10:39

ano mám auto increment
nikdy mi to žádnou chybu nevyhodí, dokonce mi to uživatele po registraci přihlásí, ale po odhlášení už ho nepřihlásím (není v databázi)

 
Nahoru Odpovědět
30.5.2018 10:39
Avatar
Tomáš Kala
Člen
Avatar
Tomáš Kala:30.5.2018 11:33

už jsem to vyřešil. celou databázi jsem předělal

u článků mi chybělo AUTO INCREMENT, měl jsem je jen u členů

 
Nahoru Odpovědět
30.5.2018 11:33
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.5.2018 11:44
error_reporting(E_ALL); // tam mas?
// + vypis sql chyb tam mas?

Jakou chybu to pise? Treba mas spatne pripojeni k db. Nebo spatnou tabulku? Nebo tabulka vubec neexistuje

  • if ($_POST) - zbytecna podminka, pole $_POST existuje vzdy
  • $_POST['jmeno'] - nedavej udaje z post primo do sql prikazu (jestli to tady v clanku je v nejakem navodu, apk je clanek spatne)
  • Zkus dat var_dump($_SES­SION), jestli je uzivatel prihlasen a zda je prihlasen, kdyz klikne na nejaky dalsi odkaz na strance

Jinak, to vypada, ze by to mohlo fungovat.

  • Jestli chces, muzes do tabulky pridat treba pres php-my-admina nejaky radek a zkus jej v php nejdriv zobrazit. Az pak zkousej slozitejsi veci, jako prihlasovani, kdyz mas jistotu, ze sql funguje spravne.

Aha, uz nic, uz jsi to vyresil :)

Editováno 30.5.2018 11:45
 
Nahoru Odpovědět
30.5.2018 11:44
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:31.5.2018 8:47

Jeste mne napadlo, ze tohle by se dalo resit treba tak, ze si vypises sql prikaz na obrazovku. Oznacis. das ctrl+c ctrl+v do jineho okna, kde mas spustemy phpmyadmin, zalozku sql, vybranou tvou databazi. A spustits to tam. Phpmyadmin vypisuje sql chyby, takze by to pindalo nejsip na ten autoinkrement.

 
Nahoru Odpovědět
31.5.2018 8:47
Avatar
Tomáš Kala
Člen
Avatar
Odpovídá na Peter Mlich
Tomáš Kala:31.5.2018 9:22

ok, díky :D
budu pro příště vědět :D

 
Nahoru Odpovědět
31.5.2018 9:22
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 9 zpráv z 9.