Jens: Auslesen von Daten in Tetxfeld und mysql_update

Also

ich habe folgendes Problem. Ich habe eine Datenbank in der Termine gespeichert werden. Diese sollen nachträglich bearbeitet werden können. Deshalb hab ich eine Auswahlseite erstellt auf der mir angezeigt wird, dass Datum des Termins und der Betreff. Wenn ich dann auf bearbeiten klicke, soll er mir alle Daten des gewählten Termins in Textfelder ausgeben, damit diese bearbeitet werden können. Danach soll er die Daten wieder in der Datenbank speichern, aber nicht als neues Datensatz, sondern den ich gewählt hab. Das müsste ja per mysql_update gehen oder ???

Nun meine Frage. Wie mache ich es am einfachsten, das er mir die Daten ausliest und anzeigt ???

Hat jemand irgendwie eine Idee ???

MfG
Jens

  1. Halihallo Jens

    ich habe folgendes Problem. Ich habe eine Datenbank in der Termine gespeichert werden. Diese sollen nachträglich bearbeitet werden können. Deshalb hab ich eine Auswahlseite erstellt auf der mir angezeigt wird, dass Datum des Termins und der Betreff. Wenn ich dann auf bearbeiten klicke, soll er mir alle Daten des gewählten Termins in Textfelder ausgeben, damit diese bearbeitet werden können. Danach soll er die Daten wieder in der Datenbank speichern, aber nicht als neues Datensatz, sondern den ich gewählt hab. Das müsste ja per mysql_update gehen oder ???

    UPDATE macht Sinn.

    Nun meine Frage. Wie mache ich es am einfachsten, das er mir die Daten ausliest und anzeigt ???

    Am einfachsten geht es, wenn du uns folgende Fragen beantwortest:
    [x] System: mysql           ACK
    [ ] Programmiersprache:     missing
    [ ] Primary Keys gesetzt?   missing

    Hat jemand irgendwie eine Idee ???

    Nach Beantwortung der Fragen ja.

    Viele Grüsse

    Philipp

    1. Also nun die Daten kurz.

      System == mysql
      Programmiersprache == php
      id auto increment als Primary Key gesetzt

      1. Halihallo Jens

        Also nun die Daten kurz.

        THX.

        System == mysql
        Programmiersprache == php
        id auto increment als Primary Key gesetzt

        id dem Formular übergeben (mit allen anderen therminspezifischen Eigenschaften) [1],
        drückt der Besucher auf submit, wird folgender Query ausgeführt:

        UPDATE Table SET thermin_datum='.$_POST["thermin_datum"].', ... WHERE id='.$_POST["id"]

        thermin_datum ist ein Beispiel, hier müssen alle Felder rein, die du updaten willst.
        $_POST["id"] sollte IMHO die id des Thermines enthalten, welche du als Hiddenfield in
        dem HTML-Forumlar eingefügt hast.

        [1]: lässt sich einfach über SELECT * FROM Table WHERE id='.$_POST["id"] auslesen.

        Viele Grüsse

        Philipp

        1. Ok. Danke erstmal. Das hilft mir schon ein wenig weiter. Werde mal schauen ob ich es damit hinbekomme. Ansonsten melde ich mich nochmal

          MfG
          Jens

        2. komme da noch nicht ganz klar ...

          hier meine Abfrage zum Auslesen der Daten für die Auswahl:

          <?
          mysql_connect($localhost,$user,$passwort);
          mysql_select_db($datenbank);
          $result=mysql_query("select * from tabelle");
          ?>

          <body>
          <center>

          <form method="post" action="termine_bearbeiten_auslesen.php" name="abfrage_pw">

          <table border="0" cellspacing="0" cellpadding="0" width="90%">
          <?
          while($rs=mysql_fetch_object($result))
          {
          echo
          '<tr align="center">
           <td>',$rs->id,'</td>
           <td>',$rs->datum,'</td>
              <td>',$rs->eventname,'</td>
           <td><input type="submit" name="senden" value="bearbeiten"></td>
           </tr>';
          }
          ?>
          </table>

          dann geht man auf bearbeiten ... da soll er dann alle daten auslesen ...

          <?
          mysql_connect($localhost,$user,$passwort);
          mysql_select_db($datenbank);
          $result=mysql_query("SELECT * FROM tabelle WHERE id='.$_POST["id"]");
          ?>

          <body>
          <center>

          </center>
          </body>
          </html>

          weil ich hab kein Hiddenfeld definiert ... oder muss das auf der Seite eingebunden werden wo er mir alles anzeigt ???

          MfG
          Jens

          1. Halihallo Jens

            <?
            mysql_connect($localhost,$user,$passwort);
            mysql_select_db($datenbank);
            $result=mysql_query("SELECT * FROM tabelle WHERE id='.$_POST["id"]");
            ?>
            weil ich hab kein Hiddenfeld definiert ... oder muss das auf der Seite eingebunden werden wo er mir alles anzeigt ???

            Ersteres. Du gibst die ID nur textuell aus $rs->id; wenn nun der Besucher auf Bearbeiten
            klickt, werden _keine_ Daten übertragen. Das Formular enthält keine Formularfelder. Das
            Zielscript wiess also auch nicht, welchen Record es überhaupt anzeigen soll.

            termin_ansehen.php

            <form method="post" action="termine_bearbeiten_auslesen.php" name="abfrage_pw">
            <? echo '<input type="hidden" name="id" value="'.$res->id.'" />'; ?>
            <table border="0" cellspacing="0" cellpadding="0" width="90%">
            <?
               echo '<tr align="center">
                <td>',$rs->id,'</td>
                <td>',$rs->datum,'</td>
                <td>',$rs->eventname,'</td>
                <td><input type="submit" name="senden" value="bearbeiten"></td>
                </tr>';
            }
            ?>

            dann hast du ein Formularfeld (unsichtbar) mit der ID. Diese kannst du dann in
            termine_bearbeiten_auslesen.php über $_POST["id"] auslesen und den entsprechenden Record
            einlesen.

            termin_bearbeiten_auslesen.php
            <?
               mysql_connect($localhost,$user,$passwort);
               mysql_select_db($datenbank);
               $result=mysql_query("SELECT * FROM tabelle WHERE id='.$_POST["id"]");
            ?>
            ...
            <? echo '<input type="hidden" name="id" value="'.$_POST["id"].'" />' ?>
            ...
            <?
               echo '<tr align="center">
                <td>Datum: <input type="text" name="datum" value="'.$rs->datum.'" /></td>
                <td>Eventname: <input type="text" name="eventname" value="'.$rs->eventname.'" /></td>
                <td><input type="submit" name="senden" value="speichern"></td>
                </tr>';
            ?>

            damit erhälst du die Daten und kannst sie den Formularfeldern übergeben, um sie
            editierbar zu machen. Die ID musst du auch hier wieder im Hidden-Field speichern.
            Jetzt hast du <form action="termin_bearbeiten_speichern.php" ...>,
            dessen referenziertes Script wiederum die id ausliest, alle Formulardaten auch und
            dann mit dem UPDATE Query updated (und welchen Datensatz geupdated werden soll, kann
            das Script eben über die id wissen).

            Viele Grüsse

            Philipp

            1. Hallo

              hier nun mal alles was ich bis jetzt hab.

              termin_ansehen.php

              <?
              mysql_connect($localhost,$user,$passwort);
              mysql_select_db($datenbank);
              $result=mysql_query("SELECT * FROM termine_hassan WHERE id='.$_POST["id"]");
              ?>

              <body>
              <center>

              <form method="post" action="termine_bearbeiten_auslesen.php" name="abfrage_pw">
              <? echo '<input type="hidden" name="id" value="'.$res->id.'" />'; ?>
              <table border="0" cellspacing="0" cellpadding="0" width="90%">
              <?
                 echo '<tr align="center">
                  <td>',$rs->id,'</td>
                  <td>',$rs->datum,'</td>
                  <td>',$rs->eventname,'</td>
                  <td><input type="submit" name="senden" value="bearbeiten"></td>
                  </tr>';
              }
              ?>

              hier zeigt er mir nur den bearbeiten Button an. Er soll aber das Datum und den Eventnamen auch anzeigen.

              termine_bearbeiten_auslesen.php

              <?
              mysql_connect($localhost,$user,$passwort);
              mysql_select_db($datenbank);
              mysql_query("SELECT * FROM termine_hassan WHERE id='.$_POST["id"]");
              ?>

              <body>
              <center>

              <form method="post" action="termine_bearbeiten_speichern.php" name="speichern">

              <? echo '<input type="hidden" name="id" value="'.$_POST["id"].'" />' ?>

              <table border="0" cellspacing="0" cellpadding="0" width="85%">

              <?
                 echo '<tr align="center">
                  <td>Datum: <input type="text" name="datum" value="'.$rs->datum.'" /></td>
                  <td>Eventname: <input type="text" name="eventname" value="'.$rs->eventname.'" /></td>
                  <td><input type="submit" name="senden" value="speichern"></td>
                  </tr>';
              ?>

              </table>
              </form>

              und hier bringt er mir dann immer folgenden Fehler:
              Parse error: parse error, expecting T\_STRING' or T_VARIABLE' or `T_NUM_STRING' in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_bearbeiten_auslesen.php on line 19

              line19: mysql_query("SELECT * FROM termine_hassan WHERE id='.$_POST["id"]");

              MfG
              Jens

              1. Halihallo Jens

                <?
                mysql_connect($localhost,$user,$passwort);
                mysql_select_db($datenbank);
                $result=mysql_query("SELECT * FROM termine_hassan WHERE id='.$_POST["id"]");

                $result=mysql_query("SELECT * FROM termine_hassan WHERE id=".$_POST["id"]);
                                    ^                                      ^            ^^^

                echo '<tr align="center">
                    <td>',$rs->id,'</td>
                    <td>',$rs->datum,'</td>
                    <td>',$rs->eventname,'</td>
                    <td><input type="submit" name="senden" value="bearbeiten"></td>
                hier zeigt er mir nur den bearbeiten Button an. Er soll aber das Datum und den Eventnamen auch anzeigen.

                $rs wird nirgens definiert. Du möchtest dich mit den Funktionen von mysql/php
                auseinandersetzen : mysql_fetch_array z. B. um von $result einen Datensatz
                auszulesen.

                termine_bearbeiten_auslesen.php
                <?
                mysql_connect($localhost,$user,$passwort);
                mysql_select_db($datenbank);
                mysql_query("SELECT * FROM termine_hassan WHERE id='.$_POST["id"]");

                ^            ^^^ s. oben.

                ?>
                und hier bringt er mir dann immer folgenden Fehler:
                Parse error: parse error, expecting T\_STRING' or T_VARIABLE' or `T_NUM_STRING' in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_bearbeiten_auslesen.php on line 19

                line19: mysql_query("SELECT * FROM termine_hassan WHERE id='.$_POST["id"]");

                ^^^^

                s. oben. Du öffnest mit " und schliesst mit ' => Run a way line. Der Punkt ist ein
                Concat und fügt die Strings aneinander; das bedingt jedoch, dass der erste String in
                "-Zeichen geschlossen wird.

                sorry, wenn ich das so geschrieben haben sollte.

                Viele Grüsse

                Philipp

                1. Also ...

                  ich habe es jetzt mal so gemacht. Habe aber das $rs noch nicht übergeben. Deshalb zeigt er mir auch nur den bearbeiten Button an.

                  Wenn ich so schreibe:

                  <?
                  {
                  while($rs=mysql_fetch_array($result))
                     echo '<tr align="center">
                      <td>',$rs->id,'</td>
                      <td>',$rs->datum,'</td>
                      <td>',$rs->eventname,'</td>
                      <td><input type="submit" name="senden" value="bearbeiten"></td>
                      </tr>';
                  }
                  ?>

                  bringt er mir folgenden Fehler:
                  Warning: Supplied argument is not a valid MySQL result resource in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 30

                  line30: while($rs=mysql_fetch_array($result))

                  ohne dieses bringt er mir keinen Fehler. Zeigt halt die leeren Textfelder an.

                  MfG
                  Jens

                  1. Halihallo Jens

                    <?
                    {
                    while($rs=mysql_fetch_array($result))
                       echo '<tr align="center">
                        <td>',$rs->id,'</td>
                        <td>',$rs->datum,'</td>
                        <td>',$rs->eventname,'</td>
                        <td><input type="submit" name="senden" value="bearbeiten"></td>
                        </tr>';
                    }
                    ?>

                    bringt er mir folgenden Fehler:
                    Warning: Supplied argument is not a valid MySQL result resource in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 30

                    Aufgrund des von dir zuletzt geposteten Codes und dem hier, kann ich mir das nicht
                    erklären. Die Fehlermeldung bedeutet, dass $result kein MySQL-Result-Objekt ist, sondern
                    irgendein anderer Skalar. Was machst du mit der Variablen $result zwischen dem
                    mysql_query und mysql_fetch_array?
                    Zudem, ist $rs ein Array, das kann man IMHO nicht über $rs->id auslesen, sondern über
                    $rs["id"].

                    Viele Grüsse

                    Philipp

                    1. Ja sorry. Hatte das was falsches genommen:

                      termine_ansehen.php

                      <?
                      mysql_connect("rdbms.strato.de","www.jenskreutzmann.de","matzka");
                      mysql_select_db("DB47731");
                      $result=mysql_query("SELECT * FROM termine_hassan WHERE id=".$_POST["id"]);
                      ?>

                      <body>
                      <center>

                      <form method="post" action="termine_bearbeiten_auslesen.php" name="abfrage_pw">
                      <? echo '<input type="hidden" name="id" value="'.$res->id.'" />'; ?>
                      <table border="0" cellspacing="0" cellpadding="0" width="90%">
                      <?
                      {
                      while($rs=mysql_fetch_object($result))
                         echo '<tr align="center">
                          <td>',$rs->id,'</td>
                          <td>',$rs->datum,'</td>
                          <td>',$rs->eventname,'</td>
                          <td><input type="submit" name="senden" value="bearbeiten"></td>
                          </tr>';
                      }
                      ?>

                      </table>
                      </form>

                      Fehler:Warning: Supplied argument is not a valid MySQL result resource in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 30

                      line30: while($rs=mysql_fetch_object($result))

                      das soll mir eigentlich das Datum und den Eventnamen anzeigen. Damit der Benutzer weiss welche Eventdaten er ändern muss.

                      wenn ich while($rs=mysql_fetch_object($result)) weglasse, zeigt er mir den bearbeiten Button an. Und dann geht es auch. Aber bringt halt noch leere Textfelder, weil er ja nichts hat was er in den Textfeldern anzeigen kann.

                      MfG
                      Jens

                      1. Halihallo Jens

                        <?
                        mysql_connect("rdbms.strato.de","www.jenskreutzmann.de","matzka");
                        mysql_select_db("DB47731");

                        jetzt würde ich bei Gelegenheit das Passwort ändern ;-)

                        $result=mysql_query("SELECT * FROM termine_hassan WHERE id=".$_POST["id"]);

                        was gibt dir mysql_error aus?

                        if (!$result) { die mysql_error; }

                        solltest du auch immer ausgeben lassen, sonst weisst ja nicht, ob der Query funktioniert
                        hat. Der Rückgabewert von mysql_query sollte undef/false sein, wenn ein Fehler auf-
                        getreten ist; dann kann natürlich auch mysql_fetch_object nix damit anfangen.
                        Ich sehe in diesem Query keinen Fehler, ausser, dass $_POST["id"] aufgrund eines anderen
                        Fehlers nicht definiert ist (dann wäre vielleicht WHERE id='".$_POST["id"]."'
                        sinnvoller). Aber vielleicht kann er auch keine Verbindung zur DB herstellen.

                        Fehler:Warning: Supplied argument is not a valid MySQL result resource in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 30
                        line30: while($rs=mysql_fetch_object($result))

                        s. oben. mysql_error posten, kann mir das Verhalten nur so erklären.

                        das soll mir eigentlich das Datum und den Eventnamen anzeigen. Damit der Benutzer weiss welche Eventdaten er ändern muss.

                        eigentlich sollen viele Scripte anders funktionieren. Wenn sie es nicht tun, muss man
                        sie eben ändern... Du musst bis nicht in der Lage etwas vom Computer zu fordern, sondern
                        du musst es ihm beibringen; nur so hört er dir zu...

                        wenn ich while($rs=mysql_fetch_object($result)) weglasse, zeigt er mir den bearbeiten Button an. Und dann geht es auch. Aber bringt halt noch leere Textfelder, weil er ja nichts hat was er in den Textfeldern anzeigen kann.

                        Das kommt jetzt schon etwa das dritte mal. Natürlich gibt er dann nur den Button aus,
                        genauergesagt auch die <tr> und <td>'s, nur ist bei nichtexistentem $result, auch $rs
                        nichtexistens bzw. nicht definiert und somit hat der Computer auch nix auszugeben, so
                        einfach ist das...

                        Viele Grüsse und HTH

                        Philipp

                        1. ich habe die fehlerabfrage mal eingebaut ...

                          und zwar hier:<form method="post" action="termine_bearbeiten_auslesen.php" name="abfrage_pw">
                          <? echo '<input type="hidden" name="id" value="'.$rs->id.'" />'; ?>
                          <?
                          if (!$result){ mysql_error;}
                          ?>
                          <table border="0" cellspacing="0" cellpadding="0" width="90%">

                          <?

                          while($rs=mysql_fetch_object($result))
                          {
                             echo '<tr align="center">
                              <td>',$rs->datum,'</td>
                              <td>',$rs->eventname,'</td>
                              <td><input type="submit" name="senden" value="bearbeiten"></td>
                              </tr>';
                          }
                          ?>

                          </table>
                          </form>

                          gibt mir immer noch das gleiche aus ...

                          Warning: Supplied argument is not a valid MySQL result resource in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 37

                          line37: while($rs=mysql_fetch_object($result));

                          1. Halihallo Jens

                            und zwar hier:

                            mach's doch gleich nach mysql_query, wenn du das Programm ein halbes Jahr überarbeiten
                            musst, willst du doch nicht nach der Fehlerausgabe suchen, oder?

                            if (!$result){ mysql_error;}

                            ein "die" oder "echo" vor mysql_error, du möchtest die Fehlermeldung doch auch sehen,
                            oder? ;)

                            if (!$result) { echo mysql_error; }

                            gibt mir immer noch das gleiche aus ...

                            bei "die" wird das Programm mit der entsprechenden Fehlermeldung abbrechen und diese
                            wird dann auch wesentlich relevanter sein.

                            Viele Grüsse

                            Philipp

                            1. $result=mysql_query("SELECT * FROM termine_hassan WHERE id=".$_POST["id"]);
                              ?>

                              <?
                              if (!$result) { die mysql_error; }
                              ?>

                              <body>
                              <center>

                              <form method="post" action="termine_bearbeiten_auslesen.php" name="abfrage_pw">
                              <? echo '<input type="hidden" name="id" value="'.$rs->id.'" />'; ?>

                              <table border="0" cellspacing="0" cellpadding="0" width="90%">

                              <?
                                 echo '<tr align="center">
                                  <td>',$rs->datum,'</td>
                                  <td>',$rs->eventname,'</td>
                                  <td><input type="submit" name="senden" value="bearbeiten"></td>
                                  </tr>';
                              ?>

                              </table>
                              </form>

                              so ...
                              fehlermeldung:
                              Parse error: parse error in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 23

                              1. Halihallo Jens

                                so ...
                                fehlermeldung:
                                Parse error: parse error in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 23

                                Du hast ein Fehler im PHP Script auf Linie 23. Mich interessiert der MySQL-Fehler, nicht
                                der PHP-Fehler (den solltest du selber beheben können).

                                Viele Grüsse

                                Philipp

                                1. ich hoffe das ist nun das was du brauchst:

                                  mysql_error

                                  Warning: Supplied argument is not a valid MySQL result resource in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 32

                                  ab line32
                                  while($rs=mysql_fetch_object($result))
                                  {
                                     echo '<tr align="center">
                                      <td>',$rs->datum,'</td>
                                      <td>',$rs->eventname,'</td>
                                      <td><input type="submit" name="senden" value="bearbeiten"></td>
                                      </tr>';
                                  }
                                  ?>

                              2. Halihallo Jens

                                so ...
                                fehlermeldung:
                                Parse error: parse error in /mnt/ls4/04/189/00000020/htdocs/hassanmotorsport/intern/termine/termine_ansehen.php on line 23

                                sorry, war vorher etwas gereizt (nicht wegen dir).
                                Diese Parsererrors solltest du aber schon selber beheben können (die wirst du nämlich
                                noch des öfteren sehen). Die Linie wird dir jeweils angegeben. Meistens handelt es sich
                                auch um einen Fehler in dieser Zeile, kann aber sein, dass du irgendwo ein Quoting ("')
                                oder eine Klammer vergessen hast o.ä. Kann mehrere Ursachen haben, aber am Ende sind es
                                rein syntaktische Fehler (also irgendwo hälst du dich nicht an die Sprachkonventionen
                                von PHP, eben, ein Block nicht geschlossen oder ein Quoting nicht geschlossen o. ä.),
                                keine inhaltlichen (semantischen).

                                Viele Grüsse

                                Philipp

                                1. ja ... bin dir ja auch dankbar das du versuchst mir zu helfen ... weil irgendwie hab ich noch nicht so die erfahrung ...

                                  aber wird schon werden

                                2. oder kann ich dir mal die dateien schicken um die es sich dreht ???

                                  dann kannst du es dir mal anschauen wenn du zeit hast ...

                                  MfG
                                  Jens

                                  1. Halihallo Jens

                                    oder kann ich dir mal die dateien schicken um die es sich dreht ???
                                    dann kannst du es dir mal anschauen wenn du zeit hast ...

                                    Ich hab dir doch schon beim ersten Mal geschrieben, dass ich keine Fragen mehr über
                                    E-Mail beantworte. Nun gut, du hast es geschafft mir dennoch eine Antwort über E-Mail
                                    zu entlocken ;)
                                    Hier die Antwort in Kurzfassung:

                                    Die Fehlermeldungen werden nicht in allen Programmen ausgegeben. Nach jedem mysql_query
                                    muss eine Fehlerbehandlung folgen! - Ansonsten sind Fehler nur sehr schwer zu finden.
                                    $rs wird in den zwei letzten Programmen _gar nie_ gesetzt, der Computer kann dann gar
                                    nicht wissen, was er ausgeben soll.

                                    Viele Grüsse

                                    Philipp