formular überprüfen (dynamisch!)

Chino

Erfahrenes Mitglied
moin !

ich hab gerad n kleines prob und finde keine lösung. folgendes:

ich hab ein formular mit vielen inputfeldern deren values in deiner db gespeichert werden. bisher hab ich vor dem eintrag in der db alle values manuell auf inhalt überprüft also (ob leer oder nich)

PHP:
$cfg_1 == "" || $cfg_2 == "" ||
usw.

jetzt möcht ich das gerne dynamisch machen. und hier komm ich net weiter: die inputfelder haben alle als namen "cfg_" gefolgt von einer nummer (=spalten nummer in der db). wie kann ich denn jetzt die beiden variablen zusammenpacken so dass ich dann die values abfragen kann ? hat mich jemand verstanden was ich will ? ;)
 
PHP:
foreach($Nummern as $nummer)
{
          $datenbank = cfg+$nummer;

if(!$$datenbank)
          echo "nix da Schlawiner!";
}

$$datenbank
währe dann die Variable $cfg1 $cfg2 usw

du kannst das auch so machen
(was die bessere lösung währe)

PHP:
foreach($Nummern as $nummer)
{
$nummer = "cfg"+$nummer;
if(!$_POST[$nummer])
          echo "nix da Schlawiner!";
}
 
So ich hoffe, ich versteh dich richtig... ;)

Du hast also die Werte der Input-Felder in den Variablen $cfg_1, $cfg_2....$cfg_spaltenanzahl und willst diese nicht umständlich einzeln abprüfen, sondern dynamisch.

Dann probiers mal so: (auf das doppelte '$' achten)

Code:
<?
for($i=1;$i<=$anzahl_cfg;$i++)
{
 $var1="cfg_".$i;
 
 if($$var1=='')
 {
  //Anweisungen
 }
 else
 {
  //Anweisungen
 }
}
?>

Hoffe es hilft. :)

[edit]Mist war wieder jemand schneller... :rolleyes: :p[/edit]
 
Zuletzt bearbeitet:
also irgendwie gibts da noch n kleines prob bei abfragen der values. hier mal der code:

PHP:
// vars int
	$fehler = 0;
	$error_array = array("");
	$neue_anzahl = $anzahl--;
	$ausgabe = mysql_query("SELECT * FROM cms_config");

	for($i=1;$i<$neue_anzahl;$i++) {
		// check values
		$values="cfg_".$i;
		
		// set error
		if($$values == "") {
			$fehler=1;
			array_push($error_array,$i);
		} elseif($$values != "") {
			$fehler=0;
		}

		// set table values
		if ($i<$neue_anzahl-1) {
			$table_values .= mysql_field_name($ausgabe,$i). " = '" .$$values."',";
		} else {
			$table_values .= mysql_field_name($ausgabe,$i). " = '" .$$values."'" ;
		}
	}

	// check error
	if($fehler != 0) {
		echo implode(" ",$error_array);
		echo "<br>";
		echo $fehler;
		include("config_error.inc.php");
	} elseif($fehler==0) {
		echo implode(" ",$error_array);
		echo "<br>";
		echo $fehler;
		$add = "UPDATE cms_config SET $table_values WHERE id = 1";
		mysql_query($add);
		include("config.php");
	}

wie gesagt, das formular hat x anzahl an input fehlder (cfg_x als name) die in einer schleife auf inhalt überprüft werden sollen. wenn das feld leer is, wird fehler auf 1 gesetzt und dementsprechend eine fehler seite ausgegeben. zusätzlich wird die nummer des feldes in einem array gespeichert, damit bei der fehlerseite auch die felder markiert werden können, die falsch sind.

das problem: _nur_ wenn das letzte feld leer ist, dann kommt die fehlerseite. irgendwie wird $fehler nich richtig gesetzt (deswegen habe ich mir immer das array mit den fehlernummern und die fehlernummer an sich ausgeben lassen.) das komische is aber, wenn ein feld leer is (nich das letzte!) dann wird die fehlernummer zwar im array eingetragen aber fehler bleibt auf 0.

help ! :o)

thx,
chris
 
... für den Fall, dass es noch aktuell ist, du mußt einfach im folgenden Bereich das $fehler = 0; weg lassen...

PHP:
// set error
        if($$values == "") {
            $fehler=1;
            array_push($error_array,$i);
        } elseif($$values != "") {
            $fehler=0;
        }
Du setzt ja schon den initialwert auf 0. sprich wenn alle Datensätze ohne Fehler durchlaufen bleibt der wert auch 0 und alle sind zufrieden. Kommt aber ein Fehler vor soll der wert dauerhaft auf 1 stehen - auch wenn danach noch ein Datensatz kommt der i. o. ist...

Alternativ könntest du $fehler auch zu einem array machen und dort die werte reinschreiben oder bei auftauchen eines fehlers gleich eine Meldung ausgeben und die Anwendung mit die() beenden...

Gruß
 
Zurück