Zum Inhalt springen

Array-Filterung


Gast

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

<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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

<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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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).

Link zu diesem Kommentar
Auf anderen Seiten teilen


	    <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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...