Gast Geschrieben 21. Februar 2008 Teilen Geschrieben 21. Februar 2008 Hallo, Leute! Ich scheine vor einem unlösbaren Problem zu stehen. Gibt es eine Möglichkeit Variablen aus einem Array darzustellen, die einen Wert besitzen und die, die leer sind, rauszufiltern? Hier ist das Problem: Ich habe zwei Seiten: * seite1.php * seite2.php auf seite1.php gibt es vier eingabefelder <? ... <input type="text" name="feld1">, <input type="text" name="feld2">, <input type="text" name="feld3">, <input type="text" name="feld4"> ... ?>[/PHP] - also mit der bezeichnung $feld1, $feld2, $feld3 und feld vier. $feld1 und $feld3 beinhalten jeweils eine zeichenkette ("Wohnung" und "Haus" oder sowas); $feld2 und $feld4 sind jeweils leer. Beim Aufruf der seite2.php sollen $feld1 bis $feld4 übergeben werden. Die Felder, die eine Zeichenkette beinhalten, sollen nacheinander ausgegeben werden. Die, deren Eingabefelder leer waren, demzufolge nicht. Die Ausgabe sollte folgendermaßen aussehen: 1. Wohnung 2. Haus Hat jemand ne Idee, wie das umzusetzen geht? Vielen Dank im Voraus! Marcus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 21. Februar 2008 Teilen Geschrieben 21. Februar 2008 ist unlösbar für alle variablen schau ob leer, wenn leer mach nix und wenn gefüllt gib in hashtable.... gib hashtable aus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ZuVieL Geschrieben 22. Februar 2008 Teilen Geschrieben 22. Februar 2008 if(!empty($feld1)) { $felder[] = $feld1; } if (!empty($feld2)) { $felder[] = $feld2; } if (!empty($feld3)) { $felder[] = $feld3; } if (!empty($feld4)) { $felder[] = $feld4; } $i = 1; foreach($felder AS $feld) { echo $i.'. '.$feld.'<br>'; $i++; }[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast Geschrieben 22. Februar 2008 Teilen Geschrieben 22. Februar 2008 Danke für den Tipp, ZuVieL! Es funzt. Mittlerweile stehe ich vor einem neuen Problem. Jedem Eingabefeld (text) <input type="text" name="feld1">, <input type="text" name="feld2">, <input type="text" name="feld3">, <input type="text" name="feld4">[/PHP] ist ein ein Eingabefeld zugeordnet, das jeweils Zahlen beinhaltet [PHP]<input type="text" name="zahl1">, <input type="text" name="zahl2">, <input type="text" name="zahl3">, <input type="text" name="zahl4"> Diese Zahlenwerde sollen den entsprechenden text-Eingabefeldern zugeordnet werden. "$zahl" is der jeweilige Zahlenwert, der an dieser Stelle ausgegeben werden soll (s. unten). Brauche ich hierfür eine Schleife? Wenn ja, wie muss das Konstrukt aussehen? $i = 1; foreach($felder AS $bezeichnung) { echo '<tr><td align="right">'.$i.'.</td> <td></td> <td align="right">'.$bezeichnung.'</td> <td></td> <td align="right">'; echo $zahl; echo '</td> <td></td> <td align="right">Einzelpreis</td> <td></td> <td align="right">Gesamtpreis</td> <td></td>'; $i++; }[/PHP] Vielen Dank vorab! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 22. Februar 2008 Teilen Geschrieben 22. Februar 2008 <input type="text" name="feld[1]">, <input type="text" name="feld[2]">, <input type="text" name="feld[3]">, <input type="text" name="feld[4]"> <input type="text" name="zahl[1]">, <input type="text" name="zahl[2]">, <input type="text" name="zahl[3]">, <input type="text" name="zahl[4]"> foreach($_POST['feld'] as $id => $text) { $zahl = $_POST[$id]; ..... } [/PHP] es sei gesagt das du prüffunktionen brauchst, als is_int(), isset(), !empty um sicher zu sein das niemand dein Formular manipuliert. von endlosen if(...) else... rate ich dir ab, sehr unflexibel. Innerhalb einer schleife geht es besser. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast Geschrieben 22. Februar 2008 Teilen Geschrieben 22. Februar 2008 <input type="text" name="feld[1]">, <input type="text" name="feld[2]">, <input type="text" name="feld[3]">, <input type="text" name="feld[4]"> <input type="text" name="zahl[1]">, <input type="text" name="zahl[2]">, <input type="text" name="zahl[3]">, <input type="text" name="zahl[4]"> foreach($_POST['feld'] as $id => $text) { $zahl = $_POST[$id]; ..... } [/PHP] es sei gesagt das du prüffunktionen brauchst, als is_int(), isset(), !empty um sicher zu sein das niemand dein Formular manipuliert. von endlosen if(...) else... rate ich dir ab, sehr unflexibel. Innerhalb einer schleife geht es besser. Danke, aber wo muss bzw. wie muss ich das denn jetzt genau einbinden? Ich habe leicht den Überblick verloren. :s Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast Geschrieben 22. Februar 2008 Teilen Geschrieben 22. Februar 2008 vielleicht noch mal das beispiel, um es sich plastischer vorzustellen: seite1.php <tr> <td valign="top">Bezeichnung:</td> <td></td> <td><input name="bezeichnung" style="width: 250px;"><br> <input name="bezeichnung1" style="width: 250px;"><br> <input name="bezeichnung2" style="width: 250px;"><br> <input name="bezeichnung3" style="width: 250px;"><br> <input name="bezeichnung4" style="width: 250px;"></td> <td width="10"></td> <td><input name="stunden" style="width: 40px;"><br> <input name="stunden1" style="width: 40px;"><br> <input name="stunden2" style="width: 40px;"><br> <input name="stunden3" style="width: 40px;"><br> <input name="stunden4" style="width: 40px;"></td> </tr> seite2.php ... <? if(!empty($bezeichnung)) { $felder[] = $bezeichnung; } if (!empty($bezeichnung1)) { $felder[] = $bezeichnung1; } if (!empty($bezeichnung2)) { $felder[] = $bezeichnung2; } if (!empty($bezeichnung3)) { $felder[] = $bezeichnung3; } if (!empty($bezeichnung4)) { $felder[] = $bezeichnung4; } if (!empty($bezeichnung5)) { $felder[] = $bezeichnung5; } ?>[/PHP] ... [PHP]<tr> <td align="right"><b>Pos.</b></td> <td width="20"></td> <td align="right"><b>Bezeichnung</b></td> <td width="20"></td> <td align="right"><b>Menge</b></td> <td width="20"></td> <td align="right"><b>Einzelpreis</b></td> <td width="20"></td> <td align="right"><b>Gesamtpreis</b></td> <td width="10"></td> </tr> <tr> <td colspan="8" height="10"></td> </tr> <? $i = 1; foreach($felder AS $bezeichnung) { echo '<tr><td align="right">'.$i.'.</td> <td></td> <td align="right">'.$bezeichnung.'</td> <td></td> <td align="right">'.$stunden.'</td> <td></td> <td align="right">Einzelpreis</td> <td></td> <td align="right">Gesamtpreis</td> <td></td><tr>'; $i++; } ?> Auf seite2.php sollen nun alle text-Felder nacheinander gelistet werden, die NICHT leer sind. Darüber hinaus sollen die entsprechenden Stunden, die zusätzlich auf seite1.php angegeben wurden, dazugeschrieben werden (s.oben $stunden). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ZuVieL Geschrieben 25. Februar 2008 Teilen Geschrieben 25. Februar 2008 <tr> <td valign="top">Bezeichnung:</td> <td></td> <td> <input name="bezeichnung[1]" style="width: 250px;"><br> <input name="bezeichnung[2]" style="width: 250px;"><br> <input name="bezeichnung[3]" style="width: 250px;"><br> <input name="bezeichnung[4]" style="width: 250px;"><br> <input name="bezeichnung[5]" style="width: 250px;"> </td> <td width="10"></td> <td> <input name="stunden[1]" style="width: 40px;"><br> <input name="stunden[2]" style="width: 40px;"><br> <input name="stunden[3]" style="width: 40px;"><br> <input name="stunden[4]" style="width: 40px;"><br> <input name="stunden[5]" style="width: 40px;"> </td> </tr> $i = 1; foreach($bezeichnung AS $id => $bez) { if(!empty($bez)) { echo ' <tr> <td align="right">'.$i.'.</td> <td></td> <td align="right">'.$bez.'</td> <td></td> <td align="right">'.$stunden[$id].'</td> <td></td> <td align="right">Einzelpreis</td> <td></td> <td align="right">Gesamtpreis</td> <td></td> <tr> '; $i++; }//if ende }//foreach ende[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.