WinFuture-Forum.de: Php + Formular - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Php + Formular Elemente wiederholen und auswerten


#1 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 24. April 2006 - 09:07

Ahoi.

Ich hab ein kleines Problem und weiß nicht so richtig wie ich da ran gehen soll.

Also ich möchte in PHP eine Seite mit einem (oder auch mehreren) Formular erstellen.

Siehe Skizze.

Hier sollen bestimmte Elemente (eine Gruppe = A-I = 1 Datensatz) wiederholt werden, die ersten beiden (Name und Vorname) sind nur einfach vorhanden. Es soll erreicht werden zu einer Person mehrere Datengruppen die ein Datensatz sind (A-I) zu erfassen.

Am Ende sollen die Daten in eine MySQL-Datenbank geschrieben werden.

Folgende Fragen stellen sich mir hierbei:

Wie (bzw. durch was) wiederhole ich dies Formulargruppen?


Nach Absenden des Forumlares sind die Variableninhalte weg.


Wenn die weitere Formulargruppen automatisch erzeugt werden, wie sind dann die verwandten Variablen zu benennen? (zb. a1, a2 o.ä.)


Ich hoffe ihr könnt verstehen um was es mir geht.

Mfg Murdoc
0

Anzeige



#2 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 24. April 2006 - 12:29

Zitat

Wie (bzw. durch was) wiederhole ich dies Formulargruppen?

indem du html-elemente erneut ausgibst..?

Zitat

Nach Absenden des Forumlares sind die Variableninhalte weg.

das ist eine feststellung und keine frage ^^

aber natürlich sind sie weg. schliesslich ist html eine markup sprache... eine "merkfunktionalität" musst du über serverseitige skripterei hinbekommen. z.B. mit php.

Zitat

Wenn die weitere Formulargruppen automatisch erzeugt werden, wie sind dann die verwandten Variablen zu benennen? (zb. a1, a2 o.ä.)

na, wie du willst ^^
natürlich solltest du sie so nennen, dass sie leicht verarbeitet werden können. (z.B. nameGruppennummer).

Zitat

Ich hoffe ihr könnt verstehen um was es mir geht.

leider nicht ganz :/.

du könntest wahrscheinlich die "wiederholung" von A-I mit java-script hinbekommen... und dann auch schön dynamisch weitere "wiederholungen" hinzufügen. allerdings ist javascript nur so ne sache... nicht alle browser unterstützen es richtig, und wenn doch, kannst du dir nicht sicher sein, ob in der nächsten version des browsers genau deine webseite nicht mehr funktioniert. die einfachste (und zukunftsfreundlichste) lösung wäre es, einfach per parameter anzugeben, wie oft der formularabschnitt wiederholt werden soll. (du sagst ja ungünstigerweise nicht, mit was für daten das formular gefüttert werden soll)

grüsse,
mo
I'm mó. mo's good twin.
0

#3 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 24. April 2006 - 13:35

Die genauen Daten kann ich aus Gründen von Betriebsgeheimnissen leider nicht nennen.
Deshalb habe ich zumindest die schemenhafte Skizze erstellt, um das Ganze etwas zu veranschaulichen.

Wenn möglich sollte es schon in PHP sein.

Zitat

ndem du html-elemente erneut ausgibst..?


Ja aber es soll ja wenn möglich dynamisch sein nach Eingabe des letzten Feldes (hier F) "ploppt" eine neue Gruppe von Eingabefeldern auf.


Zitat

na, wie du willst ^^
natürlich solltest du sie so nennen, dass sie leicht verarbeitet werden können. (z.B. nameGruppennummer).


Ich dachte hier eher an ein kleines Beispiel wie man das realisieren kann, automatisch die Variablen fortlaufend zu benennen (dafür muss ich ja wissen wieviele Datensätze schon eingegeben wurden)

Zitat

das ist eine feststellung und keine frage ^^

aber natürlich sind sie weg. schliesslich ist html eine markup sprache... eine "merkfunktionalität" musst du über serverseitige skripterei hinbekommen. z.B. mit php.


Es läuft ja wie gesagt über PHP.

Zur Not kann man es auch so machen das die Anzahl der Datensätze vorher ausgewählt werden kann.

Mfg Murdoc

Dieser Beitrag wurde von Murdoc bearbeitet: 24. April 2006 - 13:36

0

