Bild nicht löschen wenn....

  • Hallo,


    ich verstehe die Welt gerade nicht mehr. Ich habe eine Seite, die ist für das Insert und Update zuständig. Alles klappt bis auf eines und zwar wird das Bild, das schon vorhanden ist bei einem Update gelöscht, wollte es so lösen:



    Mit diesem Code sage ich doch, wenn in $_POST['l_header'] NICHTS drin ist, dann soll er in else gehen also §l_header nehmen oder?

  • Nö. Du sagst:


    PHP
    if($_POST['l_header'] == "")


    wenn ^das "" ist (ein leerer String ist)


    Umgekehrt (so wie Du es möchtest) sollte es heißen:

    PHP
    if($_POST['l_header'] != "")


    Du kannst aber auch mit empty() arbeiten:

    PHP
    if( empty( $_POST['l_header'] ) ) // wenn $_POST['l_header'] null, false, "" (leerer string), oder auch (achtung!) 0 ist
  • Vielen lieben Dank für deine Antwort. Ich bin von diesem ausgegangen


    PHP
    if($_POST['del_bild'] == 'ja') {
    		$h_bild_pfad  = 'img/header/' . $l_header;	
    		@unlink($h_bild_pfad);	
    		$l_header = $test = "";


    Und dachte ok, wenn ich das ja einfach raus nehme, dann kann ich den Rest durch meines ersetzten. Ist wohl etwas schief gegangen :)

  • ich glaube du wolltest auf $l_header prüfen, anstatt auf $_POST['l_header']
    siehe Kommentare:

  • Moment, jetzt verstehe ich nichts mehr und merke auch gerade dass es doch nicht so funktioniert wie es soll.


    Also wenn ich die Seite aufrufe und einen neuen Eintrag machen funktioniert alles. Rufe ich das Editieren auf und ändere kein Bild sondern nur einen Eintrag funktioniert es auch. Lösche ich ein Bild und will es neu hochladen geht nichts mehr.


    Zu deinen Fragen:


    // wo kommt $l_header her?
    Dieser Wert kommt aus meiner Datenbank aus dem Feld l_header


    // $l_header UND $test werden beide auf "" gesetzt
    Das möchte ich damit doch erreichen oder? Also wenn ich löschen anklicke, dann soll das Bild gelöscht werden und der Wert $test soll keinen Wert enthalten.


    // ich glaube du wolltest hier auf $l_header prüfen, anstatt auf $_POST['l_header']
    Ich habe das Gefühl hier ist der Fehler enthalten. Ich kopiere einfach mal das ganze PHP hier rein vielleicht siehst ja den Fehler, Achtung ich bin noch Anfänger wahrscheinlich schlägst du jetzt die Hände über dem Kopf zusammen


  • zwecks: // $l_header UND $test werden beide auf "" gesetzt
    war nur n Hinweis =) Hätt ja sein können ...


    Auch nur ein Hinweis: $nmb->processed; Zeile 44 führt nix aus. Ist wie eine Anweisung: $a;


    Die ganze Struktur ist nicht Augenfreundlich =)
    Das Ganze mal eingerückt:


    sehe aber immernoch nicht durch, sorry

  • Mein Problem ist einfach wenn ich einen Artikel bearbeite und das Bild weder lösche noch ändere und unten auf speichern klicke wird das Bild gelöscht obwohl ich oben im Code (meiner Meinung nach sage) bitte lass das Bild wenn nichts ausgewählt ist so stehen wie es ist. Macht der Code aber nicht.


    Edit


    Es kann nur an diesem Stück Code liegen


    PHP
    if($_POST['h_bild'] != "") {
    		$test = $h_bild;	
    	} 
    	if($_POST['h_bild'] == "") {	
    		$test = $nmb->file_dst_name;	
    		}


    Es wird überhaupt nicht drauf geachtet ob POST['h_bild'] leer oder gefüllt ist, so wie es aussieht geht er IMMER davon aus, dass es gefüllt ist und das ist schlicht weg falsch :/


    Muss doch irgendwie möglich sein einen Eintrag zu bearbeiten ohne dass Werte verschwinden :/


    Edit 2


    Er beachtet diesen Punkt überhaupt nicht


    PHP
    if($_POST['h_bild'] != "") {
    		$test = "Hallo";	
    	}


    Edit 3


    Jetzt verliere ich dann den glauben an das was ich gelernt habe. Ich habe nun $test GANZ am Anfang mit einem Wert versehen



    Lasse ich mir $test ausgeben kommt auch ein Wert raus. NACH dem abschicken ist das Feld wieder leer. Wo wird dieser scheiß Wert gelöscht? Es kann doch nicht sein dass PHP etwas macht OHNE es zu sagen? Ich verstehe es einfach nicht mehr.

  • Ich hab es zumindest hat es zweimal bis jetzt funktioniert



    Bis jetzt habe ich immer geprüft ob in

    PHP
    _POST['h_bild']

    etwas steht oder nicht. Komischerweise steht da wohl IMMER etwas, warum auch immer. Ich prüfe nun ob in

    PHP
    nmb->file_dst_name

    etwas steht, damit hat es bis jetzt geklappt.


    Was sagt ihr zu dieser Lösung? Und warum stand in POST immer etwas drin?

  • Kommt darauf an, wie das Formular aufgebaut ist.
    Wenn ein POST Feld leer abgeschickt wird, ist es trotzdem gesetzt - aber leer (leerer String).
    Ich denke Du kommst besser, wenn Du Dir die Struktur erstmal übersichtlich aufbaust.
    Dann kannst Du die "Arbeit" einsetzen.

  • Was meinst du mit Übersichtlich aufbaust?


    Mein Formular sieht derzeit so aus


    PHP
    <label for="h_bild">Bild wählen:</label>
              <input type="file" name="h_bild" id="h_bild" />
              <?php
    		  if($h_bild != "") {
    			if(isset($_GET['headerID'])) {
    		 ?>
              <div class="abstand">
                <label for="h_bild">Bild löschen: </label>
                <input name="del_bild" type="checkbox" value="ja" class="bild_form">

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!