Tabelle dynamisch erzeugen

Armageddon

Grünschnabel
Hallo ihr PHP-Worker

Ich bin etwas fortgeschritten im Umgang mit PHP,doch nun bin ich wohl an meine Grenzen gestoßen.Ich habe es schon hinbekommen, das ich bei einer Tabelle dynamisch die Zeilen hinzufügen kann.
JETZT MEINE FRAGE AN EUCH!!!

Ich habe eine Zeile , die dank PHP immer wieder unten angefügt wird( mittels Couter und get). Aber in jeder Zeile soll ein <input name="" type="text"> erscheinen. Wenn ich jetzt also 10 Zeilen da stehen habe, sind die Variablen der Texte ja immer gleich. Wie kann ich das ändern! Bitte beachtet, das wenn ich eine Zeile neuhinzufüge, die Daten die in den alten Zeile schon stehen noch dableiben sollen!
Ich füge diesem Hilfeschrei mal meinen Quellcode bei und hoffe das ihr mir helfen könnt!!!

PHP:
<? session_start(); ?>
<form action="<? php_self ?>" method="get">
<? if($del)
	{$anzahl--;}
	elseif($add)
	{$anzahl++;}
	echo "$anzahl";
?>
<table width="100%" border="1">
<?
for($table_zeile="1";$table_zeile<=$anzahl;$table_zeile++)
{
echo"
<tr>
	<td align=\"center\" ><input name=\"uebung\" type=\"text\" id=\"uebung\" value=\"$uebung\" width=\"100%\"></td>
</tr>
";}
?>
</table>
<table width="100%" border="0">
<tr>
	<td width="90%"align="right"colspan="2"><input name="del" type="submit" value="Übung entfernen"></td>
	<td width="10%"align="right"><input name="add" type="submit" value="Übung hinzuf&uuml;gen"></td>
</tr>
</table>
</form>
 
Zuletzt bearbeitet von einem Moderator:
Ich garantiere dir, dass es nicht die einfachstmögliche Form ist, aber folgender Grundgedanke sollte dich weiterbringen:
PHP:
<? session_start(); ?>
<form action="<? php_self ?>" method="get">
<? if($del)
{$anzahl--;}
elseif($add)
{$anzahl++;}
echo "$anzahl";

$prefix = "uebung";

$uebung1 = "1";
$uebung2 = "2";
$uebung3 = "3";
$uebung4 = "4";
$uebung5 = "5";
$uebung6 = "6";
$uebung7 = "7";
$uebung8 = "8";
$uebung9 = "9";
$uebung10 = "10";

?>
<table width="100%" border="1">
<?
for($table_zeile=1;$table_zeile<=$anzahl;$table_zeile++) {
	$temp = $prefix . $table_zeile;
?>
<tr>
  <td align="center" ><input name="uebung" type="text" id="uebung" value="<?=$$temp?>" width="100%"></td>
</tr>
<?
}
?>
</table>
<table width="100%" border="0">
<tr>
<td width="90%"align="right"colspan="2"><input name="del" type="submit" value="Übung entfernen"></td>
<td width="10%"align="right"><input name="add" type="submit" value="Übung hinzufügen"></td>
</tr>
</table>
</form>
hth,
Geist
 
So einfach ist es nun auch wieder nicht!!!

Danke erstmal für deine schnelle Antwort. Dennoch muss ich dich leider entäuschen. Eine so ähnliche Variante habe ich auch schon einmal durchgespielt. Mir geht es ja darum, das ich in zeile 1 einen Wert eintragen kann, denn eine Zeile hinzufüge ABER DER WERT IN ZEILE 1 IMMER NOCH DA IST!!!Ich kann also keine festen Variablen nehmen! Ich komme immer wieder in den Konflikt, das ich eine neue Variable bestimmen muss, der einen neuen Wert hinzufüge und sie denn anschließend wieder ausgebe. Ich bin Trainer beim TSV 1860 Stralsund im Bereich Gewichtheben. Mein Ziel ist es, einen Trainingsplan für meine Sportler zu entwerfen.


PS: Ich habe gesehen,das ich ein Fehler gemacht habe. Natürlich muss ich noch ein auf

<?
session_register ("anzahl");
?>

machen!
 
Ich versteh dein Problem nicht ganz.
Das was ich versteh:
Einen Trainingsplan für Sportler zu entwerfen.
Was soll dan diese Seite werden? Die eingabemaske?
Ich hoffe du bist dir im klaren, dass die Daten ja auch irgendwie gespeichert werden müssen, sei es in einer Datei, oder in einer Datenbank.

Nun, was brauchst du?
Eine Eingabemaske?
Kannst dun dasProblem bitte etwas genauer erklären?


//Edit: Kleine Anmerkung:
Versuch mal für register_globals=off zu programmieren und vermeide sessio_register, sondern nehm gleich das Array _SESSION
 
Antwort

Ja klar muss das eine Eingabemaske werden.
Wenn denn alle Werte eingegeben sind, werden sie als Text noch einmal wiedergegben und denn in eine Datenbank gespeichert!
Das Prinzip hast du schon Verstanden, es soll also getreu dem EVA Prinzip ablaufen ( Eingabe Verarbeitung Ausgabe) und da mann ja nunmal net mit den Ende anfängt soll jetzt er einmal ne seite kommen, wo die gesamten Daten eingetragen werden können.
Ich hoffe du kannst mir weiter helfen!
 
also irgendwie kann ich dein Problem auch nicht ganz nachvollziehen...
willst du quasi dynamisch eine bestimmte Anzahl an Inputs (jedes mit eigenem Wert / eigener Bezeichnung) erstellen?!
Dafür würde ich mit Arrays arbeiten...
So brauchst du quasi nur eine Variable / ein Arry, das gleich mehrere Werte annehmen kann, ohne, dass die anderen Werte verlorgen gehen.
Beispielsweise wird der Wert des 1. Inputs in $array[0] gespeichert, der des 2. in $array[1] etc.
Danach einfach die Werte des Arrays zählen und mit ner FOR-Schleife alles nacheinander ausgeben lassen.

Sorry, wenn ich den Kern deiner Frage jetzt nicht getroffen habe, aber vielleicht könntest du das Ganze nochmal in einem Stück und detailliert darstellen :)
 
