Ankündigung

Einklappen
Keine Ankündigung bisher.

Checken, ob Datei ausgewählt ist

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Checken, ob Datei ausgewählt ist

    Ich habe ein Formular indem man einen Artikel von einem Shop ändern kann. Das Problem, wenn kein Bild ausgewählt wird, dann so es eine Fehlermeldung ausgeben, dies tut der jetzt aber ständig, also auch wenn eins ausgewählt ist.

    Script:
    PHP-Code:
    <?php
    include 'checkuser.php';
    include 
    '../inc/mysql.php';

        if (isset(
    $_GET["do"])) 
          
    $do $_GET["do"]; 
        else 
          
    $do ""

    if (empty(
    $_POST["name"]))
        {
                
    $abfrage "SELECT * FROM shop_artikel WHERE artikel_id = '$do'";
                
    $ergebnis mysql_query($abfrage);
                while(
    $row mysql_fetch_object($ergebnis))
                {
                echo
    "
                Daten von [b]\""
    .htmlspecialchars(stripslashes($row->artikel_name), ENT_QUOTES)."\"[/b] ändern

                (HTML-Code kann verwendet werden)


                <form action='update_artikel.php?do=
    $do' method='post' enctype='multipart/form-data'>
                Name:

                <input type='text' name='name' size='30' value='"
    .htmlspecialchars(stripslashes($row->artikel_name), ENT_QUOTES)."'>

                Preis:

                <input type='text' name='preis' size='30' value='"
    .htmlspecialchars(stripslashes($row->artikel_preis), ENT_QUOTES)."'>

                

                Bild:

                [img]../
    $row->artikel_bild[/img]


                <input type='file' name='file' size='30'>


                Text:

                <textarea cols='80' rows='20' name='text'>"
    .htmlspecialchars(stripslashes($row->artikel_text), ENT_QUOTES)."</textarea>

                

                Kathegorie:
                <select size='1' name='cat'>
                    <option selected>
    $row->cat_name</option>
                "
    ;
                            
    $abfrage2 "SELECT * FROM shop_cat";
                            
    $ergebnis2 mysql_query($abfrage2);
                            while(
    $row mysql_fetch_object($ergebnis2))
                            {
                                echo
    "<option>$row->cat_name</option>";
                            }
                echo
    "
                </select>


                <input type='submit' value='Ändern'>
                </form>
                <a href='delete_artikel.php?do=
    $do'>Artikel löschen<a>
                "
    ;
                }
        }
    else
        {    
            
    $pfad "../bilder/artikel/";

            
    $tempname $_FILES['file']['tmp_name']; 
            
    $pic_name $_FILES['file']['name'];
            
    $type $_FILES['file']['type']; 
            
    $size $_FILES['file']['size'];

            
    $pfad2 "bilder/artikel/";

            if (empty(
    $file))
                {
                 die (
    "<font face='arial' size='2'>Du must eine Datei angeben.
    [url='index.php?section=update_artikel&do=
    $do']weiter[/url]");
                }


                if(empty(
    $err)) 
                { 
                
    copy("$tempname","$pfad$pic_name");
                
    $bild "$pfad2$pic_name";
                } 
                else 
                    { 
                foreach(
    $err as $error
                echo 
    "$error
    "

                    } 

            
    $name $_POST["name"];
            
    $preis $_POST["preis"];
            
    $text $_POST["text"];
            
    $cat $_POST["cat"];
            
    $eintrag "UPDATE shop_artikel SET artikel_name='".addslashes($name)."', artikel_preis='".addslashes($preis)."', artikel_text='".addslashes($text)."', artikel_bild='".addslashes($bild)."', cat_name='".addslashes($cat)."' WHERE artikel_id='$do'";
            
    mysql_query($eintrag) or die ("MySQL-Fehler: " mysql_error());
            echo 
    "Die Daten wurden erfolgreich geändert.
    [url='index.php?section=update_artikel&do=
    $do']weiter[/url]
    "
    ;
        }
    ?>

  • #2
    Welche Fehlermeldung, von PHP oder deinem Code?
    Welche Zeile?

    Über welche Bedingungen kommst du dorthin. Deise Bedingungen überprüfen (Ausgabe mit var_dump) und weitere wichtige Variablen einfach mal ausgeben lassen.

    http://de3.php.net/var_dump

    Kommentar


    • #3
      Naja so gibt er erstmal keine Fehler aus, er springt immer wieder in die IF (Zeile 57) rein. Wenn ich diese Abfrage weglasse klappt es. Das heißt, alle Bilddaten werden verarbeitet (in dem Fall wird das Bild auf den Server geladen und die URL in der Datenbank "upgedatet").

      Die Abfrage soll dazu dienen, dass er, wenn man keine Datei auswählt nich einen leeren Datensatz in die Datenbank einfügt.

      Im großen und ganzen will ich das noch so ändern, dass wenn man ein Bild auswählt, das dann hochgeladen und in die DB eingetragen wird, und wenn man keins auswählt, soll nichts getan werden. Also das alte Bild so bleiben. Abver dazu muss erstmal diese simple Abfrage funbktionieren, was sie eigentlich auch sollte.....keine Ahnung warum $file immer lehr ist.

      PS: Selbst mit "error_reporting(E_ALL);" wird kein Fehler angezeigt

      Kommentar


      • #4
        Zeile 57 ist bei mir ne Leerzeile

        PHP-Code:
        <?php
        $size 
        $_FILES['file']['size'];
        // << HIER
        $pfad2 "bilder/artikel/";
        ?>
        Wenn du in eine Bedingung reinkommst, in die du eigentlich nicht reinkommen solltest, dann musst du die Bedingung überprüfen (stimmt mein Abfrage logisch bei Werten die ich erwarte) und die Variablen, die in die Bedingung einfließen. Lass die dir doch einfach mal ausgeben. Haben sie die Werte die du erwartet hast?

        Aber wo kommt denn zB $file her, dass du in Zeile 60 auf empty() prüfst?

        Kommentar


        • #5
          Naja $file kommt doch von dem Formular im oberen Bereich der Seite. Und ist der Name von dem File-Input. Habe jetzt im Else-Zweig nochmal die $file deklariert ($file = $_POST["file"] aber es geht immernoch nicht.

          Sieht jetzt so aus:
          PHP-Code:
          <?php
          include 'checkuser.php';
          include 
          '../inc/mysql.php';

              if (isset(
          $_GET["do"])) 
                
          $do $_GET["do"]; 
              else 
                
          $do ""

          if (empty(
          $_POST["name"]))
              {
                      
          $abfrage "SELECT * FROM shop_artikel WHERE artikel_id = '$do'";
                      
          $ergebnis mysql_query($abfrage);
                      while(
          $row mysql_fetch_object($ergebnis))
                      {
                      echo
          "
                      Daten von [b]\""
          .htmlspecialchars(stripslashes($row->artikel_name), ENT_QUOTES)."\"[/b] ändern

                      (HTML-Code kann verwendet werden)


                      <form action='update_artikel.php?do=
          $do' method='post' enctype='multipart/form-data'>
                      Name:

                      <input type='text' name='name' size='30' value='"
          .htmlspecialchars(stripslashes($row->artikel_name), ENT_QUOTES)."'>

                      Preis:

                      <input type='text' name='preis' size='30' value='"
          .htmlspecialchars(stripslashes($row->artikel_preis), ENT_QUOTES)."'>

                      

                      Bild:

                      [img]../
          $row->artikel_bild[/img]


                      <input type='file' name='file' size='30'>


                      Text:

                      <textarea cols='80' rows='20' name='text'>"
          .htmlspecialchars(stripslashes($row->artikel_text), ENT_QUOTES)."</textarea>

                      

                      Kathegorie:
                      <select size='1' name='cat'>
                          <option selected>
          $row->cat_name</option>
                      "
          ;
                                  
          $abfrage2 "SELECT * FROM shop_cat";
                                  
          $ergebnis2 mysql_query($abfrage2);
                                  while(
          $row mysql_fetch_object($ergebnis2))
                                  {
                                      echo
          "<option>$row->cat_name</option>";
                                  }
                      echo
          "
                      </select>


                      <input type='submit' value='Ändern'>
                      </form>
                      <a href='delete_artikel.php?do=
          $do'>Artikel löschen<a>
                      "
          ;
                      }
              }
          else
              {    
                  
          $pfad "../bilder/artikel/";

                  
          $tempname $_FILES['file']['tmp_name']; 
                  
          $pic_name $_FILES['file']['name'];
                  
          $type $_FILES['file']['type']; 
                  
          $size $_FILES['file']['size'];

                  
          $pfad2 "bilder/artikel/";
                  
          $file $_POST["file"];

                  if (empty(
          $file))
                      {
                       die (
          "<font face='arial' size='2'>Du must eine Datei angeben.
          [url='index.php?section=update_artikel&do=
          $do']weiter[/url]
          F:"
          .$file);
                      }


                      if(empty(
          $err)) 
                      { 
                      
          copy("$tempname","$pfad$pic_name");
                      
          $bild "$pfad2$pic_name";
                      } 
                      else 
                          { 
                      foreach(
          $err as $error
                      echo 
          "$error
          "

                          } 

                  
          $name $_POST["name"];
                  
          $preis $_POST["preis"];
                  
          $text $_POST["text"];
                  
          $cat $_POST["cat"];
                  
          $eintrag "UPDATE shop_artikel SET artikel_name='".addslashes($name)."', artikel_preis='".addslashes($preis)."', artikel_text='".addslashes($text)."', artikel_bild='".addslashes($bild)."', cat_name='".addslashes($cat)."' WHERE artikel_id='$do'";
                  
          mysql_query($eintrag) or die ("MySQL-Fehler: " mysql_error());
                  echo 
          "Die Daten wurden erfolgreich geändert.
          [url='index.php?section=update_artikel&do=
          $do']weiter[/url]
          "
          ;
              }
          ?>

          Kommentar


          • #6
            *push

            kann mir keiner Helfen, ich finde das Prooblem auch nicht

            Kommentar


            • #7
              Zitat von Charly Shop Sui
              kann mir keiner Helfen, ich finde das Prooblem auch nicht
              Wie Du an das Problem herangehen kannst, hat Zergling Dir doch schon beschrieben:
              Zitat von Zergling
              Bedingungen überprüfen (Ausgabe mit var_dump) und weitere wichtige Variablen einfach mal ausgeben lassen.
              Du lässt hier nicht durchblicken, dass Du das bereits getan hast. Erhältst Du die erwarteten Daten vom Client? $_POST, $_GET, $_FILES ausgeben lassen und prüfen!

              Offensichtlich scheint dort ja nicht das Erwartete enthalten zu sein - wenn Du das nicht geändert bekommst, fängst Du am besten einmal Schritt für Schritt mit den (HTML-)Grundlagen an.

              Zum Thema Dateiupload findest Du auch eine Beschreibung im Manual:
              http://php.net/features.file-upload

              PS.: Die Geduld mehr als zwei Stunden auf eine Antwort zu warten, solltest Du doch hoffentlich aufbringen können.

              Kommentar

              Lädt...
              X