isset in Schleife abfragen?
Sneap
- php
Hallo,
ich hab eine Frage und zwar prüfe ich zur Zeit wie folgt ob eine Post Variable übergeben wurde.
if(!isset($_POST['Wert1'],
$_POST['Wert2'],
$_POST['Wert3'],
$_POST['Wert4'],
$_POST['Wert5'],
$_POST['Wert6'],
$_POST['Wert7'],
$_POST['Wert8'],
$_POST['Wert9'],
$_POST['Wert10'])){
echo "Es ist ein Fehler aufgetreten";
}else{
echo "alles Ok";
}
Meine Frage ist jetzt, wie kann ich in einer Schleife prüfen, ob alle Variablen gesetzt sind? Wenn ich jetzt 100 oder 1000 Werte übergeben hätte/würde, dann wäre dies ja ziemlich viel was ich in den Code schreiben müste. Neben bei sollte es einwenig dynamisch sein, da es mal 10, 11 oder auch mal 20 Werte seien können die übergeben werden.
Ich dank euch schon mal allen fürs Helfen.
Mfg
Mit einer foreach- oder for-Schleife die über ein Array oder einen Zahlenbereich (wäre in deinem Beispiel sinnvoll) loopt und für jeden Eintrag per isset() auf Existenz dieses Keys im Array $_POST prüft.
Habs hinbekommen:
for($count = 1; $count < $max; $count++){
if(isset($_POST['Wert'.$count])) $post_arr[] = true;
}
if(in_array(false, $array, true))
echo "Fehler";
else
echo "Alles Ok";
Hi!
Habs hinbekommen:
Glaub ich nicht.
[code lang=php] for($count = 1; $count < $max; $count++){
if(isset($_POST['Wert'.$count])) $post_arr[] = true;
}
$post_arr enthält am Ende nur true-Werte, weil du auch nur solche reinschreibst.
if(in_array(false, $array, true))
Und hier befragst du nicht mehr den Inhalt von $post_arr.
Lo!
for($count = 1; $count < $max; $count++){
if(isset($_POST['Wert'.$count])) $post_arr[] = true;
}$post_arr enthält am Ende nur true-Werte, weil du auch nur solche reinschreibst.
Habs editiert:
[code lang=php]
for($count = 1; $count < $max; $count++){
if(isset($_POST['Wert'.$count]))
$post_arr[] = true;
else
$post_arr[] = false;
}
> > if(in\_array(false, $array, true))
>
> Und hier befragst du nicht mehr den Inhalt von $post\_arr.
Angepasst:
~~~php
if(in_array(false, $post_arr, true)){
Jetzt sollte aber alles seine Richtigkeit haben.
Hallo,
for($count = 1; $count < $max; $count++){
if(isset($_POST['Wert'.$count]))
$post_arr[] = true;
else
$post_arr[] = false;
}
kann man so machen, aber das ist nur eine sehr umständliche Schreibweise für
> ~~~php
for($count=1; $count<$max; $count++)
> $post_arr[] = isset($_POST['Wert'.$count]);
Und außerdem fragst du ein Element zu wenig ab: Wenn beispielsweise $max=4 ist, prüfst du nur 3 Elemente. Fang besser mit 0 an zu zählen, das wäre die übliche Methode. Oder lass die Schleife mit dem Endwert noch ein letztes Mal durchlaufen, indem du die Abbruchbedingung nicht auf "kleiner", sondern auf "kleiner oder gleich" formulierst.
Ciao,
Martin
Hi!
if(!isset($_POST['Wert1'], [...]
Meine Frage ist jetzt, wie kann ich in einer Schleife prüfen, ob alle Variablen gesetzt sind? Wenn ich jetzt 100 oder 1000 Werte übergeben hätte/würde, dann wäre dies ja ziemlich viel was ich in den Code schreiben müste.
Dann nutze PHPs Feature, Elementnamen mit [] hintendran (und optional einem Wert darin) als Array-Element in $_POST/$_GET abzulegen. Darüber kann man sehr gut iterieren.
Neben bei sollte es einwenig dynamisch sein, da es mal 10, 11 oder auch mal 20 Werte seien können die übergeben werden.
Das musst du dann der Schleife sagen, wie oft sie laufen soll. Wenn du allerdings nicht weißt, wieviele Werte es sein sollen, dann brauchst du auch nicht zu prüfen, ob sie alle da sind - weil: wie soll das gehen?
Lo!
High!
Suchst du sowas?
<html>
<body>
<?php
$defaults['bg']='#000000';
$defaults['fg']='#ffddaa';
foreach ($defaults as $key => $value)
{
if (array_key_exists($key,$_GET))
$defaults[$key]=$_GET[$key];
}
?>
<p>
<u>Defaults:</u><br>
<?php
foreach ($defaults as $key => $value)
echo $key.': '.$value.'<br>';
?>
<p> </p>
<p>oder</p>
<p> </p>
<?php
$deflts['bg']='#1a1a1a';
$deflts['fg']='#ababab';
foreach ($_GET as $key => $value)
{
if (array_key_exists($key,$deflts))
$deflts[$key]=$_GET[$key];
else
$remain[$key]=$_GET[$key];
}
?>
<p>
<u>Deflts:</u><br>
<?php
foreach ($deflts as $key => $value)
echo $key.': '.$value.'<br>';
?>
</p>
<p>
<u>unprocessed:</u><br>
<?php
foreach ($remain as $key => $value)
echo $key.': '.$value.'<br>';
?>
</p>
</body>
</html>
Mal ohne, mal mit ?fg=b1ab1a oder ?bg=00c001 aufrufen, dann mal mit ?fg=b1ab1a&abc=666 (oder so) und die Ausgabe angucken... und dann eben $_POST statt $_GET benutzen...
Gruß
(-: sꞁəəɥ ɹəʌo pɐəɥ) pəɓɓɐſ