Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][PHP]Księga gości nie działa
-smutny1221-
post 26.09.2013, 21:14:24
Post #1





Goście







Witam,
proszę o pomoc w rozwiązaniu problemu, który polega na tym, że księga gości, którą pisałem na podstawie podręcznika nie działa, a mianowicie nie wyświetla danych podanych w formularzu.

baza-danych.php

Kod
<html>
<body>
<?php
$DB = new PDO(
'mysql:host=localhost;dbname=strona_www',
'strona_www',
'szachy1221',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
?>
</body>
</html>


dodaj-wpis.php

Kod
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Dodawanie wpisu do ksiegi gosci</title>
</head>
<body>
<h1>Dodawanie wpisu do ksiegi gosci</h1>
<?php
require('baza-danych.php');
$wyswietlFormularz=true;
if(isset($_POST['dodaj'])) {
$imie = $_POST['imie'];
$email = $_POST['email'];
$wpis = $_POST['wpis'];
$znalezionoBledy = false;
if(!$znalezionoBledy)
{
$statment = $DB->prepare('INSERT INTO ksiega_gosci_wpisy (Imie, Email, Wpis, Czas_dodania) VALUES(imie, email, wpis, NOW())');
$statment->execute(array(':imie' => $imie, ':email' => $email, ':wpis' => $wpis));
echo('dziekujemy za dodanie wpisu. <a href="ksiega.php">Przejdz dalej</a>, aby zobaczyc dodany wpis.</p>');
$wyswietlFormularz = false;
}
}
if($wyswietlFormularz)
{?>
<form method="post" action="dodaj-wpis.php">
<p>Imie: <br> <input type="text" name="imie" value="" > </p>
<p> email: <br> <input type="text" name="email" value=""></p>
<p>Tresc wpisu: <br> <textarea name="wpis"></textarea></p>
<p><input type="submit" name="dodaj" value="Dodaj wpis"></p>
</form>
<?php
}
?>
</body>
</html>


ksiega.php

Kod
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ksiega gosci</title>
</head>
<body>
<h1>Ksiega gosci</h1>
<hr />
<?php
require('baza-danych.php');
foreach($DB->query('SELECT * FROM ksiega_gosci_wpisy') as $row)
{
echo('<b>Imie: </b> '.htmlspecialchars($row['Imie']).'<br>');
echo('<b>E-mail: </b> '.htmlspecialchars($row['Email']).'<br>');
echo('<p>'.nl2br(htmlspecialchars($row['Wpis'])).'</p>');
echo('<b>Cas dodania: </b> '.$row['Czas_dodania'].'<br>');
echo('<hr>');}
?>
<p><a href="dodaj-wpis.php">Dodaj nowy wpis</a></p>
</body>
</html>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Turson
post 26.09.2013, 21:19:53
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


A jesteś pewny, że dodaje bo bazy prawidłowo?
  1. $statment = $DB->prepare('INSERT INTO ksiega_gosci_wpisy (Imie, Email, Wpis, Czas_dodania) VALUES(imie, email, wpis, NOW())');
  2. $statment->execute(array(':imie' => $imie, ':email' => $email, ':wpis' => $wpis));

Jeśli dodajesz imie to czemu zamieniasz :imie?

Prawidłowo jest tak
  1. $statment = $DB->prepare('INSERT INTO ksiega_gosci_wpisy (Imie, Email, Wpis, Czas_dodania) VALUES(:imie, :email, :wpis, NOW())');
  2. $statment->execute(array(':imie' => $imie, ':email' => $email, ':wpis' => $wpis));


Ten post edytował Turson 26.09.2013, 21:20:53
Go to the top of the page
+Quote Post
-smutny1221-
post 26.09.2013, 21:28:57
Post #3





Goście







Dzięki, teraz działa, tylko że kiedy próbuję dodać nowy wpis i podaję ten sam nick co wcześniej, wyświetla się komunikat:

Kod
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'asd' for key 'Wpis'' in C:\xampp-portable\htdocs\dodaj-wpis.php:19 Stack trace: #0 C:\xampp-portable\htdocs\dodaj-wpis.php(19): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp-portable\htdocs\dodaj-wpis.php on line 19


Co można poprawić, aby tak się nie działo?
Go to the top of the page
+Quote Post
Turson
post 26.09.2013, 23:23:22
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Co zrobić? Przebudować tabelę. Aktualnie masz, że nowy rekord w kolumnie `Wpis` nie może się duplikować.
Go to the top of the page
+Quote Post
-smutny1221-
post 27.09.2013, 18:06:29
Post #5





Goście







To wiem, tylko nie wiem jak to zrobić i nie bardzo mam się skąd dowiedzieć, poza tym forum, więc pomóżcie, proszęsmile.gif
Go to the top of the page
+Quote Post
pedro84
post 27.09.2013, 18:14:27
Post #6





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

Ostrzeżenie: (0%)
-----


Cytat(smutny1221 @ 27.09.2013, 19:06:29 ) *
To wiem, tylko nie wiem jak to zrobić i nie bardzo mam się skąd dowiedzieć, poza tym forum, więc pomóżcie, proszęsmile.gif

Usuń unikalny indeks dla tego pola z tabeli.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
Turson
post 27.09.2013, 18:59:19
Post #7





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Dokładniej:
PhpMyAdmin->baza danych `strona_www`->tabela `strona_www`->Struktura (poziome menu o góry)->kolumna `wpis`
Go to the top of the page
+Quote Post
pedro84
post 27.09.2013, 19:02:40
Post #8





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

Ostrzeżenie: (0%)
-----


Albo prościej: baza > tabela > Indeksy.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
-smutny1221-
post 29.09.2013, 12:07:58
Post #9





Goście







Dzieki za pomoc, temat do zamkniecia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2025 - 14:37