Ich habe leider noch nie zuvor mit arrys gearbeitet. Könnte vieleicht einer mir denn mal das zeigen wie das aussehen würde?
Also hier noch einmal die Fakten:
-eine Tabelle
-dynamische Zeilen hinzufügung
-in jeder zeile kommen ca 8 textfelder
-jedes textfeld muss später wieder ausgegeben werden können
-sprich die eingetragenen Werte müssen gespeichert werden.

Probleme:

-wenn ich die zeile2 hinzufüge,haben die textfelder die gleichen variablennamen wie in zeile1

So ich hoffe ihr habts jetzt etwas besser verstanden und könnt mir helfen!!! Bitte!!!
 
ich geselle mich mal zu den Leuten die es nicht verstehen warum du erst Daten sammelst um sie dann in ein DB zu speichern ... am einfachtsten ist es doch
das zu kombinieren -
sprich 1 daten satz eingeben - in DB Speichern, anzeigen der bisher eingegebenen daten und das widerholen.

--------

Aber auch so wie du es vorhast geht es :-)

PHP:
$wertin = $_GET['wertin'];

echo "<form>";
for ($lo=0;$lo<sizeof($wertin);$lo++) {
 echo "<input type=text name='wertin[]' value='".$wertin[$lo]."'>\n"; 
}
echo "<input type=text name='wertin[]'>";
# der trick sind die eckigen klammern damit machst du ein array
echo "</form>";
 
Zurück