Bild wird nicht ersetzt

f4ky

Grünschnabel
Hi

Mein Problem:

Ich habe ein formular erfassen. Dort erfasse ich einen Titel, Text und Uploade ein Bild.
Der Text und der Titel sollen in eine Datenbank und das Bild in einen "pictures" Ordner gespeichert werden. Das speichern funktioniert einwandfrei.

Dann habe ich ein 2tes Formular für das bearbeiten. Dort gibt er mir in die Inhalte den Text und Titel. Jetz jedoch wenn ich ein neues Bild aussuche, ersetzt ers mir nicht durch das Alte Bild im Ordner...nur den Text und den Title veränderts sonst nichts.


Hier der Code:

case 'bearbeiten':

PHP:
$project = blog_test();
        echo bearbeiten($project);
        
        $speichern = blog_speichern();
        
        if( $speichern)
        {    
            
            
                $tempname = $_FILES['bild']['tmp_name'];
                 if( $tempname != '' )
                 { 
                    move_uploaded_file($tempname, "pictures/".$speichern.".png");     
                 }
            
            $blogs = blog_ausgeben(); 
            echo home($blogs);
        }
        else
        {
            echo'fehler beim speichern';
        }
        
        break;


Die Frage ist wo der Fehler darin liegt da es das neue Bild nicht ersetzt jedoch den Titel und den Text.
 
Was soll er machen? Deine Ausdrucksweise ist sehr unverständlich, insbesondere durch fehlende Satzzeichen und ungewöhnliche Grammatik.

Wird bei dem Bearbeiten ein neues Bild hochgeladen oder soll nur der Titel etc. geändert werden?

Lauter Fragen, daher hier einmal pauschal eine Erklärung was dein gezeigter Code-Abschnitt macht, in der Hoffnung du erkennst den Fehler selbst:
Code:
Gib bearbeiten( blog_test() ) aus;
Wenn blog_speichern() erfüllt dann:
  Verwende den Namen aus der neu hochgeladenen Datei im Formular;
  Lade die gesendete Datei hoch;
  Gib home( blog_ausgeben() ); aus
Ansonsten:
  Gib einen Fehler aus;
 
Also ich habe ein Erfassen Formular und ein Bearbeiten Formular.

Beim Erfassen formular wird alles korrekt in die Datenbank gespeichert und das Bild in den Ordner pictures.

Dann Werden bei mir auf der hauptseite alle Blog einträge angezeigt(habe dies hier nicht reingepostet). Da klicke ich auf bearbeiten und die bearbeiten seite mit dem Formular erscheint.

Der Titel und der Text sind schon in den Formularfeldern. Da klicke ich auf durchsuchen..nehme ein Bild. SO jetz sollte das Bild das ich ausgesucht habe, das alte Bild ersetzen das im Ordner pictures abgespeichert ist. Alles ist ja verknüpft mit der ID. nur das Bild kann nicht gespeichet werden ansonsten funktioniert alles. Und ich habe keinen Fehler gesehen bei dem, das du geschrieben hast.
 
Und in $speichern steht genau der Name der Datei, die überschrieben werden soll (ohne ".png")?

Setze mal um move_uploaded_file ein var_dump:
PHP:
var_dump(move_uploaded_file($tempname, "pictures/".$speichern.".png"));

Wenn nun so etwas wie "false" in deinem Quelltext (Markup) erscheint, dann konnte die Datei nicht gespeichert / überschrieben werden, evtl. da nicht genügend Rechte vorhanden sind.

In diesem Fall kann man vor dem kopieren versuchen die "alte" Datei zu löschen: [phpf]unlink[/phpf] oder mehr Rechte in dem Verzeichnis einzuräumen (Stichwort: chmod FTP).
 
also habe das mit dem var_dump ausprobiert...es erscheint keine fehlermeldung...

das ist die funktion die ich der variable $speichern übergebe:

PHP:
function blog_speichern()
{
    //Datensätze speichern
    $sql= 'UPDATE blog_eintrag' .
             ' SET title = " ' . $_POST['title'] .'"'. 
                ', text = " '. $_POST['text']. '"' .
           ' WHERE id = "' . $_POST['id']. '"'; 
           
          
    if($result = mysql_query($sql))
    {
        if($row=mysql_fetch_assoc($result))
        {
        $speichern[]=array( 'id'     => $row['id'],
                           'title'  => $row['title'],
                           'text'   => $row['text']);
        } 
        return $speichern;
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Dann schau dir mal an was du machst:

PHP:
$speichern = blog_speichern();
...
move_uploaded_file($tempname, "pictures/".$speichern.".png");
+
PHP:
function blog_speichern()
{
        $speichern[]=array( 'id'     => $row['id'],
                           'title'  => $row['title'],
                           'text'   => $row['text']);
...
        return $speichern;
}
=
PHP:
move_uploaded_file(
  $tempname,
  "pictures/".
  array(
    0 => array(
      'id'     => $row['id'],
      'title'  => $row['title'],
      'text'   => $row['text']
    )
  ) .".png"
);

Bestimmt soll PHP nicht anfangen zu raten welchen Eintrag aus dem Array es nehmen soll ;) Das kann es eh nicht.
 
Zurück