#4 Mitglied ist offline   Iso 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 14. Mai 03
  • Reputation: 0
  • Wohnort:Hörstel
  • Interessen:Computer<br />Parties<br />Mädels...

geschrieben 24. April 2006 - 14:20

Dann bastel dir doch in PHP ne for schleife ( for($x=0;$x<=$anzahl-1;$x++) )
und lässt in der Schleife dann die Formulare ausgeben und die Felder nennste dann z.B. echo "<input name=\"feld\".$x , etc ...

Möchtest du das so in etwa haben?
Asus F3JP-Z53 Notebook:
Intel Core 2 Duo T7200 @ 2 Ghz
Mobile Radeon X1700 256 MB
2048 MB DDR2-Ram
160 GB Hitachi HDD
Ubuntu 9.04 / Windows XP SP 3
0

#5 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 24. April 2006 - 14:26

Jep genau das. :gähn:

Nur muss ich halt noch wissen mit welcher (Zähl)Variable ich weitermachen muss wenn ich sie nicht
fest erzeugen lasse sondern halt jedesmal wenn ein Datensatz fertig ausgefüllt wurde.

Und vor allem wie das überhaupt geht, das "Aufploppen".

Mfg Murdoc
0

#6 Mitglied ist offline   Iso 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 14. Mai 03
  • Reputation: 0
  • Wohnort:Hörstel
  • Interessen:Computer<br />Parties<br />Mädels...

geschrieben 24. April 2006 - 14:52

Beitrag anzeigenZitat (Murdoc: 24.04.2006, 15:26)

Nur muss ich halt noch wissen mit welcher (Zähl)Variable ich weitermachen muss wenn ich sie nicht
fest erzeugen lasse sondern halt jedesmal wenn ein Datensatz fertig ausgefüllt wurde.


? Die for-Schleife zählt doch immer die $x variable um einen hoch, wenn sie einmal durchgelaufen ist und halt solange, in meinem Beispiel, bis $anzahl -1 erreicht ist, da haste also deine Variable.

Und was meinst du mit "aufploppen"? Bin ich noch nicht so ganz hintergestiegen :gähn:
Asus F3JP-Z53 Notebook:
Intel Core 2 Duo T7200 @ 2 Ghz
Mobile Radeon X1700 256 MB
2048 MB DDR2-Ram
160 GB Hitachi HDD
Ubuntu 9.04 / Windows XP SP 3
0

#7 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 24. April 2006 - 15:04

So wie ichs anfangs beschrieben hab. Sieh dir dazu nochmal die Skizze an.

Wenn im letzten Feld eines Datensatzes (hier A-I) etwas eingegeben wurde, soll
ein neuer Datensatz (bestehend aus den Textfeldern und Auswahlfeldern) darunter erscheinen in das man
wieder Daten eingibt.

Das heißt ohne feste Werte wie $x = 5 oder so. Je nachdem wieviel der Benutzer eingibt.

Mfg Murdoc
0

#8 Mitglied ist offline   Morpheus3k 

  • Gruppe: aktive Mitglieder
  • Beiträge: 42
  • Beigetreten: 29. Dezember 03
  • Reputation: 0
  • Wohnort:Wien

geschrieben 24. April 2006 - 15:12

Dieses "aufploppen" geht an sich nur mit JavaScript.
Also das "richtige Aufploppen"...

du kannst natürlich schon machen, dass wenn der user noch etwas hinzufügen
will, einen Knopf machst "hinzufügen" und das ganze an ein php-Script
schicken, dass wiederum ein formular generiert und dass (auch ausgefüllt)
an den User überträgt, damit der wieder ein oder 2 felder ausfüllen kann...

Aber genauso lang, wie ich es erklärt habe, genauso blöd ist die idee auch :gähn:

Also eine Variante ohne Javascript, die sinnvoll ist, hast du selbst schon
angegeben: Der User gibt zu erst ein, wieviele Einträge er hat und
ein php-script generiert dann die gewisse Anzahl...

die andere Variante ist mit JavaScript, was halt JavaScript voraussetzt.
Und ich muss meinem Vorredner leider recht geben. Es kann dabei
zu problemen kommen... aber einfache JavaScripts sind meist
kein problem... :)

mfg
0

#9 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 24. April 2006 - 15:30

Welche auftretenden Probleme meinst du denn da konkret?

