Probleme mit Formular

F

fexal

Guest
Hallo Leutz,

habe wieder mal ein Problem. Ich habe ein Formular, in welches ich eingebe, wieviele Spieltag in die Datenbank eingegeben werden soll. Anschließen wird das Formular wie gewünscht erstellt. Wenn ich jetzt meine Daten eingebe und anschließend in die DB speichern will. Schreibt er mir nur den letzten Eintrag hinein. Ich weiß ich kann das irgendwie mit einer Schleife machen, aber ich komme einfach nicht zurecht. Wäre nett, wenn Ihr mir helfen könnt. Danke im voraus.

CODE
<?php
include ("zugriff.inc.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Spielplan eingeben:</title>
<style type="text/css">
<!--
@import url("style.css");
.Stil1 {font-weight: bold}
-->
</style>
</head>

<body>

<?php
if (empty($action)) {
?>
<form action="form.php" method="post" <?php echo $_SERVER['PHP_SELF']; ?>>
<input type="text" name="anzahl">
<input type="hidden" name="action" value="send">
<input type="submit" value="Eintragen">
</form>

<?php

}

elseif ($action=="send") {

$i=0;

echo "<table border='1'>";
?><form action="form.php" method="post" <?php echo $_SERVER['PHP_SELF'];?>>
<input type="hidden" name="action" value="insert">
<?php
while ($i < $_POST['anzahl']) {
$i++;
echo "<td>" . "Spieltag: " . "<input type='text' name='heim' size='1' value=$i>";
echo "<td>" . "Tag: " . "<select name='wochentag' size='1'>" .
"<option name='tag' value='Montag'>Montag</option>" .
"<option name='tag' value='Dienstag'>Dienstag</option> " .
"<option name='tag'value='Mittwoch'>Mittwoch</option> " .
"<option name='tag' value='Donnerstag'>Donnerstag</option> " .
"<option name='tag' value='Freitag'>Freitag</option> " .
"<option selected name='tag' value='Samstag'>Samstag</option> " .
"<option name='tag' value='Sonnatg'>Sonntag</option> " .
"</select> " ."</td><td>" . "Datum: " . "<input type='text' name='tag' size='2'>" . "<input type='text' name='monat' size='2'>" . "<input type='text' name='jahr' size='4'>".
"</td><td>" . "Heim: " . "<input type='text' name='heim'>" .
"</td><td>" . "Gast: " . "<input type='text' name='gast'>" .
"</td><td>" . "Anstoss: " . "<input type='text' name='anstoss' size='5'>" . " Uhr" .
"</td></tr>";

}
echo "<tr><td>" . "<select name='mannschaft' size='1'>" .
"<option name='mannschaft' value='erste'>I. Mannschaft</option>" .
"<option name='mannschaft' value='zweite'>II. Mannschaft</option>" .
"<option name='mannschaft' value='dritte'>III. Mannschaft</option>" .
"<option name='mannschaft' value='senioren'>Senioren</option>" .
"<option name='mannschaft' value='damen'>Damen</option>" .
"<option name='mannschaft' value='ajun'>A- Junioren</option>" .
"<option name='mannschaft' value='bjun'>B- Junioren</option>" .
"<option name='mannschaft' value='cjun'>C- Junioren</option>" .
"<option name='mannschaft' value='djun'>D- Junioren</option>" .
"<option name='mannschaft' value='ejun'>E1- Junioren</option>" .
"<option name='mannschaft' value='e2jun'>E2- Junioren</option>" .
"<option name='mannschaft' value='fjun'>F- Junioren</option>" .
"<option name='mannschaft' value='gjun'>G- Junioren</option>" .
"</select>";
echo "<td>" . "<input type='submit' value='Abschicken'>" . "</td></tr>";
echo "</table>"&#59;
echo "</form>";

} elseif ($action=="insert") {

echo "insert";

$sql="INSERT INTO bw_spieltag " .
"VALUES ('', '$_POST[spieltag]', '$_POST[wochentag]', '$_POST[tag]', '$_POST[monat]', '$_POST[jahr]'," .
"'$_POST[heim]', '$_POST[gast]', '$_POST[anstoss]', '$_POST[heimtore]', '$_POST[gasttore]', '$_POST[heimtore_hz]', '$_POST[gasttore_hz]', '$_POST[mannschaft]')";

echo $sql;
mysql_query($sql);

}
?>

</body>
</html>




Schaut mal ob Ihr damit was anfangen könnt. danke
 
also fexal, ich rekapituliere mal, ob ich dich richtig verstanden habe.

du gibst in einem formular an, wieviele datensätze du erstellen willst. bei 3 erhällst du auf der folgeseite ein formular mit den feldern 'titel1', 'info1', 'text1', 'titel2', 'info2', 'text2', 'titel3', 'info3', 'text3'. Mit dem Submit sollen dann 3 Datensätze erstellt werden, mit den spalten 'titel', 'info', 'text' in der tabelle.

Soweit richtig?

der gedanke mit der schleife ist naheliegend. du brauchst mal eine variable in der du die die anzahl ds merkst.

1. durchgang, insert alle felder mit zusatz 1
2. durchgang, insert alle felder mit zusatz 2
3. durchgang, insert alle felder mit zusatz 3

bei deinem formular ist mir aufgefallen, dass alle felder für 'heim' den selben namen haben. das geht natürlich nicht, jedes feld in einem form muss einen eindeutig eigenen namen haben

CODE
while ($i < $_POST['anzahl']) {
$i++;
echo "<input type='text' name='begriff".$i."' size='20'><br>
<TEXTAREA NAME='text".$i."' ROWS='5' COLS='40' WRAP='virtual'></TEXTAREA><br><br>
<input type='hidden' name='anzahl' value='$_POST[anzahl]'>
";
}




beim speichern der daten folgt nun das selbe 'while', jedoch mit dem 'insert'. das problem ist bei jedem durchlauf $_POST['text1'], $_POST['text2'] mit dem korrekten inhalt zu generieren. da bin ich noch am probieren...
 
so, den rest hab ich jetzt auch hingekriegt

CODE
$i=0;
while ($i < $_POST['anzahl']) {
$i++;
$query = "INSERT INTO daten".
" (begriff,text)".
" VALUES ".
"('".$_POST[begriff.$i]."','".$_POST[text.$i].
"') "&#59;
echo "<p>".$query;
//string übermitteln
$insertds = mysql_query($query);
}





habs getestet, bei mir funktioniert es
biggrin.gif

bei jedem durchlauf wird das entsprechende feld aus dem form eingesetzt.
 
Danke für die Hilfe, aber bin irgendwie mit deiner Antwort überfragt...
Könntest du es mir bitte noch ein bisschen näher erläutern.

Bin doch noch so jung in Sachen PHP und MySQL...

Danke Danny
unsure.gif
 
am besten du probierst es einfach selber aus. erstelle in deiner datenbank die tabelle 'daten'. z.b. in phpmyadmin folgenden code ausführen:

CODE
CREATE TABLE `daten` (
`begriff` varchar(50) collate latin1_german1_ci NOT NULL default '',
`text` text collate latin1_german1_ci NOT NULL,
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=1&#59;



erstelle eine neue seite mit dem namen 'multiform.php' und kopiere folgenden cor rein:


CODE
<a href="multiform.php">start</a>

<?php
$dbhost = 'localhost';
$dbname = 'datenbankname';
$dbuser = 'user';
$dbpasswd = 'passwort';
?>

<?php
$database = mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname, $database);
?>


<?php

if(isset($_GET['modus'])){
$modus = $_GET['modus'];
}else{
$modus = "anzahl";
}



if ($modus=="anzahl") {
?>
<form action="multiform.php?modus=form" method="post">
<input type="text" name="anzahl" size='2'>
<input type="submit" value="Formular">
</form>

<?php

}

elseif ($modus=="form") {

$i=0;


?><form action="multiform.php?modus=insert" method="post">
<?php
while ($i < $_POST['anzahl']) {
$i++;
echo "<input type='text' name='begriff".$i."' size='20'><br>
<TEXTAREA NAME='text".$i."' ROWS='5' COLS='40' WRAP='virtual'></TEXTAREA><br><br>
<input type='hidden' name='anzahl' value='$_POST[anzahl]'>
";
}

echo "<input type='submit' value='Abschicken'>";
echo "</form>";

}


elseif ($modus=="insert") {
echo "anz. ".$_POST['anzahl'];
$i=0;
while ($i < $_POST['anzahl']) {
$i++;
$query = "INSERT INTO daten".
" (begriff,text)".
" VALUES ".
"('".$_POST[begriff.$i]."','".$_POST[text.$i].
"') "&#59;
echo "<p>".$query;
//string übermitteln
$insertds = mysql_query($query);
}




echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=multiform.php?modus=glossar\">";


}
?>



<?php
if ($modus == 'glossar'){
$sql = "SELECT *".
" FROM daten".
" ORDER BY begriff ASC";
$result = mysql_query ($sql);
$num_rows = mysql_num_rows($result);
$i = 1;
?>
<table border="0" cellspacing="0" cellpadding="0">

<?php
while($results = mysql_fetch_array($result,MYSQL_BOTH))
{
?>
<tr>
<td valign="top"><a name="<?php echo $results[begriff];?>"></a><p class="begriff"><?php echo $results[begriff];?></td>
<td><img src="../img/eff/leer.gif" width="30" height="1" border="0"></td>
<?php

?>

<td valign="top"><p class="text"><?php //echo autoLink($str);?><?php echo str_replace(chr(10),"<br>",$results[text]);?></td>
<td><img src="../img/eff/leer.gif" width="30" height="1" border="0"></td>
<td valign="top"><p class="text"><a href="index.php?modus=edit&id=<?php echo $results[id];?>" class="link"><img src="../img/buttons/ok.gif" border="0"></a></td>
<td valign="top"><p class="text"><a href="index.php?modus=del&id=<?php echo $results[id];?>" class="link"><img src="../img/buttons/del.gif" border="0"></a></td>
</tr>
<tr>
<td colspan="6"><img src="../img/eff/black.jpg" width="100%" height="1" border="0"></td>
</tr>

<?php
$i ++;
}//endwhile
?>

</table>
<?php }?>


<?php
mysql_close($database);
?>



Nun kannst du es testen wie es sich verhällt
 
Alles klar, werde es mal testen, aber jetzt nicht mehr. Seh schon nur noch Quelltext... *g*

Danke erst mal. Werde wieder posten, wenn ich nicht weiter weiß.

Gutes Nächtle
 
Zurück
Oben