chill0r
Goto Top

Variables Formular mit Datenbankeinträgen

Hallo,

ich habe ein "kleines" Problem und zwar möchte ich ein Formular erstellen mit dem eine variable Anzahl von Datensätzen in eine Datenbank geschrieben werden.

Funktionsprinzip:
Ich habe eine Auswahlmöglichkeit wie viele Mannschaften in die Datenbank eingetragen werden sollen. Je nach Eingabe erscheint dann ein Formular in dem entsprechend viele Felder zum eintragen der Mannschaften wie eingegeben erscheinen.

$anz=$_GET['anz'];  

echo "  
<b>Mannschaften eintragen:</b><br>
==================================<br><br>
<form action='$PHP_SELF' method='post'>  
<table>";  
 
 for ($i=1; $i<=$anz; $i++) {

echo "  
	<tr>
	   <td>Mannschaft $i:</td>
	   <td><input type='text' name='Mannschaft$i' size='25'></td>  
	   <td><input type='hidden' name='ID$i' value='$i'></td>  
	</tr>";  
  
 }

echo "   
</table>
<input type='submit' value='Anlegen' name='anlegen'>  
</form>";  

Das klappt auch soweit ganz gut.

Kommen wir zum eigentlichen Problem:

Man könnte das ganze recht unflexibel lösen indem man für jede Variable einen extra Eintag macht:

$ID1=$_POST['ID1'];  
$Mannschaft1=$_POST['Mannschaft1'];  
$ID2=$_POST['ID2'];  
$Mannschaft2=$_POST['Mannschaft2'];  
... usw...

und das eintragen in die Datenbank mit:
if(isset($_POST['anlegen']))  
{
$eintragen1="INSERT INTO mannschaften  
				(ID, Mannschaft)
			VALUES
				('$ID1', '$Mannschaft1')";  
$eintragen2="INSERT INTO mannschaften  
				(ID, Mannschaft)
			VALUES
				('$ID2', '$Mannschaft2')";  
...usw...

mysql_query($eintragen1) or die(mysql_error());
mysql_query($eintragen2) or die(mysql_error());
..usw...
}

Da man aber 12-24 Mannschaften eintragen können soll ist das sehr schreibintensiv und sehr viel Quellcode.

Ich würde den unteren Code gerne genauso flexibel gestalten wie das Formular oben.

Ich habe schon versucht den Teil mit dem Eintragen in die Datenbank folgendermaßen zu lösen:

for ($i=1; $i<=$anz; $i++) {
$eintr="$".eintragen.$i;  

mysql_query($eintr) or die(mysql_error());
}

Allerdings wird dadurch leider nicht die Variable erzeugt die ich brauche. Für $eintr steht dann zwar das passende $eintragen1 allerdings wird es nicht als Variable erkannt.
Den Part darüber würde ich auch gerne Variabel gestalten aber leider finde ich keinen Weg der Funktioniert.

Ich hoffe ihr habt ein paar hilfreiche Tipps für mich. Vllt habe ich ja auch nen kompletten Denkfehler drin und das ganze geht anders ganz einfach....

Gruß

Content-Key: 32487

Url: https://administrator.de/contentid/32487

Printed on: April 19, 2024 at 16:04 o'clock

Member: Guenni
Guenni Feb 27, 2007 at 19:45:54 (UTC)
Goto Top
@Chill0R

Hi,

du kannst HTML-Tags als Array deklarieren, und das Array mit PHP auswerten.

<?
if($anlegen){
 $query="Insert into mannschaften(manschaft) ";  
 $query.="values('$mannschaft')"; <-- erstes Element des Array, siehe Formular, anhängen  
 $i=1;
 while($i<count($mannschaft)){
  $query.=","."values('$mannschaft[$i]')"; <-- ein Komma, nächstes Element anhängen  
	$i++;
 }
}

echo $query; <-- Testausgabe, eventuell muß dem Query noch ein ";" angehangen werden: $query.=";",  
wenn der Befehl **mysql_query($query);** abschickt wird
Zeigt sich ja dann.
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
</head>
<body>

<form action="test.php" method="post">  
<table>
<?
$anz=$_GET['anz'];  
if($anz){
 for($i=0;$i<$anz;$i++){
  echo "<tr>";  
	 echo "<td><input type=\"text\" name=\"mannschaft\" size=\"25\"></td>"; <-- Textfeld **mannschaft** als Array deklarieren  
	echo "</tr>";  
 }
}
?>
</table>
<input type="submit" value="Anlegen" name="anlegen">  
</form>
</body>
</html>

Denke mal, so wird's gehen.

Grüße
Günni