zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Datei in Datenbank UND auf Server löschen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 26.10.2006, 15:00
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.10.2006
Beiträge: 45
TimGT befindet sich auf einem aufstrebenden Ast
Standard Datei in Datenbank UND auf Server löschen

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($dateifilesize($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>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</div>
  


</body>
</html>
<?php
mysql_free_result
($Bilder);
?>
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 26.10.2006, 16:32
Alles- & Nixkönne
XHTMLforum-Mitglied
 
Registriert seit: 05.10.2006
Ort: Hamburg
Beiträge: 156
Ernie wird schon bald berühmt werden
Standard

Hallo,
ich denke wenn Du schon soweit bist ist das doch relativ einfach:
Bevor Du den Datenbankeintrag löschst liest Du den Pfad und Dateinamen des zu löschenden Bildes aus, damit kannst Du unlink('pfad/dateiname') anwenden und schließlich den Eintrag aus der Datenbank löschen.

Viel Spass,
Ernie
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 26.10.2006, 18:02
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.10.2006
Beiträge: 45
TimGT befindet sich auf einem aufstrebenden Ast
Standard

Den Pfad kann ich ja eigentlich per Datensatzgruppe (im DW MX) abfragen, mit den beiden Variablen:

PHP-Code:
$row_Bilder['ordner']
$row_Bilder['dateiname'
Aber wie füg ich die jetzt ins Skript ein? Davon hab ich einfach zu wenig Ahnung. Habs mal so probiert, aber das geht natürlich nicht.

PHP-Code:
### BILD 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());

unlink ('$row_Bilder['ordner']/$row_Bilder['dateiname']');

  
$deleteGoTo "SYGCMSAdminPanelUpload.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?";
    
$deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$deleteGoTo));

Mit Zitat antworten
  #4 (permalink)  
Alt 27.10.2006, 11:39
Alles- & Nixkönne
XHTMLforum-Mitglied
 
Registriert seit: 05.10.2006
Ort: Hamburg
Beiträge: 156
Ernie wird schon bald berühmt werden
Standard

Das geht natürlich nicht weil Du hier nichts aus der Datenbank ausgewählt hast, was ich meinte war eher so gedacht:

PHP-Code:
## BILD LÖSCHEN ###
if ((isset($_POST['deleteBild'])) && ($_POST['deleteBild'] != "")) {
  
mysql_select_db($database_SYGCMS1$SYGCMS1);

$selectBildSQL=sprintf("SELECT * FROM picture WHERE id=%s",GetSQLValueString($_POST['deleteBild'], "int"));/*wähle zu löschendes Bild aus der Datenbank*/
$selectedBildmysql_query($selectBildSQL$SYGCMS1) or die(mysql_error());
$row_selectedBild=mysql_fetch_assoc($selectedBild);

if(
unlink ('$row_selectedBild['ordner']/$row_selectedBild['dateiname']')){/*lösche Datenabnkeintrag nur wenn die Datei wirklich gelöscht werden konnte*/
$deleteSQL sprintf("DELETE FROM picture WHERE id=%s",
                       
GetSQLValueString($_POST['deleteBild'], "int"));/*Eintrag aus Datenbank löschen*/
  
$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));

Ich denke mal so solltest Du einigermassen zurechtkommen.
Viel Spass,
Ernie
Mit Zitat antworten
  #5 (permalink)  
Alt 27.10.2006, 11:50
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.10.2006
Beiträge: 45
TimGT befindet sich auf einem aufstrebenden Ast
Standard

Mhh.. sieht eigentlich logisch aus, scheint aber auch nicht zu funktionieren:

Parse error: syntax error, unexpected T_STRING in C:\Programme\NuSphere\TechPlat\apache\htdocs\BSP\S YGCMSAdminPanelUpload.php on line 81

und zwar auf dieser Linie:

PHP-Code:
if(unlink ('$row_selectedBild['ordner']/$row_selectedBild['dateiname']')){/*lösche Datenabnkeintrag nur wenn die Datei wirklich gelöscht werden konnte*/ 
Müsste man nicht irgendwie abfragen, ob unlink überhaupt funktioniert hat? So im Stil von unlink = 1 oder irgendwie? Haha, ich hab keine Ahnung von PHP! Oder könnte man nicht einfach unlink, und dann aus Datenbank löschen, ohne if-anweisung?

??? Vielen Dank für deine Mühe!
Mit Zitat antworten
  #6 (permalink)  
Alt 27.10.2006, 12:05
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Das Bildupload-Script hast du aber nicht selbst geschrieben? Vielleicht solltest du erst mal ein wenig PHP-Lektüre durchlesen, bevor du dich an solche Projekte setzt. (ist nur ein gut gemeinter Ratschlag)

Zu der fehlerhaften Zeile:
PHP-Code:
if (unlink($row_selectedBild['ordner'].'/'.$row_selectedBild['dateiname'])) { 
Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #7 (permalink)  
Alt 27.10.2006, 12:06
Alles- & Nixkönne
XHTMLforum-Mitglied
 
Registriert seit: 05.10.2006
Ort: Hamburg
Beiträge: 156
Ernie wird schon bald berühmt werden
Standard

Hi,
also den Fehler hättest Du auch selber korigieren können, oder?
Der Code den ich hier schreibe ist ungetestet und wahrscheinlich voller Flüchtigkeitsfehler, er sollte Dir nur einen Hinweis auf die Richtung geben.
Aber gut, versuch das:
PHP-Code:
if(unlink ($row_selectedBild['ordner']."/".$row_selectedBild['dateiname'])) 
unlink gibt true oder false zurück, daher sollte das schon in Ordnung sein. Für solche Fragen gibt es das php-Manual z.B. auf PHP: Hypertext Preprocessor.

Viel Spass,
Arne
Mit Zitat antworten
  #8 (permalink)  
Alt 30.10.2006, 16:33
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.10.2006
Beiträge: 45
TimGT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von netspy Beitrag anzeigen
Das Bildupload-Script hast du aber nicht selbst geschrieben? Vielleicht solltest du erst mal ein wenig PHP-Lektüre durchlesen, bevor du dich an solche Projekte setzt. (ist nur ein gut gemeinter Ratschlag)

Zu der fehlerhaften Zeile:
PHP-Code:
if (unlink($row_selectedBild['ordner'].'/'.$row_selectedBild['dateiname'])) { 
Mario
Ja, du hast schon recht, habs nicht selber geschrieben, aber ich verstehs zumindest einigermassen. Habs einfach angepasst und schon ein paar Sachen abgeändert. Danke für die Tipps, werds dann noch ausprobieren.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Websiteninhalt aus Datei oder Datenbank laden? (Performanceempfehlung) Garlandt Serveradministration und serverseitige Scripte 9 25.03.2011 11:53
PHP-Dateiupload auf Server und Verlinkung der Datei in MySQL alex87 Serveradministration und serverseitige Scripte 4 30.09.2009 13:28
Server Externe .js Datei aufrufen. xXNemesisXx Javascript & Ajax 10 16.07.2009 17:05
Muss ich eine Datenbank jedesmal löschen, um Änderungen vorzunehmen? Rayne Serveradministration und serverseitige Scripte 9 20.03.2009 22:55


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:01 Uhr.