kostenloser Webspace werbefrei: lima-city


Dynamisches Formular mit PHP verarbeiten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    shaw

    shaw hat kostenlosen Webspace.

    Hallo zusammen,


    und zwar folgendes:

    Ich habe eine Form, diese eine Textbox und eine Textarea enthält.
    Wenn ich auch einen Button klicke, wird eine weitere Textbox und eine weitere Textarea hinzugefügt.

    In diese sollen jeweils zwei verschiedene Informationen gespeichert werden.

    Sagen wir mal so:

    Textbox1 enthält: Nummer 1
    Textarea1 enthält: Nummer 1.2

    Textbox2 enthält: Nummer 2
    Textarea2 enthält: Nummer 2.2


    Wie kann ich die Daten in einen PHP-Formular verarbeiten, bzw. in eine Mysql-Datenbank speichern.

    Bisher sieht es bei mir so aus:

    $myInputs = $_POST["myInputs"]; # Wandelt die Variable um, klar.
    	foreach ($myInputs as $eachInput) {
    		echo '<div style="width: auto; height: auto; margin-top: 20px; background-color: red;">';
    		echo $eachInput . "<br>";
    		echo '</div>'; # Gibt alle Eingaben der Felder wieder.
    	}



    Wie kann ich die Inhalte der einzelnen Textfelder in eine Variable speichern, bzw mehrere.

    Mein Problem ist, dass die Anzahl ja Variabel ist, und ich deshalb irgendwie nicht weiterkomme.
    Und wie kann ich, das gleiche Problem wie oben, Variable anzahlen an Werten in eine datenbank speichern, wenn ich eine textbox habe bzw. eine Textbox und eine Textarea, dann wüsste ich es.



    Wäre euch sehr dankbar.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Das Problem kannst du auf mehrere Arten angehen.

    1. Du schreibst dir in einem versteckten Input-Feld mit, wie viele Textboxen und Textareas hinzugefügt wurden, und im PHP-Script gehst du dann einfach mit einer Schleife alle POST-Parameter durch. Dabei benennst du die Textboxen und -areas einfach zB Tb1, Ta1, Tb2, Ta2 usw.

    2. Du lässt das versteckte Input-Feld weg, und gehst einfach stur von 0 ab alle möglichkeiten durch. Wenn das Script erkennt dass der Parameter Ta27 zB nicht gesetzt ist, weißt du, dass nur 26 Textboxen und Textareas eingefügt waren.

    3. Du benennst alle Textboxen und alle Textareas exakt gleich (für die Textboxen zB text, für die Textareas zB area). Dann kannst du im PHP-Script via $_POST['text'][0] auf das erste Textfeld zugreifen. (diese version habe ich selbst nicht getestet, sollte aber funktionieren)


    mfg
  4. Autor dieses Themas

    shaw

    shaw hat kostenlosen Webspace.

    Die heißen alle gleich.

    Mal angenommen, ich habe 3 Textboxen und areas.



    $tb1 = $_POST['text'][0];
    $ta1 = $_POST['area'][0];
    $tb1 = $_POST['text'][1];
    $ta2 = $_POST['area'][1];
    $tb2 = $_POST['text'][2];
    $ta3 = $_POST['area'][2];
    $tb3 = $_POST['text'][3];


    So, und wie kann ich jetzt die Variablen $tb1 usw. automatisch anpassen?
    Bzw. die mysql inserers durchführen? ;/
  5. Schau dir mal an, was alle von diesen Codezeilen gemeinsam haben, beziehungsweise worin sie sich unterscheiden.
    $tb1 = $_POST['text'][0];
    $ta1 = $_POST['area'][0];
    $tb2 = $_POST['text'][1];
    $ta2 = $_POST['area'][1];
    $tb3 = $_POST['text'][2];
    $ta3 = $_POST['area'][2];


    Und dann überlegst du dir, wie man da das schöne Konzept einer Schleife einbauen könnte.

    mfg
  6. Autor dieses Themas

    shaw

    shaw hat kostenlosen Webspace.

    Um die Schleife da kümmer ich mich später,
    ich hab das jetzt mal mit der Anzahl da probiert,

    wenn ich jedoch schriebe

    $_POST['name'][0],
    dann gibt er mir nur den ersten Buchstaben aus, genau wenn ich 1 schreibe, dann nur den 2 Buchstaben, beides aus dem letzen element


    €: Habe es jetzt doch geschafft :)

    Nun gehts an die Schleife..

    Beitrag zuletzt geändert: 29.11.2011 21:58:38 von shaw
  7. jmc-remshalden

    Kostenloser Webspace von jmc-remshalden

    jmc-remshalden hat kostenlosen Webspace.

    So würde ich das machen:
    $alltext = $_POST['text'];
    $allarea = $_POST['area'];
    
    $zaehler = 0;
    foreach ( $alltext as  $eachtext) {
    
    	echo $allarea[$zaehler];
            //mach was anderes
    
            $zaehler ++;
    }
    jmc-remshalden

    Beitrag zuletzt geändert: 29.11.2011 22:22:07 von jmc-remshalden
  8. Autor dieses Themas

    shaw

    shaw hat kostenlosen Webspace.

    Hmm ich habe jetzt nach Infos gesucht, komme aber leider nicht weiter.


    Mein Script schaut bisher so aus:

    if($_POST['textbox'][0] && $_POST['textarea'][0] != ""){
    		#immer abfragen, ob die nächste Variable Werte enthält
                    #Hier muss doch die foreach Schleife rein, ich weiß nicht wie ich die bei den Namen anmelden soll.
    	}else{
    		#wenn in der ersten Texbox schon nicht drinnen steht
    	}



    Könnt ihr mir das nicht etwas genauer erklären?
  9. jmc-remshalden

    Kostenloser Webspace von jmc-remshalden

    jmc-remshalden hat kostenlosen Webspace.

    Habe gerade mein obriges Beispiel überprüft:

    Hier der Link zu meiner Testseite: http://www.jmc-remshalden.lima-city.de/test/forum_test.php

    Und hier der Code:
    <!DOCTYPE HTML>
    <html>
    <head>
            <title>Test</title>
    </head>
     
    <body>
     
    <form method="post" action="/test/forum_test.php">
    <input type="hidden" name="sent" value="yes">
    <input type="text" name="text[]"><textarea name="area[]"></textarea><br />
    		//Beachte die eckigen Klammern hinter den Namen!
    <input type="text" name="text[]"><textarea name="area[]"></textarea><br />
    <input type="submit">
    </form>
     
    <?php
            $sent = $_POST['sent'];			//Weichensteller - nur wenn Formular verschickt wurde, dann auswerten
    
     
            if ($sent == 'yes') {			//Hier beginnt der interessante Teil
                    $alltext = $_POST['text'];
                    $allarea = $_POST['area'];
    
                    $zaehler = 0;
                    foreach ( $alltext as  $eachtext) {
                            echo $eachtext.'#';
                    	echo $allarea[$zaehler].'<br />';
                            //mach was anderes
    
                            $zaehler ++;
                    }               
            }			//Hier endet der interessante Teil
    ?>
     
    </body>
    </html>
    Die Anzahl der Eingabefeldergruppen ist beliebig erweiterbar!

    jmc-remshalden

    Beitrag zuletzt geändert: 29.11.2011 22:32:44 von jmc-remshalden
  10. Autor dieses Themas

    shaw

    shaw hat kostenlosen Webspace.

    Danke, ich danke dir!
    Es klappt genauso wie ich es wollte.

    Ich hatte diese Schleife auch so im Kopf, jedoch konnte ich sie irgendwie nicht realisieren.
  11. jmc-remshalden

    Kostenloser Webspace von jmc-remshalden

    jmc-remshalden hat kostenlosen Webspace.

    Ich denke, dass lag an den Namen der Felder: Die ekigen Klammern sind entscheidend.
    Ohne diese wird nur der letzte Wert übertragen (wie ich eben festgestellt habe).

    Das würde auch das Verhalten bei deinem vorherigen Versuch mit $_Post['feld'][1] erklären:
    $_Post['feld'] ist ein String -> Arrayzugriff auf String bewirkt die Ausgabe der einzelnen Buchstaben.

    Gute Nacht!
    jmc-remshalden
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!