Wo steckt der Fehler

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

  • Wo steckt der Fehler

    Hallo Developer!

    Ich bin gerade dabei ein kleines Tool zu schreiben, bei dem man Telefonnummer eintragen und ändern kann. Leider übernimmt er die Daten nicht, d.h.: der $_POST Befehl funktioniert nicht. Vermutlich habe ich nur einen ganz kleinen Fehler irgendwo, kann aber auch sein, dass ich etwas Grundlegendes falsch gemacht habe!!!

    PHP-Code:
    $_SESSION['idold']=mysql_result($data,0,0);
    $_SESSION['id']=mysql_result($data,0,0);
    $_SESSION['name']=mysql_result($data,0,1);
    $_SESSION['ort']=mysql_result($data,0,2);
    $_SESSION['abteilung']=mysql_result($data,0,3);
    $_SESSION['funktion']=mysql_result($data,0,4);
    $_SESSION['unterfunktion']=mysql_result($data,0,5);
    $_SESSION['vorwahl']=mysql_result($data,0,6);
    $_SESSION['nummer']=mysql_result($data,0,7);
    $_SESSION['status']=mysql_result($data,0,8);


    ECHO 
    "<center>";
    ECHO 
    "<u><h3>Bearbeitung des Eintrages</h3></u>";
    ECHO 
    "<table border='1'>";
    ECHO 
    "<form method='post' action='$PHP_SELF'>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Kurzwahl:</td><td><input name='id' type='text' value='{$_SESSION['id']}'></td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Name:</td><td><input name='name' type='text' value='{$_SESSION['name']}'></td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Ort:</td><td><input name='ort' type='text' value='{$_SESSION['ort']}'></td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Abteilung:</td><td><input name='abteilung' type='text' value='{$_SESSION['abteilung']}'></td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Funktion:</td><td><input name='funktion' type='text' value='{$_SESSION['funktion']}'</td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Unterfunktion:</td><td><input name='unterfunktion' type='text' value='{$_SESSION['unterfunktion']}'</td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Vorwahl:</td><td><input name='vorwahl' type='text' value='{$_SESSION['vorwahl']}'</td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Rufnummer</td><td><input name='rufnummer' type='text' value='{$_SESSION['nummer']}'></td>";
    ECHO 
    "</tr>";
    ECHO 
    "<tr>";
    ECHO 
    "    <td>Status:</td><td><input name='status' type='text' value='{$_SESSION['status']}'></td>";
    ECHO 
    "</tr>";
    ECHO 
    "</form>";
    ECHO 
    "</table>";

    ECHO 
    "<form method='post'>";
    ECHO 
    "    <input type='hidden' value='4' name='sendelevel'>
            <input type='submit' value='Speichern'>"
    ;
    ECHO 
    "</form>";
    ECHO 
    "<form method='post'>";
    ECHO 
    "    <input type='hidden' value='5' name='sendelevel'>
            <input type='submit' value='Löschen'>"
    ;
    ECHO 
    "</form>";
    ECHO 
    "</center>";
    }


    ///*********ÄNDERN*********///

    IF($_POST['sendelevel']==4)
    {

    //Hier muss der Fehler stecken!!!

    $id=$_POST['id'];
    $name=$_POST['name'];
    $ort=$_POST['ort'];
    $abteilung=$_POST['abteilung'];
    $funktion=$_POST['funktion'];
    $unterfunktion=$_POST['unterfunktion'];
    $vorwahl=$_POST['vorwahl'];
    $rufnummer=$_POST['rufnummer'];
    $status=$_POST['status'];

    Echo 
    "ID: $id"//Hier kommt nichts mehr an... 
    !MÖGE DIE MACHT MIT EUCH SEIN!

  • #2
    Puuh, what a crazy script

    10x mysql_result anstatt einmal mysql_fetch*

    Die 40 echo's kann man auch übersichtlich mit einem echo hinbekommen.

    Außerdem solltest du mit isset prüfen, ob $_POST['sendelevel'] überhaupt vorhanden ist. Ein print_r($_POST) zeigt dir auch an, was in $_POST alles zu finden ist.

    Und $_POST ist kein Befehl, sondern eine Variable.

    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(E_ALL);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. 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 (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

    Gruß
    Uwe

    Kommentar


    • #3
      So, jetzt habe ich alle Änderungen durchgeführt udn deine Tipps beachtet!

      1. Das sind die kommenden Fehlermeldungen(mache ich mal als Kommentar):


      PHP-Code:
      /*
      Notice: Undefined index: id in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 199

      Notice: Undefined index: name in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 200

      Notice: Undefined index: ort in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 201

      Notice: Undefined index: abteilung in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 202

      Notice: Undefined index: funktion in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 203

      Notice: Undefined index: unterfunktion in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 204

      Notice: Undefined index: vorwahl in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 205

      Notice: Undefined index: rufnummer in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 206

      Notice: Undefined index: status in E:\wos_1.1.2\www\start\mau\Kurzwahlliste\tabelleadmin.php on line 207
      */ 

      2. Hab schon alles ausgeschlossen, was ch konnte. Hab mit anderen funktionierenden Skrips verglichen, in denen ich die $_POST Variable richtig angewandt habe.

      3. Noch mehr Tipps um unnötigen Code zu vermeiden???

      PHP-Code:
      $data mysql_fetch_assoc($data);

      ECHO 
      "
      <center>
      <u><h3>Bearbeitung des Eintrages</h3></u>
      <table border='1'>
      <form method='post' action='
      $PHP_SELF'>
      <tr>
          <td>Kurzwahl:</td><td><input name='id' type='text' value='
      $data[id]'></td>
      </tr>
      <tr>
          <td>Name:</td><td><input name='name' type='text' value='
      $data[name]'></td>
      </tr>
      <tr>
          <td>Ort:</td><td><input name='ort' type='text' value='
      $data[ort]'></td>
      </tr>
      <tr>
          <td>Abteilung:</td><td><input name='abteilung' type='text' value='
      $data[abteilung]'></td>
      </tr>
      <tr>
          <td>Funktion:</td><td><input name='funktion' type='text' value='
      $data[funktion]'</td>
      </tr>
      <tr>
          <td>Unterfunktion:</td><td><input name='unterfunktion' type='text' value='
      $data[unterfunktion]'</td>
      </tr>
      <tr>
          <td>Vorwahl:</td><td><input name='vorwahl' type='text' value='
      $data[vorwahl]'</td>
      </tr>
      <tr>
          <td>Rufnummer</td><td><input name='rufnummer' type='text' value='
      $data[telefonnummer]'></td>
      </tr>
      <tr>
          <td>Status:</td><td><input name='status' type='text' value='
      $data[status]'></td>
      </tr>
      </form>
      </table>
      "
      ;


      ECHO 
      "
      <form method='post'>
          <input type='hidden' value='4' name='sendelevel'>
          <input type='submit' value='Speichern'>
      </form>
      <form method='post'>
          <input type='hidden' value='5' name='sendelevel'>
          <input type='submit' value='Löschen'>
      </form>
      </center>
      "
      ;
      }


      ///*********ÄNDERN*********///

      IF($_POST['sendelevel']==4)
      {

      $id=$_POST['id'];
      $name=$_POST['name'];
      $ort=$_POST['ort'];
      $abteilung=$_POST['abteilung'];
      $funktion=$_POST['funktion'];
      $unterfunktion=$_POST['unterfunktion'];
      $vorwahl=$_POST['vorwahl'];
      $rufnummer=$_POST['rufnummer'];
      $status=$_POST['status'];

      Echo 
      "ID: $id"
      !MÖGE DIE MACHT MIT EUCH SEIN!

      Kommentar


      • #4
        Das sieht doch schon mal besser aus. Allerdings hast du isset noch nicht drin und genau deswegen kommen die Notice-Meldungen. Die Seite wird das erste mal aufgerufen und da gibt es $_POST['*'] noch nicht.

        Gruß
        Uwe

        Kommentar


        • #5
          Hallo!

          Wie habe ich denn ISSET genau zu benutzen??? Ich denke mal:

          PHP-Code:

          IF(ISSET['sendelevel'])
          ... 
          Aber wie mache denn dann weiter???

          MFG STAN
          !MÖGE DIE MACHT MIT EUCH SEIN!

          Kommentar


          • #6
            Och büdde, du sollst überprüfen, ob $_POST['sendelevel'] existiert!
            PHP-Code:
            if (isset($_POST['sendelevel']))
            {
               :
               :
               echo 
            $_POST['id'];

            Und wieso schreibst du alle PHP-Words groß?
            Gruß
            Uwe

            Kommentar


            • #7
              Ich streng mich ja an...

              Also nun habe ich folgendes eingebaut:

              PHP-Code:
                  if (isset($_POST['sendelevel']))
                  {
                     echo 
              $_POST['id'];
                     echo 
              $_POST['name'];
                     echo 
              $_POST['ort'];
                     echo 
              $_POST['abteilung'];
                     echo 
              $_POST['funktion'];
                     echo 
              $_POST['unterfunktion'];
                     echo 
              $_POST['vorwahl'];
                     echo 
              $_POST['rufnummer'];
                     echo 
              $_POST['status'];
                  } 
              Jetzt bekomme ich von allen Zeilen die "Undefined index:" Fehlermeldung

              Das mit der Großschreiberei ist angewohnheit!
              !MÖGE DIE MACHT MIT EUCH SEIN!

              Kommentar


              • #8
                Tja, wenn du dein hidden-Feld und den Submit-Button in ein eigenes Formular packst, kann das Script die Daten aus dem ersten Formular nicht kennen. Du hast insgesamt drei Formulare!!!

                Und ändere noch action='$PHP_SELF' in action='$_SERVER[PHP_SELF]'

                Gruß
                Uwe

                Kommentar


                • #9
                  Original geschrieben von uwe59

                  Und wieso schreibst du alle PHP-Words groß?
                  Du hast doch auch deine eigenen Vorstellungen und vorlieben. Wenn er das so besser findet?

                  Ich z.B würde auch eher

                  PHP-Code:
                  if (!empty($_POST["irgendwas"])) $irgendwas $_POST["irgendwas"]; 
                  schreiben, anstatt isset.
                  Jeder so wie er´s mag.

                  Genauso wie man anstatt
                  PHP-Code:
                  $id=$_POST['id'];
                  $name=$_POST['name'];
                  $ort=$_POST['ort'];
                  $abteilung=$_POST['abteilung'];
                  $funktion=$_POST['funktion'];
                  $unterfunktion=$_POST['unterfunktion'];
                  $vorwahl=$_POST['vorwahl'];
                  $rufnummer=$_POST['rufnummer'];
                  $status=$_POST['status']; 
                  Einfach

                  PHP-Code:
                  extract($_POST); // Fertig 
                  machen KANN aber nicht muss.
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Original geschrieben von hhcm
                    Du hast doch auch deine eigenen Vorstellungen und vorlieben. Wenn er das so besser findet?
                    Ich habe ja auch nicht gemeckert, ich selber finde das allerdings unleserlich und wollte nur wissen, warum er das macht.

                    Gruß
                    Uwe

                    Kommentar

                    Lädt...
                    X