Hallo. Habe einen Bildupload realisiert, eine sehr einfache Version. Gleichzeitig wird ein Datenbank-Eintrag gemacht.
Auf der gleichen Seite werden dann in einer Tabelle die raufgeladenen Bilder wiederholt dargestellt, dort kann ich sie auch gleich wieder aus Datenbank löschen.
Und das ist der springende Punkt: Ich möchte, dass wenn ich dort auf Löschen klicke, dass auch gleich die Datei vom Server, und nicht nur ihr Eintrag in der DB gelöscht wird. Ich weiss, dass ich dateien mit dem Befehl unlink löschen kann, aber keine Ahnung wie ich das mit der DB verknüpfe. Kann mir jemand helfen?
PHP-Code:
<?php require_once('Connections/SYGCMS1.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
### BILD IN DATENBANK LÖSCHEN ###
if ((isset($_POST['deleteBild'])) && ($_POST['deleteBild'] != "")) {
$deleteSQL = sprintf("DELETE FROM picture WHERE id=%s",
GetSQLValueString($_POST['deleteBild'], "int"));
mysql_select_db($database_SYGCMS1, $SYGCMS1);
$Result1 = mysql_query($deleteSQL, $SYGCMS1) or die(mysql_error());
$deleteGoTo = "SYGCMSAdminPanelUpload.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
### BILDER AUD DATENBANK ANZEIGEN ###
mysql_select_db($database_SYGCMS1, $SYGCMS1);
$query_Bilder = "SELECT * FROM picture ORDER BY id DESC";
$Bilder = mysql_query($query_Bilder, $SYGCMS1) or die(mysql_error());
$row_Bilder = mysql_fetch_assoc($Bilder);
$totalRows_Bilder = mysql_num_rows($Bilder);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>DIV-Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="sygcms1.css" type="text/css">
</head>
<body>
<!-- Gesamt-DIV -->
<div class="container">
<!-- Titelansage -->
<p class="title">Willkommen auf SYGCMS1.0</p>
<p class="title">Admin Panel : Bilderupload </p>
<p>Hier können Sie die Datenbanken verwalten.</p>
<div style="margin-left:10px; ">Wählen Sie bitte aus: <a href="SYGCMSAdminPanel.php">Home</a> | <a href="SYGCMSAdminPanelClientCat.php">Kategorien/Kunden</a> | <a href="SYGCMSAdminPanelUpload.php">Bilderupload</a> | Portfolioverwaltung</div>
<!-- Portfolio-Container -->
<div class="portfolio">
<!-- Titelzeile -->
<div class="portfolioTitle">
<h5>Bilder uploaden</h5>
</div>
<!-- Beschreibung -->
<div class="portfolioDescription">
<?php
#####PICTUREUPLOAD######
## Einstellungen:
$max_size = "2000000"; //In Bytes //2 MByte
$ordner = $_POST['ordner']; // Der Ordnername wird von Textfeld 'ordner' im Formular übernommen
$save = true; //false wenn der Bildpfad nicht gespeichert werden soll
$save_typ = "datenbank"; // "datenbank" oder "text" hier eintragen
$save_name = "picture"; /*Name des Textfiles/der MySQL-Tabelle, in
dem die URL zum Bild gespeichert werden soll.
Wenn Text gewählt ist, wird die Datei angelegt, wenn sie nicht existiert*/
## Zur Datenbank connecten, wenn nötig
if($save_typ == "datenbank") {
$dbh=mysql_connect("localhost","root","")
or die ("Keine Verbindung möglich");
mysql_select_db("sygcms1",$dbh);
}
## Bild-Daten werden aus $_FILES "geholt", d.h. File wird analysiert
$bild_typ = $_FILES['bild']['type']; //'bild' ist die Variable des Textfeldes
$bild_groesse = $_FILES['bild']['size'];
$bild = $_FILES['bild']['tmp_name']; //Temporärer Filename
$bild_name = $_FILES['bild']['name'];
$upper = $_POST['upper']; // Bezeichnung des Bildes, 'upper' ist Variable des Textfeldes
#####Bild in Ordner verschieben#####
## Überprüfe, ob alle Kriterien erfüllt
## Hier kann alles Mögliche ausgetauscht werden
if(($bild_groesse <= $max_size) && ($bild_typ == "image/gif" ||
$bild_typ == "image/jpg" || $bild_typ == "image/jpeg" ||
$bild_typ == "image/png" || $bild_typ == "image/pjpeg")) {
$dest = $ordner."/".$bild_name; //Destination setzt sich zusammen aus Ordner/endgültigem Filename
if(move_uploaded_file($bild, $dest)) { //Diese Funktion prüft, ob die mit $bild bezeichnete Datei eine gültige Upload-Datei ist. Ist die Datei gültig, wird sie zum in $dest bezeichneten Dateinamen verschoben.
## Pfad soll nicht gespeichert werden // NICHT RELEVANT, da save=true
if(!$save) { //!$Save = Save ist false
echo "Das Bild wurde erfolgreich hochgeladen<br>";
echo "Ordner: ".$ordner."<br>";
echo "Name: ".$bild_name."<br>";
echo "Typ: ".$bild_typ."<br>";
}
##########DATENBANKEINTRAG###########
## Pfad wird gespeichert //RELEVANT, da save= true
else {
if($save_typ == "datenbank") { // Ja, in Datenbank speichern
mysql_query("INSERT INTO ".$save_name." SET kommentar = '".$upper."', dateiname = '".$bild_name."', ordner = '".$ordner."'");
}
else { // Sonst wird hier in Textdatei gespeichert
$sn = $save_name.".txt";
$insert = $dest."|".$upper."\n";
$datei = fopen($sn, "a+"); //zum schreiben und ans ende der Datei
$inhalt = fread($datei, filesize($sn));
$inhalt .= $insert;
fwrite($datei, $inhalt);
fclose($datei);
}
echo "Das Bild wurde erfolgreich hochgeladen<br>";
echo "Ordner: ".$ordner."<br>";
echo "Name: ".$bild_name."<br>";
echo "Typ: ".$bild_typ."<br>";
echo " <a href=\"SYGCMSAdminPanelUpload.php\">Weiteres Bild uploaden und Anzeige aktualisieren</a> ";
$upload = 'done'; //Upload ist fertig
}
}
}
##Falls Kriterien oben nicht stimmen (bild_typ, bild_groesse), Fehler ausgeben.
else {
if($bild_groesse > $max_size) {
echo "Das Bild ist zu groß";
}
else {
echo "Bitte laden Sie Ihr Bild hoch.<br>";
}
}
?>
<!-- Eingabeformular -->
<?php
if($upload == 'done') // Wenn Upload fertig, setze Formular in Kommentarzeichen
{
echo "<!--";
}
?>
<form action="SYGCMSAdminPanelUpload.php" method="post" enctype="multipart/form-data" name="Upload-Form">
<table>
<tr>
<td>Bild</td>
<td><input type="file" name="bild" size="30"></td>
</tr>
<tr>
<td height="5"></td>
</tr>
<tr>
<td>Ordner</td>
<td><input name="ordner" type="text" id="ordner" size="30"></td>
</tr>
<tr>
<td>Bezeichnung</td>
<td><input type="text" name="upper" size="30"></td>
</tr>
</table>
<input type="submit" name="submit" value="Hochladen!">
<input type="reset" name="reset" value="Zurücketzen!">
</form>
<?php
if($upload == "done") {
echo "-->";
}
?>
</div>
</div><p></p>
<div class="portfolio">
<!-- Titelzeile -->
<div class="portfolioTitle">
<h5>Bilder Verwalten </h5>
</div>
<?php do { ?>
<div class="portfolioDescription">
<form name="BildLöschen" method="post" action="">
<input type="submit" name="Submit" value="Bild löschen">
<input name="deleteBild" type="hidden" id="deleteBild" value="<?php echo $row_Bilder['id']; ?>">
</form>
<div>Kommentar: <?php echo $row_Bilder['kommentar']; ?></div>
<div>Dateiname: <?php echo $row_Bilder['ordner']; ?>/<?php echo $row_Bilder['dateiname']; ?></div>
<div><?php echo "<img src=\" " .$row_Bilder['ordner'] ." /" . $row_Bilder['dateiname'] . "\"/>" ?></div>
</div>
<?php } while ($row_Bilder = mysql_fetch_assoc($Bilder)); ?>
</div>
<p>Hier geht der normale Content weiter. </p>
<p> </p>
<p> </p>
<p> </p>
</div>
</body>
</html>
<?php
mysql_free_result($Bilder);
?>