Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Księga gości nie działa
Forum PHP.pl > Forum > Przedszkole
smutny1221
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>
Turson
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));
smutny1221
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?
Turson
Co zrobić? Przebudować tabelę. Aktualnie masz, że nowy rekord w kolumnie `Wpis` nie może się duplikować.
smutny1221
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
pedro84
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.
Turson
Dokładniej:
PhpMyAdmin->baza danych `strona_www`->tabela `strona_www`->Struktura (poziome menu o góry)->kolumna `wpis`
pedro84
Albo prościej: baza > tabela > Indeksy.
smutny1221
Dzieki za pomoc, temat do zamkniecia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.