Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Bei einem abgesendeten PHP-Formular alle Textfelder mit Hilfe... Antworten
Bei einem abgesendeten PHP-Formular alle Textfelder mit Hilfe eines Indexes prüfen

Johann Müller
Pixelschubser


Beiträge: 4


Normalerweise muss ich ja das so machen, dass wenn ich so ein
Feld mit einem Formular absende ich dann gucke, ob da in $brotsorte
was drin ist vgl. das Textfeld:

<input type="text" name="brotsorte" value="" size="40" maxlength="40">

Nun habe ich ein Bäckerprogramm in PHP mit einem Formular mit hundert
Feldern vgl. Brotsorte, Mehlsorte, Brotpreis, Mehlpreis, Backstunden, Mehlmahlzeit etc.
So nun müsste ich ja jedes Feld auf "leer" prüfen also so - und dies !!! hundert Mal !!!
und das käst mich furchtbar an.

if($Brotsorte==""){$ergebnis="Feld Brotsorte nix drin";}
if($Mehlsorte==""){$ergebnis.="Feld Mehlsorte nix drin";}

Kann ich da nicht mit einem Index in einer Schleife durchlaufen durch alle Felder.
bin kein PHP-Experte, aber sowas wie das zum Beispiel.

$Feldzahl = ? Wie kriege ich die aktuelle Feldzahl des Formulars XY raus?
for(i=0;i++,i>=$Feldzahl)
{
if($POST[i]==""){$ergebnis="Feld "... Wie würde ich den Feldnamen da rauskriegen?
Geht das so überhaupt oder geht das anders?
Ich will quasie ein Script, dass flexibel jedes Formular unabhängig von den jeweiligen
Feldnamen und deren Anzahl abarbeiten kann, auf "leer" prüft und bei nicht "leer"
mit dem Outlook-Express-Befehl von PHP (das ist glaub ich die funktion mail() ) dann
wegsendet an mich halt.
}



  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Guck dir mal foreach und $_POST im Manual an.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Johann Müller
Pixelschubser


Beiträge: 4


Hab's jetzt rausgefunden. Mir sind sogar die Brote angebrannt - so'n Mist.
Hier nochmal für alle:

$wie_viele_drin_sind=0;
foreach( $_POST AS $so_wie_es_heisst => $das_was_drin_ist )
{
echo $so_wie_es_heisst." ".$das_was_drin_ist."<br>";
//$wie_viele_drin_sind++
}

Allerdings macht er es nicht ganz, er bringt mir ungespeckted "}" oder
so ähnlichen Fehler *heul*
Wenn ich $wie_viele_drin_sind++ auskommatiere dann geht's komischerweise


  Profil   Editieren   Zitieren

Johann Müller
Pixelschubser


Beiträge: 4


Und dann habe ich noch ne Frage dazu:
Also wenn ich jetzt den Name vom Feld hab und den Inhalt wie kriege
ich den Typ raus, also wie es ist: ein type="button" type="text".
weil blöderweise bringt der mir den Button in der Schleife auch noch
Ich könnte dem Button zwar nen bestimmten Namen geben, aber
das will ich ja net. Ich möchte den Code universell für jedes HTML-Formular
einsetzbar machen - egal wie der Button heißt.

Also meine Frage: Wie kriege ich den Typ des HTML-Formular-Feldes mit PHP ohne
diesen vorher irgendwo abspeichern zu müssen?

Geht das mit einem dieser Arrays: $_GET, $_POST, $_REQUEST?
Oder wird der Feld-Typ nirgends in PHP übermittelt?
Ich weiß also nachher nicht, ob's ein Radiobutton, eine TextBox, ein Hidden etc. war?

  Profil   Editieren   Zitieren

n0f3aR
Mausakrobat


Beiträge: 155


Naja, ich denke nicht dass du es so lösen kannst. Aber ich hab da ne andere Idee.
Du kannst doch die Namen der Eingabefelder, Auswahllisten usw. so anlegen dass du bescheid weißt, und es TROTZDEM dynamisch machen, denk ich.

Einfach als Name z.B. sel_DeinName für alle <select>
oder txt_DeinName für alle vom Typ Input type="text"
usw.

Kannste dann ja so in etwa dynamisch machen:
1: 
2: 
3:
<input type="text" name="sel_<?php echo $name;?>" />


Und in for each zerlegst du den Namen.

Viel mir spontan so ein, vielleicht gibts auch noch ne elegantere Lösung.

---
Kostenlos Webspace bei funpic.de

Diese Nachricht wurde geändert von: n0f3aR
  Profil   E-Mail   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Lege die ein Array im PHP an, welches die Informationen zu den einzelnen Feldern enthält beim Ausgeben kannst du aus diesem Array die Formularfelder erzeugen, beim Prüfen holst du die Prüffunktion da raus.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben