Probleme beim updaten von Bilderdatenbank...

emanuell

Grünschnabel
Hallo

Ich habe eine Datenbank wo ich die dateinamen von den Bildern die ich uploade einfüge.
Nun ist mein Script so aufgebaut das man 3 Bilder auf einmal Uploaden kann . Klappt ja auch alles wunderbar.

Nun ist das problem was ich habe wenn ich 1 Bild ersetzen will wird in der Datenbank das eine Bild auch upgedatet. Aber die anderen 2 Felder bleiben ja leer und die alten datenbakeinträge werden gelöscht und durch nichts ersetz.

Wie muß ich die sache angehen um dieses problem zu umgehen.

Mfg Emanuell
 
Hallo!

In dem Du der Datenbank mitteils welcher Datensatz aktuallisiert werden soll (z.B. durch die ID.

Wie genau dieses ablaufen kann wird Dir wohl niemand sagen können ohne rumzurätseln, solange man Dein Script nicht kennt.

Gruss Dr Dau
 
Okay dann werde ich das script Posten !

PHP:
<?php

$news = $_GET['newsmeldung']; 
if (!empty($news) && is_numeric($news)) {

mysql_select_db($database_kleine_wege, $kleine_wege);
$query_neu_abfrage = "SELECT * FROM news_verlag, bild_verlag WHERE news_verlag.verlag_id = bild_verlag.verlag_id && news_verlag.verlag_id = ".$news."";
$neu_abfrage = mysql_query($query_neu_abfrage, $kleine_wege) or die(mysql_error());
$row_neu_abfrage = mysql_fetch_assoc($neu_abfrage);
$totalRows_neu_abfrage = mysql_num_rows($neu_abfrage);
}


 
 $dateiname = $_FILES['dateiname']['name']; 
  $tmp_name = $_FILES['dateiname']['tmp_name']; 
                      
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form4")) 
{
  $updateSQL = ("UPDATE bild_verlag SET bild_1= '$dateiname[0]' ");

  mysql_select_db($database_kleine_wege, $kleine_wege);
  $Result1 = mysql_query($updateSQL, $kleine_wege) or die(mysql_error());
}					   
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form4")) 
{
  $updateSQL = ("UPDATE bild_verlag SET bild_2= '$dateiname[1]' ");

  mysql_select_db($database_kleine_wege, $kleine_wege);
  $Result1 = mysql_query($updateSQL, $kleine_wege) or die(mysql_error());
}					                         
  if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form4")) 
{
  $updateSQL = ("UPDATE bild_verlag SET bild_3= '$dateiname[2]' ");

  mysql_select_db($database_kleine_wege, $kleine_wege);
  $Result1 = mysql_query($updateSQL, $kleine_wege) or die(mysql_error());
}			
?>

//Auswahl der zu änderden Bilder

<form action="" method="get">
		<select name="newsmeldung" id="newsmeldung">
	<?php
do {  
?>

<option value="<?php echo $row_news_abfrage['verlag_id']; ?>"><?php echo $row_news_abfrage['verlag_name']; ?>(<?php echo $row_news_abfrage['datum']; ?>)</option>
          <?php
} while ($row_news_abfrage = mysql_fetch_assoc($news_abfrage));
  $rows = mysql_num_rows($news_abfrage);
  if($rows > 0) {
      mysql_data_seek($news_abfrage, 0);
	  $row_news_abfrage = mysql_fetch_assoc($news_abfrage);
  }
?>
</select>

<input type="submit" name="button" id="button" value="Auswählen" />
</form>

//Update der Bilder

<?php
if( !isset($_POST['abschicken']) OR empty($_POST['abschicken']) ) {

echo"  
<form action=\"$editFormAction;\" method=\"post\" id=\"form4\" enctype=\"multipart/form-data\" >
 <table>
 	<tr valign=\"baseline\">
            <td align=\"right\">Bild 1</td>
           <td><input type=\"file\" name=\"dateiname[0]\" > </td></tr>
		   <tr valign=\"baseline\">
		   <td align=\"right\">Bild 2</td> 
            <td><input type=\"file\" name=\"dateiname[1]\" > </td></tr>
			 <tr valign=\"baseline\">
		   <td align=\"right\">Bild 3</td> 
            <td><input type=\"file\" name=\"dateiname[2]\" > </td> 
            <td><input type=\"submit\"  value=\"absenden\" /></td>
             </tr>
  </table>
  	 
  		 <input type=\"hidden\" name=\"abschicken\" value=\"1\">
  		<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"90240\"> 
		<input type=\"hidden\" name=\"MM_insert\" value=\"form4\" /> 
 
         
</form>";}
else

{
for ($i = 0; $i < count($_FILES['dateiname']['tmp_name']); $i++) {
    if ($_FILES['dateiname']['tmp_name'][$i] != '') {
      $str_ziel = '../img/' . $_FILES['dateiname']['name'][$i];
      move_uploaded_file($_FILES['dateiname']['tmp_name'][$i], $str_ziel);
    }
  }
 
}
?>
 
Hi,

dann musst Du abfragen, welche Dateien denn hochgeladen wurden. Du kannst das übrigens auch in einem Query machen (ungetestet):

PHP:
  $dateiname = $_FILES['dateiname']['name']; 
  $tmp_name = $_FILES['dateiname']['tmp_name']; 
                      
if (isset($_POST["MM_insert"]) && $_POST["MM_insert"] == "form4" && ! empty($dateiname)) {
  $updateSQL = "UPDATE bild_verlag SET ";
  $i = false;
   foreach($dateiname as $key => $value) {
      if($i) {
         $updateSQL .= ",";
         $i = true;
      }
      $updateSQL .= " bild_$key = '$dateiname[$value]'";
   }

   mysql_select_db($database_kleine_wege, $kleine_wege);
   $Result1 = mysql_query($updateSQL, $kleine_wege) or die(mysql_error());
}

LG
 
Danke für die Antwort . Jetzt kommt aber eine Meldung.


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bild_1 = ''bild_2 = ''' at line 1


Wo ist den jetzt noch der fehler .
 
Hi,

war noch ein kleiner Fehler drin:

PHP:
  $dateiname = $_FILES['dateiname']['name']; 
  $tmp_name = $_FILES['dateiname']['tmp_name']; 
                      
if (isset($_POST["MM_insert"]) && $_POST["MM_insert"] == "form4" && ! empty($dateiname)) {
  $updateSQL = "UPDATE bild_verlag SET ";
  $i = false;
   foreach($dateiname as $key => $value) {
      if(!$i) {
         $updateSQL .= ",";
         $i = true;
      }
      $updateSQL .= " bild_$key = '$dateiname[$value]'";
   }

   mysql_select_db($database_kleine_wege, $kleine_wege);
   $Result1 = mysql_query($updateSQL, $kleine_wege) or die(mysql_error());
}

Vorher wurden die Kommata nicht gesetzt. Lass Dir das nächste Mal den SQL-String ausgeben, wenn die Abfrage fehlschlägt. Dann siehst Du, wo's hakt.

LG
 
Zuletzt bearbeitet:
Äh,

vergiss den 2.Code. Eigentlich müsste das richtig sein mit den Kommata. Lass Dir mal den generierten SQL-String ausgeben.

EDIT: Und ändere mal folgende Zeile:

PHP:
$updateSQL .= " bild_$key = '$dateiname[$value]'";

in

PHP:
$updateSQL .= " bild_$key = '$value'";

Vielleicht sollte ich nach 0 Uhr nicht mehr posten...

LG
 
Zuletzt bearbeitet:
Bin leider noch zu neu im PHP. Und habe mier eine schwere aufgabe gestellt. Wie lasse ich mir den SQL string ausgeben.


Und es klappt schon fast. Jetzt wird schon der dateiname erfast aber nicht übergeben.


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' bild_0 = 'Wasserlilien.jpg' bild_1 = '' bild_2 = ''' at line 1
 
Hi,

Bin leider noch zu neu im PHP. Und habe mier eine schwere aufgabe gestellt. Wie lasse ich mir den SQL string ausgeben.

Dann bist Du allerdings sehr neu. Einfach echo $updateSQL; oder halt beim mysql_query ein "or die(mysql_error() . "<br/" . $updateSQL)"

Zieh mal das $i = true; aus der if-Abfrage raus:

PHP:
if(!$i) {
   $updateSQL .= ",";
}
$i = true;

Konnte ja so nicht gehen.

LG
 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bild_1 = '' bild_2 = ''' at line 1
UPDATE bild_verlag SET bild_0 = 'Wasserlilien.jpg' bild_1 = '' bild_2 = ''


es müßte doch gemacht werden wenn mann die update so ankuckt.
 
Zurück