Formulardaten abschicken ohne Klick auf Button

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

  • Formulardaten abschicken ohne Klick auf Button

    Hi,
    ich habe eine php-Seite mit einem Formular, dort wird per URL eine Variable eingegeben. Ist es möglich dann die Formulardaten ohne auf einen Klick zu warten an eine weitere Seite zu schicken?
    Ich habe es mit meta refresh probiert, allerdings nimmt er dann die Variablen aus dem Formular schinbar nicht mit, sondern lädt einfach die neue Seite.

    Nachtrag:
    Diese Seite hat noch andere Funktionen, z.B. Sicherheitsabfragen, daher möchte ich sie überhaupt laden :-)
    Also es kommt ein Wert auf diese Seite per URL, dann checke ich ihn in der Datenbank, mache ein Cookie.Abfrage und wenn alles ok ist soll der Wert weitergeleitet werden.
    Jetzt habe ich ein Formular, dort wird der Wert und ein Button "abschicken" angezeigt wenn alle Abfragen ok sind, wenn die Abfragen nicht ok sind kommt ein entsprechender Hinweis.
    Ich möchte wenn alles ok ist, das der Wert diekt weitergeschickt wird, ohne den Klickbutton. Nur wenn die Anfragen nicht ok sind, soll die Seite stehenbleiben mit einem Hinweis.

    Oje, ich hoffe das versteht jemand was ich meine

    Gruss

    [Editiert von gabriel am 07-03-2002 um 15:39]

  • #2
    Die Browser sind so programmiert, dass die ohne das man auf den Submit button drückt nichts abschicken
    Sonst könnte man z.B. beliebige datei von X beliebigen surfer auslesen und am x beliebigem Ort abspeichern. Also meiner meinung nach kann das net gehen. Ansonsten frag mal x beliebigen Hacker.

    Kommentar


    • #3
      Mit Javascript gehts!

      ABER: erstens schalten vorsichtigere Naturen das hin und wieder ab, dann geht nix mehr, und zweitens müßtest du mit setTimeout() und submit() arbeiten - und hast dann das problem, daß der user so langsam sein könnte daß das form noch nicht komplett ausgefüllt ist, bevor die seite sich selbst weiterleitet.

      könnte man wiederum umgehen, indem du die weiterleitung mit ner onchange()-abfrage aufs letzte formularfeld ansetzt - wiederum der haken: es könnte ja nen spinner geben der die felder in einer anderen reihenfolge eingibt und das letzte beispielsweise zuerst ausfüllt.

      dritte möglichkeit:
      mach aus dem formular ein dhtml-form - es erscheint beim laden der page nur das erste form-feld. sobald da daten eingegeben sind (wieder mit onchange() abfragen) erscheint erst das zweite, dann das dritte und so weiter, bis beim letzten dann der submit()-befehl auf onchange() loslegt - haken an der sache: klappt nur mit msie ab v4.0 und netzkacke/opera ab v6 und dem DOM.

      fazit: vergiß es ,-)
      CAITS MovieBase für Windows - Filme verwalten mit System!

      CAITS PowerCounter - mehr Statistik gibt es nicht!

      Kommentar


      • #4
        Hm, danke soweit.

        Ich habe eine andere php-Seite, dort wird in das Profil eines Users etwas eingetragen. Wenn das geschehen ist kommt die Meldung "war erfolgreich".
        Darunter kommt ein Button "Neuen Text ansehen". Wenn ich den klicke und die Variable $user per Form Submit übergebe an die Ausgabeseite zeigt er den neuen Text an. Wenn ich aber die Variable per seite2.php?user=XY angeben funktioniert es nicht.
        Wenn ich das hinbekommen würde könnte ich den logischen Aufbau der anderen Seiten ändern und statt der Zwischenseite gleich eine URL weiterleiten.

        In der zweiten Seite, der Ausgabeseite steht folgender Code:

        --------------------------------------
        <?php

        include ("connect.php");
        include ("_header.php");
        include ("error.php");

        $HTTP_COOKIE_VARS["user_id"];
        $HTTP_COOKIE_VARS["user_password"];

        $conn = mysql_connect($mysqlhost, $mysqluser, $mysqlpasswd);
        $select = mysql_select_db($mysqldbname, $conn);


        if ($formSubmit)
        {
        if ($user_id!="")
        {
        $resultloguser = mysql_query ("SELECT * FROM db1_user_table " . "WHERE userid = '$user_id' ");

        $loguser = mysql_result($resultloguser,0, "username");
        $login = mysql_query ("SELECT userid FROM db1_user_table " .
        "WHERE userid = '$user_id' " . "AND userpassword = '$user_password'");
        $member = mysql_query ("SELECT user FROM text1 " . "WHERE user = '$user'");
        }
        else
        {
        $md5pass = md5($logpass);
        $login =
        mysql_query ("SELECT username FROM db1_user_table " .
        "WHERE username = '$loguser' " .
        "AND userpassword = '$md5pass'");
        $member =
        mysql_query ("SELECT user FROM text1 " .
        "WHERE user = '$user'");
        }

        // Benutzer erkannt???

        if (mysql_num_rows($login)==1)
        {
        // Login OK und abspeichern der Felder GruppenID und Zusatz_Status
        echo "<h1>Text 1 Inhalt</h1>";
        $gruppenid =
        mysql_query ("SELECT gruppenid FROM db1_user_table " .
        "WHERE username = '$loguser'");
        $status =
        mysql_query ("SELECT statu************tra FROM db1_user_table " .
        "WHERE username = '$loguser'");

        if (mysql_num_rows($member)!=0)
        {
        //Member gefunden...
        echo "<h2>Member gefunden, ";

        if (($gruppenid != 6) && ($gruppenid !=9) && ($status != "NULL"))
        {
        echo "Daten werden Abgerufen...</h2>\n";
        $sql = "SELECT user,loguser,vote,text,datumzeit FROM text1 WHERE user = '$user' ORDER by datumzeit";

        $result = mysql_query($sql, $conn);
        $sql2 = "SELECT loguser FROM text1 WHERE loguser = '$user'";
        $result2 = mysql_query($sql2, $conn);
        if ($result)
        {
        $number = mysql_num_rows($result);
        echo "<h4>Hallo $loguser,<br><br>";
        echo "<strong>$user</strong> hat insgesamt <strong>$number</strong> Texte erhalten ";

        $number2 = mysql_num_rows($result2);
        echo "und <strong>$number2</strong> Texte abgegeben.</h4>";
        echo "<table class=\"abfrage_1\">\n";
        echo "<thead>\n";
        echo "<tr>\n";
        echo "<th style='width:10%;'>Mitglied</th>\n<th style='width:10%;'>Absender</th>\n<th style='width:7%;'>Voting</th>\n<th style='width:56%;'>Text</th>\n<th style='width:17%;'>Datum</th>\n";
        echo "</tr>\n</thead>\n";
        echo "<tbody>\n";
        while ($rows = mysql_fetch_array($result, MYSQL_ASSOC))
        {
        echo "<tr>\n";
        echo "<td style='width:10%;'>$rows[user]</td><td style='width:10%;'>$rows[loguser]</td><td style='width:7%;'>$rows[vote]</td><td style='width:56%;text-align:left;'>$rows[text]</td><td style='width:17%;'>$rows[datumzeit]</td>\n";
        echo "</tr>\n";
        }
        echo "<tr>
        <td colspan=\"5\" class=\"text_button\">
        <form name=\"user\" method=\"post\" action=\"textschreiben.php\">
        <input type='hidden' name='user' value='$user'>
        <input type='submit' name='abcd' value='$user text schreiben'>
        </form>
        </td>
        </tr>";
        echo "</tbody>\n</table>\n</body>\n</html>";
        }



        }
        else
        {
        // Fehlermeldung
        echo $err_1;
        }
        }
        else
        {
        // Fehlermeldung
        echo $err_2;
        }
        }
        else
        {
        // Fehlermeldung
        echo $err_3;
        }

        }

        ?>
        --------------------------------

        Wenn nun von Seite1.php folgendes kommt:

        <select name=\"user\">
        <option value=\"$username\">$username</option>;
        </select>

        <input type=\"submit\" value=\"Bewertungen anzeigen\" name=\"formSubmit\">

        dann zeigt er mir die geforderten Daten auf Seite2.php an. Aber warum klappt das nicht wenn ich in einer URL die Variable übergebe?
        Also Seite2.php?username=XY
        Mehr als diese eine Variable wird doch nicht übergeben in diesem Fall, oder?

        Dabei habe ich natürlich auf Seite2.php den Teil

        if ($formSubmit)
        {

        gelöscht, das trifft ja dann nicht zu, aber das reicht scheinbar noch nicht. Es kommt keine Fehlermeldung, sondern einfach eine leere Seite (bis auf den Header, der ist zu sehen).

        Ich weiss nicht, je länger ich gucke um so weniger kapiere ich. Ich denke es ist nur eine Kleinigkeit warum er das per URL nicht annimmt, wenn ich das hinbekommen würde dann könnte ich die erste Seite mit dem Formular zumindestens in dem Fall hier übergehen und einfach per meta refresh die url seite2.php?username=XY aufrufen. Oder??

        Vielen Dank an alle

        Gruss
        gabriel

        Bin etwas ratlos....



        Kommentar


        • #5
          hmm, auch wenn das mit ner kräftigen umstrukturierung deines codes verbunden wäre, würde ich dir als erstes empfehlen php-sessions zu verwenden (technisch gesehen sind da auch cookies mit im spiel aber du mußt sie nicht mehr extra abfragen).
          die session-id, die du dann generierst, übergibst du anstelle des usernamens im link - beim weiterleiten auf die nächste seite erkennt der server dann den user einfach anhand der session-id wieder und holt sich username/passwort entsprechend automatisch wieder zurück.

          wieso das übergeben des usernamens per GET nicht klappt bei dir, wohl aber im form mit POST, check ich grad auch nicht - hast du auf der zweiten seite vielleicht noch ne wanze in der userabfrage drin? daß außer dem header nix ankommt deutet drauf hin, daß dir bei ner mysql-abfrage auf der zweiten seite ein fehler untergekommen ist.
          CAITS MovieBase für Windows - Filme verwalten mit System!

          CAITS PowerCounter - mehr Statistik gibt es nicht!

          Kommentar


          • #6
            Hi,
            eine Session-ID gibt es schon, nur ist die Bestandteil einer bestehenden Anwendung (Board), welches wir erweitert haben um einen Teil, der anders strukturiert und aufgebaut ist.
            Wie ich in diesem neuen Teil die "alten" Session-IDs nutze habe ich noch nicht verstanden leider Der Code ist auch recht komplex...

            Bezüglich der Abfrage:
            Der grosse Teil oben ist die komplette Seite2.php, auf der Seite1.php steht eigentlich nur ein wenig html und halt die <form>-Sache. Dort wird die Variable $username per Link eingegeben. Dann klickt man auf den Button und es wird die Seite2.php aufgerufen, dann klappt es.

            (Man bekommt den Text zu einem anderen User angezeigt, nicht zu sich selbst, $username bezeichnet den User, dessen Text man sehen will)

            Warum ich das nicht gleich an Seite2.php leiten kann.... keine Ahnung

            Gruss
            gabriel

            Kommentar


            • #7
              Wenn eh schon ne Session vorhanden ist, speichere deine eigenen Variablen einfach mit darin.
              Mußt nur aufpassen, dass verschiedene Namen benutzt werden.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar

              Lädt...
              X