Mfg Murdoc
0

#10 _rjchio_

  • Gruppe: Gäste

  geschrieben 24. April 2006 - 15:42

Hab dir gleich mal ein PHP-Script gemacht, welches deine Wünsche erfüllt (hoffe ich zumindest) :gähn:
<?php

$anzahl_start_formulare = 1;

echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n";

if (isset($_POST['weiteres_formular'])) {
	  $formulare = $_POST['formulare'] + 1;
}

if (empty($formulare)) {
	  if (!empty($_POST['formulare'])) {
			$formulare = $_POST['formulare'];
	  }
	  else {
			$formulare = $anzahl_start_formulare;
	  }
}

for ($i=1; $i <= $formulare;$i++) {

	  // Formular
	  echo "<input name=\"formular_".$i."_input_feld_1\" size=\"40\" maxlength=\"60\" value=\"".$_POST['formular_'.$i.'_input_feld_1']."\" />\n";

}

$i --;

echo "<input type=\"hidden\" name=\"formulare\" value=\"".$i."\" />";
echo "<input name=\"weiteres_formular\" type=\"submit\" value=\"+ Formular\" />\n";
echo "<input name=\"abschicken\" type=\"submit\" value=\"Abschicken\" />\n";
echo "<input type=\"reset\" value=\"Zurücksetzen\" />\n";
echo "</form>\n";

?>


MfG rjchio
0

#11 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 25. April 2006 - 06:37

Könntest du mir das kurz erläutern?

Wie könnte ich das noch umsetzen das bei erzeugen eines neuen Formulars die Daten in den bestehenden Formularen bestehen bleibt?

Mfg Murdoc

Dieser Beitrag wurde von Murdoc bearbeitet: 25. April 2006 - 08:21

0

#12 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 25. April 2006 - 08:21

murdoc, das skript ist schön einfach gehalten... wenn du das nicht verstehst, ab ins http://de.php.net/manual/de/ - Land und erstmal PHP lernen.

edit:

Zitat

Wie könnte ich das noch umsetzen das bei erzeugen eines neuen Formulars die Daten in den bestehenden Formularen bestehen bleibt?

s.o.
<?php
$inhalt_feld_1 = $_POST['feld_1'];
formblabla...
print '<input name="feld_1" value="'.$inhalt_feld_1.'">';
formendeblabla...
?>

I'm mó. mo's good twin.
0

#13 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 25. April 2006 - 08:38

Mich hat nur das
$i --;
verwirrt, bin aber dahinter gestiegen.
Hab mich nur gewundert warum er da nich $formular genommen hat.

Das mit der Übernahme der Werte ist quasi das was rjchio direkt in die Eingabefelder eingebaut hat.

Ich verstehe :cool:

Aber eins schaff ich noch nicht:

Ich hab unter anderem auch Radio-Edits. Jeweils 2 die zusammen gehören. Hierzu gibtrs ja die Checked Eigenschaft um das standartmäßig festzulegen. Wie kann ich nun aber überprüfen welche ausgewählt wurde, falls der Benutzer eines geändert hat?

Eigentlich doch so (ähnlich):

If ($_Post[$radio1]) check='checked';
echo '<input type="radio" '.$check.'>';


Nur komm ich da mit den zusammengesetzten Variablennamen ($_POST['formular_'.$i.'_input_feld_1']) nich klar.

Mfg Murdoc

Dieser Beitrag wurde von Murdoc bearbeitet: 25. April 2006 - 09:03

0

#14 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 25. April 2006 - 09:12

murdoc,
korrekte html-syntax ist:
<input name="solala" type="radio" value="knopf1" checked>

der value-parameter gibt an, welcher inhalt für "solala" übermittelt wird, wenn dieser knopf ausgewählt wurde. checked steht bei nicht xhtml einfach so drin, bei xhtml muss es checked="checked" heissen. (und der tag natürlich terminiert werden ^^)

siehe auch: http://de.selfhtml.org/html/formulare/ausw...tm#radiobuttons
I'm mó. mo's good twin.
0

#15 Mitglied ist offline   Murdoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 322
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 25. April 2006 - 09:14

Habs hinbekommen. Stimmt der Value Wert muss natürlich rein, hab ich nur bei dem Beispiel aus Gründen der zeitersparnis weggelassen :cool:

Mfg Murdoc
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0