Formularabfrage

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

  • Formularabfrage

    Hallo Leute,

    da ich noch ein Neuling in PHP bin ist dies vielleicht eine Anfängerfrage für euch, aber ich komme gerade nicht weiter.

    Ich bin dabei ein einfaches kleines Addressbuch zu schreiben und möchte die Möglichkeit haben die entsprechenden Einträge auch zu löschen.
    Der Code der mir hierbei Probleme bereitet sieht wie folgt aus:
    PHP-Code:
    $editid=$_GET['editid'];
    ....
    $sqldel "DELETE FROM telefon WHERE (id=$editid)";
    ....
    echo 
    "</form>";
    echo 
    "<form onClick=mysql_query($sqldel) OR die(mysql_error()) method=get >";
    echo 
    "<td><input type=hidden name=editid value=".$row['id'].">
        <input type=image src=./images/b_deltbl.png alt=lösche Eintrag></td>"
    ;
    echo 
    "</form>"
    Eine Fehlermeldung bekomme ich nicht obwohl error_reporting(E_ALL); aktiviert ist.

    Wenn ich auf das Bild klicke wird der Eintrag nicht gelöscht.
    Nur im IE7 bekomme ich folgende Fehlermeldung:
    Zeile:79
    Zeichen: 1
    Fehler: ')' erwartet
    Code: 0
    URL: http://localh......
    Im Quelltext sieht das dann wie folgt aus:
    <form onClick=mysql_query(DELETE FROM telefon WHERE (id=4)) OR die
    (mysql_error()) method=get ><td><input type=hidden name=editid
    value=4><input type=image src=./images/b_deltbl.png alt=lösche
    Eintrag></td></form><tr></table>
    </html>

    Was mach ich verkehrt? Ich hoffe ich habe genügend Infos geliefert.
    Gruß
    Sven

  • #2
    Re: Formularabfrage

    Original geschrieben von shildebr

    Was mach ich verkehrt?
    Du hast die Grundlage der dynamischen Websiteprogrammierung nicht verstanden und mischst Servercode und Clientcode durcheinander; ausserdem noch mangelhafte Kenntnisse in HTML, vor allem die Verwendung von Formular. http://de.selfhtml.org/ solltest du mal besuchen und deine Grundlage verbessern, http://www.schattenbaum.net hilft dir gern am Anfang mit PHP und MySQL.

    Kommentar


    • #3
      Re: Re: Formularabfrage

      Original geschrieben von asp2php
      Du hast die Grundlage der dynamischen Websiteprogrammierung nicht verstanden und mischst Servercode und Clientcode durcheinander;....
      Dann scheint mir das entsprechende Tutorial und mein Buch ja nicht sehr viel gebracht zu haben. Danke für den Hinweis.

      Das hilft mir aber ehrlich gesagt nicht viel weiter. Dann klär mich doch bitte mit deinen Worten kurz auf was da nun so verkehrt dran ist und wie die richtige Lösung aussehen könnte.
      Schlieslich will ich ja etwas lernen und du scheinbar auch zu helfen.
      Gruß
      Sven

      Kommentar


      • #4
        Wenn wir zunächst mal dein Formular betrachten, sehen wir das du "mysql_query()" und konsorten als HTML-Quelltext mit an den Client übergibst. mysql_query() ist aber eine PHP-Funktion und kann und wird daher vom Client nicht ausgeführt, hat also im HTML-Quelltext nix zu suchen. Bei dem Kram dahinter mit OR die() ... ist das der selbe Fall.

        Dann noch eine Kleinigkeit an der dein Vorhaben je nach MySQL-Version auch scheitern könnte.

        PHP-Code:
        $sqldel "DELETE FROM telefon WHERE (id=$editid)"
        sollte

        PHP-Code:
        $sqldel "DELETE FROM telefon WHERE (id='$editid')"
        heißen, damit $editid eindeutig als Wert gemeint ist und verstanden wird.
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar


        • #5
          Original geschrieben von ArSeN

          Dann noch eine Kleinigkeit an der dein Vorhaben je nach MySQL-Version auch scheitern könnte.

          PHP-Code:
          $sqldel "DELETE FROM telefon WHERE (id=$editid)"
          sollte

          PHP-Code:
          $sqldel "DELETE FROM telefon WHERE (id='$editid')"
          heißen, damit $editid eindeutig als Wert gemeint ist und verstanden wird.
          das ist Quatsch.

          Wenn id als Zahl in der DB angelegt ist dann ist id=$editid richtig, wenn dagegen als String (varchar,text,...) dann id='$editid' korrekt. Es hat also nichts mit irgendwelcher Version zu tun, sondern rein mit der Definition der Tabelle beim Anlegen

          Kommentar


          • #6
            Re: Re: Re: Formularabfrage

            Original geschrieben von shildebr
            Dann scheint mir das entsprechende Tutorial und mein Buch ja nicht sehr viel gebracht zu haben. Danke für den Hinweis.

            Das hilft mir aber ehrlich gesagt nicht viel weiter. Dann klär mich doch bitte mit deinen Worten kurz auf was da nun so verkehrt dran ist und wie die richtige Lösung aussehen könnte.
            Schlieslich will ich ja etwas lernen und du scheinbar auch zu helfen.
            Gruß
            Sven
            also erstmal musst du dich mit dem form-Tag und seinen Attributen auseinandersetzen. Die wichstigten, meist verwendenden Attribute sind

            - action: gibt den Ziel, Empfänger des Formulars an, d.h. irgendeine Seite deiner Website und nicht ein PHP-Command
            - method: gib die Art der Übergabe an das Ziel; get: über die URL, d.h. sichtbar für den User, post dagegen nicht
            - onclick: hier kann vor dem Senden Javascript-Funtionen, -Anweisungen ausgeführt werden, und nicht PHP-Anweisungen

            Dann musst du nachholen, was das Zusammenspiel Server Client bedeutet, was wird serverseitig und was clientseitig ausgeführt. Darüber gibt es genug TUT und Literatur. Wir haben das schon mehrmals darauf hingewiesen. Benutze also bitte die Boradsuche und beschäftige dich damit. Hier erwarten wir ein Mindestmaß an Grundlagenverständnis, damit auch sinnvoll geholfen werden kann.

            Kommentar


            • #7
              Re: Re: Re: Re: Formularabfrage

              [QUOTE]Original geschrieben von asp2php
              also erstmal musst du dich mit dem form-Tag und seinen Attributen auseinandersetzen. Die wichstigten, meist verwendenden Attribute sind[QUOTE]

              So unglaublich es klingt, aber das habe ich schon verstanden. Dementsprechend sieht es zum editieren der Adressen auch wie folgt aus:
              PHP-Code:
              echo "<form action=./edit_tel.php method=get target=_blank>";
              echo 
              "<td><input type=hidden name=editid value=".$row['id'].">
              <input type=image src=./images/b_edit.png alt=editiere Eintrag></td>"
              ;
              echo 
              "</form>"
              Ich hoffe das ist nun nicht auch verkehrt.

              Mir sind auch die Unterschiede in HTML, PHP und Javascript bekannt.
              Meine Intention war mit dem oben geposteten <form... das ich bei Klick auf dem Symbol den Eintrag aus der Datenbank lösche.
              Ich hatte es letzt Nacht auch am laufen bis mein PC nicht mehr das machte was er sollte. Ich bekomme aber nun nicht mehr auf die Reihe was ich gemacht hatte.
              Was mich verständlicher weise wurmt, vor allem da ich es nun nicht mehr auf die Reihe bekomme.
              Gruß
              Sven

              Kommentar


              • #8
                Re: Re: Re: Re: Re: Formularabfrage

                Original geschrieben von shildebr
                PHP-Code:
                echo "<form action=./edit_tel.php method=get target=_blank>";
                echo 
                "<td><input type=hidden name=editid value=".$row['id'].">
                <input type=image src=./images/b_edit.png alt=editiere Eintrag></td>"
                ;
                echo 
                "</form>"
                schau dir doch nochmal an wie parameter in (x)html-tags geschrieben
                werden. Du vergisst sie in anführungszeichen zu stecken.
                Auch wenn ich mir nicht sicher bin, weil ich nicht nachgeschaut hab,
                scheint mir <input type="image" /> sehr merkwürdig. Welchen sinn
                sollte das haben? Man kann dort ein bild einfügen? Verbunden mit der
                tatsache dass ich sowas auch noch nie vorher gelesen habe, sage
                ich einfach mal dass das so falsch ist. Was du vll meintest ist
                <input type="submit" />. Du kannst den so entstehenden button
                beinahe beliebig mittels css stylen und also auch ein bild drauflegen.

                Wenn du das beachtest sollte zumindest mal der forminhalt zum server
                an dein script geposted werden. Ob das script dann auch tut
                was es tun soll, sei mal dahin gestellt.

                greets
                (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                Kommentar


                • #9
                  Re: Re: Re: Re: Re: Re: Formularabfrage

                  Original geschrieben von closure
                  schau dir doch nochmal an wie parameter in (x)html-tags geschrieben
                  werden. Du vergisst sie in anführungszeichen zu stecken.
                  Auch wenn ich mir nicht sicher bin, weil ich nicht nachgeschaut hab,
                  scheint mir <input type="image" />
                  Alles was mit echo beginnt hat am Anfang ein <?php und am Ende ein ?> stehen, da funktioniert das nicht mit " ausser imho man schreibt \", aber da bin ich mir gerade wahrlich nicht sicher.
                  Gruß
                  Sven

                  Kommentar


                  • #10
                    hi,
                    genau so funktionierts. Alternativ setzt du den string einfach
                    in einfache anführungszeichen, dann darfst du innerhalb des strings
                    auch die "gänsefüßchen" benutzen.

                    greets
                    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                    Kommentar


                    • #11
                      Re: Formularabfrage

                      Also ich mische HTML und PHP auch nur ungerne, wirkt irgendwie unübersichtlich.
                      Aber wenn es dann sein muss, oder um mal schnell was zu testen würde ich das in dem Fall jetzt so machen.


                      PHP-Code:
                      <?php
                      if ($_GET['send']="send"{
                          
                      mysql_query("DELETE FROM telefon WHERE id='".intval($_GET['editid'])."'");
                      }

                      $result=mysql_query("SELECT * FROM telefon");
                      $row=mysql_fetch_array($result);

                      ?>

                      <form action="test.php" method="get">
                      <input type="hidden" name="editid" value="$row[id]" />
                      <input type="hidden" name="send" value="send" />
                      <input type="image" src="./images/b_deltbl.png" alt="lösche Eintrag" />
                      </form>
                      Zuletzt geändert von Andy2006; 21.01.2007, 17:44.

                      Kommentar


                      • #12
                        Re: Re: Formularabfrage

                        Original geschrieben von Andy2006

                        PHP-Code:
                        <form action="test.php" method="get" >
                        <
                        input type="hidden" name="editid" value="$row[id]">
                        <
                        input type="hidden" name="send" value="send">
                        <
                        input type="image" src="./images/b_deltbl.png" alt="lösche Eintrag" />
                        </
                        form
                        Das is doch immernoch Unsinn. Wie soll denn außerhalb des <?php ?>-tags ine Variable (ein Array) namens $row existieren? Image als Typ gibt es allerdings tatsächlich. Siehe selfhtml.
                        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                        Kommentar


                        • #13
                          Re: Re: Re: Formularabfrage

                          Original geschrieben von ArSeN
                          Das is doch immernoch Unsinn. Wie soll denn außerhalb des <?php ?>-tags ine Variable (ein Array) namens $row existieren? Image als Typ gibt es allerdings tatsächlich. Siehe selfhtml.
                          Ich glaube da hast Du Rehct, dann gehts aber so.


                          PHP-Code:
                          <input type="hidden" name="editid" value="<?php echo $row['id']; ?>" />
                          Zuletzt geändert von Andy2006; 21.01.2007, 17:44.

                          Kommentar


                          • #14
                            Mahlzeit,

                            ich habe mich nun für folgenden Weg entschieden das zu lösen.
                            PHP-Code:
                            <script type="text/javascript">
                            function openDelTel() {
                            var editid=document.getElementById('editid');
                            var str_editid=editid.value;
                            wndAdd_Tel = window.open("./del_tel.php?editid="+str_editid, "del_Tel", "width=10,height=10");
                            wndAdd_Tel.focus();
                            }
                            </script>
                            ....
                            <?php
                            ....
                            echo 
                            "<form onClick=javascript:openDelTel()>";

                            echo 
                            "<td><input type=hidden name=editid value=".$row['id'].">
                            <input type=image src=./images/b_deltbl.png alt=lösche Eintrag></td>"
                            ;
                            echo 
                            "</form>";
                            ....
                            ?>
                            Das geöffnete Fenster schliesse ich dann automatisch damit:
                            PHP-Code:
                            if($editid!='') {
                            ?>
                            <script type="text/javascript">
                            opener.location.reload()
                            self.close()
                            </script>
                            <?php
                            }
                            Wenn jemand Verbesserungsvorschläge hat, dann her damit. Premisse ist aber das sich ein zusätzliches Fenster automatisch wieder schliest.
                            Gruß
                            Sven
                            Zuletzt geändert von shildebr; 22.01.2007, 09:04.

                            Kommentar


                            • #15
                              Na dann probier mal ob das so geht

                              Kommentar

                              Lädt...
                              X