Podam kod formularza
<?php include 'index.php';?>
<?php foreach ($jokes as $joke) : ?>
<blockquote>
<form action ="dodaj.php" method="post">
<label for="joketext">Wpisz tresc dowcipy:</label>
<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
<input type="submit" value="Dodaj">
<p>
<?php echo htmlspecialchars ($joke, ENT_QUOTES, 'UTF-8'); ?>
</blockquote>
<?php endforeach; ?>
Gdzie tutaj jest błąd ? Bo nadal nie moge dodac rekordu do bazy danych
Po co Ci pętla do formularza? Zrobiłeś niezłego potworka :)
Podaję poprawny kod:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Dodawanie do bazy danych z formularza [PDO]</title>
</head>
<body>
<form action="index.php" method="post">
<label for="joketext">Wpisz tresc dowcipu</label>
<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
<input type="submit" value="Dodaj" name="add">
</form>
</body>
</html>
<?php
//connect to database
try{
$db = new PDO('mysql:host=HOST;dbname=DB_NAME', 'USER', 'PASS', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}catch (PDOException $e){
print "Błąd połączenia z bazą danych!: " . $e->getMessage() . "<br/>";
die();
}
?>
<?php
if(isset($_POST['add'])){
$joketext = trim($_POST['joketext']);
if(empty($joketext)){
echo '<p style="font-weight: bold">[Błąd] - proszę, poaj treść dowcipu.</p>';
}else{
$date = date('Y-m-d H:i:s');
$sql = $pdo->prepare("INSERT INTO `komentarze`(`joketext`, `jokedate`) VALUES (:joketext, :jokedate)");
$sql->bindValue(":joketext", $_POST['joketext'], PDO::PARAM_STR);
$sql->bindValue(":jokedate", $date, PDO::PARAM_STR);
if(!$sql->execute()){
print_r($sql->errorInfo());
}
}
}
?>
Oczywiście podmień sobie dane do połączenia z bazą danych.