Script zum Verwalten von Bildern

Html

Erfahrenes Mitglied
Hallo, teste gerade ein Script zum Verwalten von Bildern. Das Script beinhaltet sowohl das Löschen als auch das Uploaden von Bildern.

Das Script erhält seine notwendigen Informationen von einer ersten Seite, wo in einem Formular die Kategorie und das Jahr ausgewählt wird. Dann wird in der DB nach zutreffenden Seiten gesucht. Ist dann die gewünschte Seite ausgwählt könne über Buttons Bilder gelöscht oder hinzugefügt werden.

Beides klappt auch schon, nur habe ich noch ein Darstellungsproblem nach Ablauf des Scripts.

Wenn Bilder gelöscht werden sollen werden alle Bilder ausgelesen die auf die eingegebenen Daten der ersten Seite passen und mit einer Checkbox versehen.

Wird nun ein Bild gelöscht soll die DB-Abfrage direkt erneut ablaufen sodass das gelöschte Bild verschwindet und nur noch die restlichen Bilder angezeigt werden.

Leider muss ich aber den Button Löschen zweimal drücken damit die Anzeige aktualisiert wird. Aber ich schicke das Formular an die selbe Seite und dann muss die DB Abfrage doch erneut erfolgen.


Hier mein code:


PHP:
<?php
  
$dbhost = 'localhost';
$dbname = 'einsätze'; // Hier Datenbankname rein
$dbuser = 'root'; // Hier User...
$dbpasswd = ''; // und passwort...

//Verbindungsaufbau
$connection = @mysql_connect($dbhost, $dbuser, $dbpasswd);
@mysql_select_db($dbname, $connection);


$ordner= $_POST['kategorie']."_".$_POST['jahr']; // ordner ermitteln




If (isset($_POST['Neu']) || isset($_POST['Weiter']) ){ // Button "Neue Bilder hinzufügen" wurde gewählt

echo "<form name='form1' method='post' action='upload.php' >";
echo "Anzahl: <input name='anzahlderbilder' type='text' size='4' maxlength='2' value='".$_POST['anzahlderbilder']."'></input>"; // Anzahl der Bilder festlegen
echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>";
echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='seite' value='" . $_POST['seite'] . "'>";
echo "<input type='submit' name='Weiter' value='Weiter'><br><br>";
echo "</form>";

}




If (isset($_POST['Weiter'])){ // Button "weiter" gewählt


echo "<form name='form2' method='post' action='check.php' enctype='multipart/form-data'>";
    
	
for ($i=0; $i < $_POST['anzahlderbilder']; $i++)
    {

echo "<input type='file' name='imagefile[]'><br><br>"; // benötigte input-felder erzeugen
    
	}
    
echo "<input type='hidden' name='anzahlbilder' value='" . $_POST['anzahlderbilder'] . "'>";
echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>";
echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='seite' value='" . $_POST['seite'] . "'>";
echo "<input type='submit' name='Upload' value='Bilder uploaden'>";
echo "</form>";

}







If (isset($_POST['Loeschen']) || isset($_POST['Loeschen1']) ) // Button "Bilder löschen" wurde gewählt
{




//Das wichtige SQL-Statement:
$sql_bilder="SELECT * FROM bilder WHERE ID_seite = '".$_POST['seite']."' && kategorie ='".$ordner."' "; // Bilder zu den eingegeben Formulardaten suchen
$result_bilder=mysql_query($sql_bilder) or die(mysql_error()); // Query senden und Fehler abfangen

echo mysql_num_rows($result_bilder);


If (mysql_num_rows($result_bilder)== 0){ 
	 
echo "Keine Bilder vorhanden";
	 
}
	 
else{ 



echo"<form name='form2' method='post' action='upload.php'>";

while($row_bilder=mysql_fetch_array($result_bilder))
{

echo "<img src=\"../bilder/".$ordner."/TN/".$row_bilder['bildname']."\"/> 
	  <input type='checkbox' name='bildname[]' value=".$row_bilder['bildname']."><br><br>"; // Bilder erzeugen und checkbox

		
}

echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>";
echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='seite' value='" . $_POST['seite'] . "'>";
echo "<input type='hidden' name='ordner' value='" . $ordner . "'>";
echo"<input type='submit' name='Loeschen1' value='Loeschen'>";
echo "</form>";

}






If (isset($_POST['Loeschen1']) ) // Button "Löschen" ist gewählt
{

$datei = $_POST['bildname'];
$ordner = $_POST['ordner'];

for ($i = 0; $i < count ($datei); $i++) 

{

unlink ("../bilder/".$ordner."/TN/".$datei[$i]); // Thumbnails auf Server löschen		
unlink ("../bilder/".$ordner."/GR/".$datei[$i]); // Große Bilder auf Server löschen
 

$delete = "DELETE FROM bilder WHERE bildname='".$datei[$i]."'"; // Bildnamen in DB löschen
mysql_query($delete) or die(mysql_error()); 

}
}

}

?>
 
Hallo vielleicht wurde ich nicht richtig verstanden.

Es geht mir lediglich um die Frage, warum folge Abfrage bei erneuten Aufrufen der Seite über das Formular nicht reagiert. Erst beim zweiten Absenden des Formulars an die selbe Seite reagiert die Abfrage und die Ausgabe der Bilder aktuallisiert sich.

PHP:
//Das wichtige SQL-Statement:
$sql_bilder="SELECT * FROM bilder WHERE ID_seite = '".$_POST['seite']."' && kategorie ='".$ordner."' "; // Bilder zu den eingegeben Formulardaten suchen

$result_bilder=mysql_query($sql_bilder) or die(mysql_error()); // Query senden und Fehler abfangen

Habe es auch schon mit festen Werten in der Select Abfrage getestet, ob es vielleicht ein Problem mit den übergebenen Variablen hängt aber das Ergebnis war das selbe.
 
Es ist recht Simpel....du nimmst das Löschen erst am Ende des Skriptes vor.
Die vorhandenen Bilder ermittelst du bereits vor dem Löschen...somit ist erst beim Wiederholten Aufruf das Bild verschwunden.

Lösung: Erst Löschen, dann die Bilder aus der DB holen.
 
Zurück