Datenbankpflege duch den Eigentümer der WebSite
Autor: Klaus W.Hallo ihr da draußen,
ich möchte dem Eigentümer der WebSite die Möglichkeit geben, Datensätze in einer Datenbank zu pflegen und je Datensatz mehrere Bilder anhängen zu können.
Zur Datenpflege eignet sich ja hervorragend das Objekt 'Database Viewer'. Nun hab ich da aber (mind. 3 Probleme):
1. Wie kann ich Bilder an den Datensatz hängen
2. Welches Objekt ist in der Lage, die Daten aus der Datenbank zu lesen und anzuzeigen.
3. Welches Objekt ist in der Lage, die Bilder aus der Datenbank zu lesen und anzuzeigen.
Ich vermute mal, WSX5 stellt solche Möglichkeiten erst einmal nicht bereit ... richtig ?
Vielleicht hat aber jemand von euch schon mal soetwas über WSX5 in Verbindung mit php-Programmierung gelöst und könnte mir den Weg aufzeigen, wie er das gelöst hat.
Besten Dank, Klaus.
Hallo Klaus,
wie Du vermutest, gibt es dafür kein Objekt bei WebsiteX5. Ich habe vor längerem schon mal selbst Scripts für das Füllen und Auslesen einer einfachen Datenbank benutzt (geht aber auch mit dem Kontaktformular und über den DatabaseViewer. Allerdings nicht die Bilder. Mir haben damals folgende Infos weiter geholfen:
https://www.php-kurs.com/mysql-datenbank-verbindung-herstellen.htm
https://www.php-kurs.com/mysql-datenbank-mit-inhalt-fuellen.htm
https://www.php-kurs.com/mysql-datenbank-auslesen.htm
Für das EInbinden der Bilder in die Datenbank ist folgender Artikel interessant: http://www.php-faq.de/q-db-blob.html
Ich hoffe, Dir hilft das weiter.
Autor
Hallo F-J,
ich möchte meine Zeit nicht in einer Sackgasse verplempern. Mir hilft alles weiter, aus dem ich sinnvoll etwas lernen kann und nicht von vorne herein zum Scheitern verurteilt ist. Auch wenn das nicht zum Ziel führt, hilft es mir weiter, wenn es einen 'sinnvollen Lehrgang' darstellt.
Daher vielen Dank.
Grüße, Klaus.
Scheitern wird es wahrscheinlich schon bei den Bildern, denn Bilder kann man nicht in einer Datenbank speichern. Höchstens als LINK auf auf dem Server.
Also man kann schon Bilder in einer Datenbank speichern das ist nicht das Problem. Nur macht man es aus Perfomance und Platz Gründen kaum. Dafür gibt es bessere alternativen wie Cloude Lösungen.
Also bei phpMyAdmin muss eine Tabelle für die Bilder erzeugt werden, so z.B.
CREATE TABLE images(
id INT( 11 ) AUTO_INCREMENT ,
imgdata LONGBLOB,
imgtype VARCHAR( 20 ) ,
PRIMARY KEY ( id )
);
Nun benötigt man einen Uploader:
Müsste man evtl. mit dem Formular oder Standalone einbauen:
<?php
// img_up.php: Ein Bild hochladen
require_once 'connect.inc.php';
if (array_key_exists('img',$_FILES)) {
$tmpname = $_FILES['img']['tmp_name'];
$type = $_FILES['img']['type'];
$hndFile = fopen($tmpname, "r");
$data = addslashes(fread($hndFile, filesize($tmpname)));
$strQuery = "INSERT INTO images
(imgdata,imgtype) VALUES
('$data','$type')" ;
if (!mysql_query( $strQuery))
die(mysql_error());
}
?>
<html><body>
<h1>Bild hochladen</font></h1>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
enctype="multipart/form-data">
Bilddatei:<br />
<input type="file" name="img" size="40"><p>
<input type="submit" name="submit" value="Abschicken">
</form></body></html>
Und jetzt noch quasi ein Bildlieferant:
<?php
// img_get.php: Bild abrufen
require_once 'connect.inc.php';
$id = intval($_GET['id']);
$strQuery= "select imgdata,imgtype
from images where id=$id";
$result=mysql_query($strQuery);
$row=mysql_fetch_assoc($result);
header("Content-type: {$row['imgtype']}");
echo $row['imgdata'];
?>
Jetzt noch zum Knackpunkt dieser Geschichte!
Was ist wenn ein Datenbankfehler auftritt und der Abruf der Bilder nicht funktioniert? Das sieht dann echt blöd aus und ist ja nicht soooo selten.
Daher muss noch eine Fehlermeldung eingebaut werden.
<?php
$err=mysql_error();
$im = ImageCreate (250,50);
$color = ImageColorAllocate ($im, 0, 0, 0);
$bgcolor = ImageColorAllocate ($im, 255, 255, 255);
ImageString ($im, 2, 5, 5, $err, $color);
header("Content-type:image/png");
ImagePNG($im);
?>
Gruß
Andreas
Autor
Andreas L., echt klasse. Vielen Dank dafür. Auf deiner Basis werde ich mal weiter machen.
Der Gedanke, dass der Eigentümer der Seite seine Daten selbst pflegen möchte, ist ja nicht exotisch. Somit ist das Thema ja prinzipiell für (alle) Seitenersteller interessant.
Wäre eine große Sache, wenn Incomedia mit entsprechenden Objekten unterstützen würde.
Gerne Klaus,
ich bin auch dafür zumal es ja schon diesen DatabaseViewer gibt. Wäre eine toller Erweiterung für das X5 Konzept.