Hi,
ich möchte in einer PHP-Seite ein Formular einrichten, mit dem man Bilder in eine MySQL-Datenbank laden kann.
Meine SQL-Tabellen:
Auf der Seite "hinzu_autor.php" ist ein Formular zur Auswahl des Autorennamens und zur Auswahl der Bilddatei:
In der PHP-Datei "neu_autor.php" sollen die Datenbankanweisungen dann ausgeführt werden:
Nach einem Testversuch mit einer jpg-Datei habe ich in der Datenbank festgestellt, dass ein Eintrag stattgefunden hat. Jedoch schmiert die Datenbank ab und der Rechner stürzt dann ab. Daher wird wohl etwas mit dem Code nicht ganz in Ordnung sein. Konnte bisher keinen Fehler finden.
Hoffe, dass jemand einen Fehler findet.
Gruss
ich möchte in einer PHP-Seite ein Formular einrichten, mit dem man Bilder in eine MySQL-Datenbank laden kann.
Meine SQL-Tabellen:
CREATE TABLE autor (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
fk_bild INTEGER REFERENCES bild(id)
);
CREATE TABLE bild(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
type VARCHAR(100) NOT NULL,
image LONGBLOB NOT NULL
);
Auf der Seite "hinzu_autor.php" ist ein Formular zur Auswahl des Autorennamens und zur Auswahl der Bilddatei:
PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<link type="text/css" rel="stylesheet" href="style.css" />
<title>Webforum</title>
</head>
<body>
<div id= "header">
<h2>WebForum</h2>
</div>
<div id="standard">
<p>Bitte tragen Sie in das Formular den neuen Autorennamen ein:</p>
</br>
<form action="neu_autor.php" method="post" enctype="multipart/form-data" name="upload">
Name:</br>
<input type="text" name="name" value="">
</br></br>
Bild:
<input type="file" size="30" name="datei" value="">
</br></br>
<input type="submit" name="submit" value="hinzu">
</form>
</div>
</body>
</html>
In der PHP-Datei "neu_autor.php" sollen die Datenbankanweisungen dann ausgeführt werden:
PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<link type="text/css" rel="stylesheet" href="style.css" />
<title>Autor eintragen</title>
</head>
<body>
<div id="standard">
<?php include 'db_anmelde.php';
$name = $_FILES['datei']['name'];
$size = $_FILES['datei']['size'];
$mime = $_FILES['datei']['type'];
$sql = "INSERT INTO bild (name, type, image ) VALUES(?,?,?);";
// Oeffnen eines Filestreams:
$file = fopen($_FILES['datei']['tmp_name'], "rb" );
$q = $dbh->prepare($sql);
if( $q ) {
$q->bindParam(1, $name);
$q->bindParam(2, $mime);
$q->bindParam(3, $file, PDO::PARAM_LOB);
$q->execute(); // Hier wird der DB-Eintrag ausgeführt
}
if ( $_POST[name] != '' ){
$sql= "INSERT INTO autor(name) VALUES ('$_POST[name]');";
$kat_neu = $dbh->exec($sql);
}
else{
echo 'Bitte keine leere Zeichenkette eingeben!';
}
if ($kat_neu){
echo "Der gewählte Autorenname wurde erfolgreich hinzugefügt";
}
else{
echo "Fehler beim Eintragen in DB";
}
?>
<br><br><br>
<a href="index.php">Startseite</a><br>
</div>
</body>
</html>
Nach einem Testversuch mit einer jpg-Datei habe ich in der Datenbank festgestellt, dass ein Eintrag stattgefunden hat. Jedoch schmiert die Datenbank ab und der Rechner stürzt dann ab. Daher wird wohl etwas mit dem Code nicht ganz in Ordnung sein. Konnte bisher keinen Fehler finden.
Hoffe, dass jemand einen Fehler findet.
Gruss