• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Upload einer Bilddatei - Update des Links in der Datenbank

Fankhay

Neues Mitglied
Moin moin.

Ich habe da ein kleines Problem bei dem ich etwas Hilfe brauche. Ohne Probleme habe ich es geschafft ein Bild hochzuladen und den Namen mittels INSERT in die Datenbank zu schreiben.
Jetzt möchte ich das Ganze etwas benutzerfreundlicher gestalten. Der Nutzer hat sich also vertan und ausversehen das falsche Bild hochgeladen. Im Edit-Bereich soll er also die Möglichkeit haben ein neues Bild hochzuladen und die Verlinkung in der Datenbank (Name des Bildes) zu ändern.
Das Hochladen funktioniert einwandfrei. Leider aber nicht das UPDATE in der Datenbank. Das updaten der anderen Einträge in der Datenbank funktioniert problemlos, es hapert wie gesagt "nur" am Bild.

Innerhalb der Datenbank heißt die Variable mit dem Bildernamen "bildchen".
Hier das Minimalbeispiel:

PHP:
<!-- update.php -->
<html>
<body>

<?php 

include("db.php");
if(isset($_POST['button'])) {

$bildchen = $_FILES['bild']['name'];
mysql_query("UPDATE nameDatenbank SET bildchen='$bildchen' WHERE id='$_GET[id]'");
mysql_close();
   

?>

Die Daten wurden eingetragen <br/>
<a href="uebersicht.php">zur &Uuml;bersicht</a>

<?php } else {

$query = "SELECT * FROM nameDatenbank WHERE id='$_GET[id]'";
$result = mysql_query($query);
$line = mysql_fetch_array($result);

?>

<h2>Eintrag editieren</h2><br/>

<form method="post" action="update.php?id=<?php echo $id; ?>" enctype="multipart/form-data">

<table>
<tr>
<th>Bild:
</th>
<td>
<input type="file" name="bild"></td>
</tr>
</table>
<input type="submit" name="button" value= " OK">
</form>

<?php } ?>

</body>
</html>
 
Hiermit wirst du den Fehler finden:

Richtig debuggen


  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Hallo

Zuerst einmal, dein Script ist sehr anfällig für SQL-Injection.
Ansonsten versuch doch mal das "UPDATE ..." als echo auszugeben, dann müsstest du sehen wieso "bildchen" nicht geändert wird.
 
Ich habe den Fehler schlussendlich doch gefunden, nachdem ich das ganze Skript (oben war es nur ein Minimalbeispiel) auseinander genommen und jede einzelne Zeile überprüft habe. Der Fehler lag in dieser Zeile.
PHP:
<form method="post" action="update.php?id=<?php echo $id; ?>" enctype="multipart/form-data">

Die Variable $id war nicht bekannt und muss zuvor mit einem

PHP:
$id = $line['id'];

gesetzt, bzw. die Zeile umgeschrieben werden.
 
Und das hätte dir PHP verraten, wenn du dich an "Richtig debuggen" gehalten hättest und das Error-Reporting hochgedreht hättest ;)
 
Zurück
Oben