Form & JavaScript - Problem

  • Ich will eigentlich nicht viel:

    Von einer <form> Daten lesen, check Operationen, string-Operationen durchführen und dann diese Daten in meine Datenbank aufnehmen.

    Code
    <form action="read_entry.php" method="post" name="entryform">
       (...)


    read_entry.php fügt die Daten in die Datenbank. Da ist kein Problem.

    Die letzten Zeilen meiner <form> sind:

    Code
    (...)
       <input type="submit" name="submit" value="submit" onClick="return checkForm();">
        </form>


    checkForm() ist eine js-Funktion. Sie soll u.a. eine Meldung ausgeben, wenn z.B. ein Feld in der Form nicht eingegeben wurde, das aber obligatorisch war.

    Das Problem: checkForm() arbeitet nicht richtig. Sobald ich in dieser Funktion ein document.write("bla"); hinzufüge, wird diese Zeile schön ausgefüht (auch der Rest der Fukntion wird ausgeführt) und die Seite wird anscheinen nie fertig geladen (so wie eine Endlosschleife). Der php-Script wird nach dem Beenden der checkForm() nicht aufgerufen.
    Wenn ich aber in checkForm() einfach kein document.write("bla"); verwende, dann wird der php-Script nach dem Beenden der checkForm() doch aufgerufen.

    Ich versteh nicht warum das so ist? Habt ihr eine Ahnung, woran das liegen könnte?

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • ich komm bei deiner erklärung nicht ganz mit würde dir aber vorschlagen, nachdem sich php und jscript besonders lieb haben *g* das ganze nur mit php zu lösen...

    einfach if($_POST['fieldname']=="") { $formerror=true; $field=$_POST['fieldname]; } oder so.... und wenn $formerror true is spuckt er am ende alle required fields aus, markiert den text rot oder was weiss ich.... das kannst ja so weiter spielen wie du magst... vielleicht is die variante besser, bei mir haben diese onClick sachen bei forms immer probs gemacht deswegen lös ich sowas nur mehr mit php....

    lg, Phil.

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • Ich hab tatsächlich auf js verzichtet, das nervt echt nur...

    Mit php geht's tatsächlich ganz leicht, danke für den Tipp!

    Jetzt will ich noch folgendes: (ich will alles :verycool: )

    Die Aufgabe, die checkForm() erfüllen sollte erledige ich jetzt einfach in meiner read_entry.php. Falls was nicht passt => Meldung und exit();

    Ich will aber, dass z.B. folgendes passiert. Das sieht man ja so oft auf Webseiten:

    Obligatorische Felder werden nicht eingegeben. Dann steht:

    Following fields are missing:
    <die Namen dieser Felder gelistet...>

    und dann soll die Formseite wieder erscheinen. Also diese Fehlermeldung wird einfach zu ursprünglichen php-Datei (wo die Form war) angefügt. Wie mach ich das aus meiner read_entry.php?

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • ach so einer bist du... du willst alles hm? *ggg* und das sofort auch noch.... jaja. *ggg*


    lösung: indem du die read_entry.php includest und include() und dann die form auf $_SERVER['PHP_SELF']; zeigen lässt. dann machst du im selben file die abfrage

    if($_POST['submit']) {
    inlucde("read_entry.php");

    dein abfrage code von read_entry.php den du noch brauchst....

    }

    wenn dus ganz geil machen willst kannst du dann noch in jedem field ein if definieren dass beim fehlen des feldes den text neben den field mit css rot einfärbt....

    sprich du vergisst z.b. "name" auszufüllen und klickst auf submit -> "name" ist rot eingefärbt, zusätzlich zu deiner zeile: following fields are missing.....

    -> das kann man ewig weiter spinnen..... du könntest dann natürlich anfangen das ganze in eine function zu schreiben die die felder nicht mit den feldnamen anspricht sondern alle name value pairs von der form in ein array übernimmt und abarbeitet.... somit is wurscht wie lang deine form wird... du kannst über eine 2te function dann noch definieren ob das feld ein required field is oder nicht und das während der formverarbeitungsschleife gleich abfragen und missing values in ein weiteres array speichern das nur ausgegeben wird wenns größer als 0 ist... isses kleiner als null wird dein mail verschickt....

    jetz hast sogar mehr bekommen als du wolltest. :)

    viel spass beim coden... is eh net schwierig

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • Oh yeah! Das geht ja so fein...
    Oh mein Gott, das wird langsam zu viel! :tongue1:

    Ich kenn mich eigentlich noch wenig aus in diesen Sachen...

    Hey, aber zu dieser geilen Sache mit css & rot-Färben und so:
    Ich kann glaub ich im <td>-tag wo "name:" drinnen steht keine php-Befehle einbauen oder? Folgendes funktioniert z.B. nicht:

    PHP
    <?php ?><td width="10%" <?php if (empty($_POST['name'])) { ?> class="alert" <?php } ?> >name: </td>



    Obwohl syntaktisch alles passen müsste. Und <font> sollte man ja vermeiden und zwar besonders dann wenn's um ein color-Attribut geht, oder?

    Kannst du noch sagen, wie das mach?

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • Zitat von Flowyes

    [schnipp]
    Folgendes funktioniert z.B. nicht:

    PHP
    <?php ?><td width="10%" <?php if (empty($_POST['name'])) { ?> class="alert" <?php } ?>name: </td>


    [schnapp]


    so sollte es gehn:

    PHP
    <?php ?><td width="10%" <?php if (empty($_POST['name'])) 
    echo "class=\"alert\"";
    ?>name: </td>
  • Ja! danke, übrigens bin ich grad draufgekommen, dass es auch so geht, wie ich es hatte, ich hab nur ein ">" vergessen...

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • gell, php is schon lustig.... eigentlich schreib ich immer meinen html code zuerst und bastel dann das php mit <??> rein.... funktioniert super. übrigens das mit empty is sehr hübsch.... *g* solltest nur bei checkboxes aufpassen dort heissts isset().

    lg, Phil.

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • Das macht echt Spaß, ich hab heute wirklich den ganzen Tag mit diesen Sachen herumgespielt... Ein sehr simples aber (meiner bescheidenen Meinung nach :coolsmile ) wirklich visuell schmackhaftes Guestbook hab ich erstellt. Wenn ich's ganz fertig hab stell ich's zum downloaden bereit. Vielleicht interessiert jemanden doch etwas, von dem es eigentlich schon Millionen von verscheidenen Arten gibt.

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • Ich bin auch dafür, Forms nur rein mit PHP abzuchecken.
    Schon mal aus dem einen Grund, dass man JavaScript deaktivieren kann und dann entweder gar nix mehr geht, oder nicht geprüft wird und es dann Serverseitig zu massiven Problemen kommt.

    Fürher hab ich auch HTML gebastelt und dann alles durch den PHP-Fleischwolf gedreht.
    Mittlerweile hab sich eine kleine Klassen und Funktionensammlung ergeben, mit der ich mir Standardsachen wie Formularfelder oder Links schnell zusammenbaun kann.

    Und mit PHP 5 kann man auch schön OOP betreiben wie bei Java.

    Tipp zum Guestbook: Pass auf, dass man keine Tags eintragen kann bzw, dass es bei Anführungszeichen net zu Problemen kommt

    Klugheit ist gut - Geduld ist besser

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!