Ankündigung

Einklappen
Keine Ankündigung bisher.

Undefined Index: - Wer kann helfen

Einklappen

Neue Werbung 2019

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

  • Undefined Index: - Wer kann helfen

    Hallo zusammen,

    ich habe Probleme beim Avatar hochladen und löschen. Finde den Fehler aber nicht. Wer kann mir helfen ???

    Hier der Source-Code:

    PHP-Code:
    <?php

    session_start
    ();    
    error_reporting(E_ALL);

        include(
    "mysql.php");
        include(
    "functions.php");

        include(
    "autologout.php");

        if(!isset(
    $_SESSION['UserID'])) {
             echo 
    "Sie sind nicht eingeloggt.<br>\n".
                  
    "Bitte <a href=\"login.php\">loggen</a> Sie sich zuerst ein.\n";
        }
        else {

            
    // Avatar hochladen
            
    if(isset($_POST['submit']) AND $_POST['submit'] == "Avatar hochladen") {
                
    $errors = array();
                
    // Uploadfehler prüfen
                
    switch ($_FILES['pic']['error']){
                    case 
    1$errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
                                        break;
                    case 
    2$errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
                                        break;
                    case 
    3$errors[] = "Die Datei wurde nur teilweise hochgeladen.";
                                        break;
                    case 
    4$errors[] = "Es wurde keine Datei ausgewählt.";
                                        break;
                    default : break;
                }
                
    // Prüfen, ob eine Grafikdatei vorliegt
                
    if(!@getimagesize($_FILES['pic']['tmp_name']))
                    
    $errors[] = "Ihre Datei ist keine gültige Grafikdatei.";
                else {
                    
    // Mime-Typ prüfen
                    
    $erlaubte_typen = array('image/pjpeg',
                                            
    'image/jpeg',
                                            
    'image/gif',
                                            
    'image/png'
                                           
    );
                    if(!
    in_array($_FILES['pic']['type'], $erlaubte_typen))
                        
    $errors[] = "Der Mime-Typ der Datei ist verboten.";
                        
    // Endung prüfen
                        
    $erlaubte_endungen = array('jpeg',
                                                   
    'jpg',
                                                   
    'gif',
                                                   
    'png'
                                                  
    );
                        
    $endung strtolower(substr($_FILES['pic']['name'], strrpos($_FILES['pic']['name'], '.')+1));
                        if(!
    in_array($endung$erlaubte_endungen))
                            
    $errors[] = "Die Dateiendung muss .jpeg .jpg .gif oder .png lauten ";

                        
    // Ausmaße prüfen
                        
    $size getimagesize($_FILES['pic']['tmp_name']);
                            if (
    $size[0] > 150 OR $size[1] > 150)
                                
    $errors[] = "Die Datei darf maximal 150 Pixel breit und 150 Pixel hoch sein.";
                }
                
    // Dateigröße prüfen
                
    if($_FILES['pic']['size'] > 0.2*1024*1024)
                    
    $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";

                if(
    count($errors)){
                    echo 
    "Das Avatar konnte nicht gespeichert werden.<br>\n".
                         
    "<br>\n";
                    foreach(
    $errors as $error)
                        echo 
    $error."<br>\n";
                }
                else {
                    
    // Bild auf dem Server speichern
                    
    $uploaddir 'avatare/';
                    
    // neuen Bildname erstellen
                    
    $Name "IMG_".substr(microtime(),-8).".".$endung;
                    if (
    move_uploaded_file($_FILES['pic']['tmp_name'], $uploaddir.$Name)) {
                        
    $sql "UPDATE
                                        User
                                SET
                                        Avatar = \" " 
    mysql_real_escape_string(trim($Name)) . " \"
                                WHERE
                                        ID = \" " 
    $_SESSION['UserID'] . " \"
                               "
    ;
                        
    mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
                        echo 
    "Das Avatar wurde erfolgreich gespeichert.<br>\n";
                    }

                    else {

                        echo 
    "Es trat ein Fehler auf, bitte versuche es später erneut.<br>\n";
                    }
                }
            }
            
            
    // Avatar löschen
            
    elseif(isset($_POST['submit']) AND $_POST['submit'] == 'Avatar löschen') {
                
                
    // Bildname des Avatars aus der Datenbank holen
                
    $sql "SELECT
                                Avatar
                        FROM
                                User
                        WHERE
                                ID = ' " 
    $_SESSION['UserID'] . " '
                       "
    ;
                
                
    $result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
                
    $row mysql_fetch_assoc($result);
                
    // Datei löschen
                
    unlink('avatare/'.$row['Avatar']);
                
    // Bildname des Avatars als leeren String setzen
                
    $sql "UPDATE
                                User
                        SET
                                Avatar = ''
                        WHERE
                                ID = '"
    .$_SESSION['UserID']."'
                       "
    ;
                
    mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
                echo 
    "Der Avatar wurde erfolgreich gelöscht.<br>\n";
            }

                
    // Avatar hochladen
                
    echo "<form name='Avatar' action=\" " $_SERVER['PHP_SELF'] . " \" method='POST' enctype='multipart\form-data'>\n";

                echo 
    "<table>\n";

                echo 
    "<tr>\n";
                    echo 
    "<td colspan='2'>\n";
                    echo 
    "<h4><br>Avatar hochladen</h4></td>\n";
                echo 
    "</tr>\n";
                echo 
    "<tr>\n";
                    echo 
    "<td class='lenght1'>Avatar: &nbsp;&nbsp;</td>\n";
                    echo 
    "<td class='lenght1'>\n";

                        if(
    $row['Avatar'] == '') {

                            echo 
    "No Avatar";

                        }

                        else {

                            echo 
    "<img src='avatare/' \" " htmlentities($row['Avatar'], ENT_QUOTES) . " \">\n";
                            
                        }

                                if (
    $row['Avatar'] == '') {

                                    echo 
    "<input class='round_input' type='hidden' name='MAX_FILE_SIZE' value=\" " . (0.02*1024*1024) . " \">\n";
                                    echo 
    "<input class='round_input' name='pic' type='file'>\n";
                                    echo 
    "<input class='round_input1' type='submit' name='submit' value='Avatar hochladen'>\n";

                                }

                                else {

                                    echo 
    "<input class='round_input1' type='submit' name='submit' value='Avatar löschen'>\n";

                                }

                            echo 
    "</td>\n";

                     echo 
    "</tr>\n";

                     echo 
    "</table>\n";

                     echo 
    "</form>\n";

                        }

    ?>
    Und hier noch die Fehlermeldung:

    ( ! ) Notice: Undefined index: Avatar in C:\xampp\htdocs\Mike Schnabl\PHP_AK_Projektarbeit\login\avatar.php on line 146
    Call Stack
    # Time Memory Function Location
    1 0.0004 324448 {main}( ) ..\avatar.php:0
    No Avatar
    ( ! ) Notice: Undefined index: Avatar in C:\xampp\htdocs\Mike Schnabl\PHP_AK_Projektarbeit\login\avatar.php on line 158
    Call Stack
    # Time Memory Function Location
    1 0.0004 324448 {main}( ) ..\avatar.php:0


    Vielen Dank im voraus...

  • #2
    PHP-Code:
    if ($row['Avatar'] == ''
    zu
    PHP-Code:
    if (isset($row['Avatar']) && empty($row['Avatar'])) 
    Das hättest du eigentlich dem Fehlerbericht entnehmen können. Der sagt doch alles

    Kommentar


    • #3
      Danke erst einmal dafür... Jetzt schreibt er mir aber wieder einen anderen Fehler:

      PHP-Code:
      echo "<td class='lenght1'>\n";

                          if (isset(
      $row['Avatar']) && empty($row['Avatar'])) {

                              echo 
      "No Avatar";

                          }

                          else {

                              echo 
      "<img src='avatare/' \" " htmlentities($row['Avatar'], ENT_QUOTES) . " \">\n";
                              
                          }

                                  if (isset(
      $row['Avatar']) && empty($row['Avatar'])) {

                                      echo 
      "<input class='round_input' type='hidden' name='MAX_FILE_SIZE' value=\" " . (0.02*1024*1024) . " \">\n";
                                      echo 
      "<input class='round_input' name='pic' type='file'>\n";
                                      echo 
      "<input class='round_input1' type='submit' name='submit' value='Avatar hochladen'>\n";

                                  }

                                  else {

                                      echo 
      "<input class='round_input1' type='submit' name='submit' value='Avatar löschen'>\n";

                                  }

                              echo 
      "</td>\n"
      Und zwar bei echo "<img src........." Undefined Index Avatar...

      Konnte aus der Fehlermeldung nicht wirklich schlau werden... Liegt wahrscheinlich aber auch daran das ich noch nicht so lange mit PHP zu tun habe. Also bitte nachsehen...

      Kommentar


      • #4
        if (isset($row['Avatar']) && empty($row['Avatar']))
        ist falsch
        if (isset($row['Avatar']) && !empty($row['Avatar']))

        müsste es richtig heißen.

        Kommentar


        • #5
          Zitat von true2010 Beitrag anzeigen
          Konnte aus der Fehlermeldung nicht wirklich schlau werden... . Also bitte nachsehen...
          Bitte NACHDENKEN!


          PHP-Code:
                              if (isset($row['Avatar']) && empty($row['Avatar'])) {

                                  echo 
          "No Avatar";

                              }

                              else {

                                  echo 
          "<img src='avatare/' \" " htmlentities($row['Avatar'], ENT_QUOTES) . " \">\n";
                                  
                              } 
          Deine If-Anweisung prüft ob $row['Avatar'] existiert und leer ist, wenn ja wird "No Avatar" ausgegeben wenn nicht dann das <img>-Tag... d.h. wie soll $row['Avatar'] ausgegeben werden können wenn es ggf. nicht existiert (d.h. der isset() Teil der Bedingung schlägt fehl)?


          if (isset($row['Avatar']) && empty($row['Avatar']))
          ist falsch
          if (isset($row['Avatar']) && !empty($row['Avatar']))
          Ist der gleiche Logikfehler ^^
          "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

          Kommentar


          • #6
            PHP-Code:
            if (!empty($row['Avatar'])) 
            Empty reicht vollkommen an der Stelle, den empty überprüft auch auf isset!
            "My software never has bugs, it just develops random features."
            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

            Kommentar


            • #7
              @ Paul.Schramenko

              Danke für den Hinweis. Wieder etwas dazugelernt

              @ Topic:

              Ich würde die if-else Bedingung anders gestalten:

              PHP-Code:
              if (!empty($row['Avatar'])) {
                 
              // Zeige Avatar
              }
              else {
                 
              // Kein Avatar vorhanden


              Und was sollen eigentlich die 2 If-Else Bedingungen? Eine würde doch ausreichen.

              Kommentar


              • #8
                Ich würde die Schleife anders gestalten:
                Bitte sag jetzt nicht, dass du if-schleife.de nicht kennst.
                [URL]http://hallophp.de[/URL]

                Kommentar


                • #9
                  Oh je, was schreib ich für einen Unsinn. Natürlich gibt es keine if-Schleife. Ein paar Zeilen darunter schreib ich ja noch richtigerweise "Bedingung" ... Ich geh in die Ecke und schäme mich

                  Kommentar


                  • #10
                    Och Asipak, für solche Fälle haben wir doch extra unsere kleine Bibliothek an Zaupfahlpostings im Beitragsarchiv angepinnt: http://www.php.de/beitragsarchiv/468...-schleife.html
                    Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                    Kommentar


                    • #11
                      Ups, ich besuch' mal Trainmaster in seiner Ecke...
                      [URL]http://hallophp.de[/URL]

                      Kommentar


                      • #12
                        lol nur verrückte hier...
                        Mir ist langweilig, darf ich mit in die Ecke?
                        "My software never has bugs, it just develops random features."
                        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                        Kommentar


                        • #13
                          Ich dachte ein Forum sei dazu da, Leute zu unterstützen die noch nicht den Euren Wissensstand bezüglich PHP haben. Das fällt mir hier allerdings gar nicht auf... Warum ist das so ???

                          Wie kann ich es denn besser machen, für die Zukunft. Oder besser wie würdet Ihr dieses Problem lösen ???

                          Danke

                          Kommentar


                          • #14
                            Dazu ist dieses Forum ja auch da. Aber es gibt einen gewissen Mindeststandard an Fähigkeiten, den wie hier verlangen. Wir verlangen nicht, dass du PHP kannst. Aber was wie hier verlangen ist von allgemeiner Natur, wir verlangen die Fähigkeit, sich mit Problemen selbst auseinanderzusetzen. Das Problem „Undefined index“ hättest du z.B. auch lösen können, indem du den Begriff in die Suchmaschine deiner Wahl eingegeben hättest. Allein Google findet dazu knapp 5,5 Mio. Einträge. Es gibt nämlich einige immer wieder auftretende Probleme und wir sehen es nicht als unsere Aufgabe, die Lösung dafür jedesmal wieder herunterzubeten. Dafür gibt es eigentlich FAQ und die verlinken wir dazu auch immer wieder.
                            Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                            Kommentar


                            • #15
                              Crossposting Undefined Index: - Wer kann mir helfen - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
                              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                              [URL]http://www.lit-web.de[/URL]

                              Kommentar

                              Lädt...
                              X