PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle dynamisch aus Array erzeugen



FlorianL
28-08-2007, 09:17
Moin zusammen :]

Ich habe 2 Pages, die eine ist die eingabemaske in der dynamisch (durch js realisiert) neue form-textfelder hinzugefügt werden. Die 2. Page soll aus den Übergebenen Werten ne Tabelle bauen.

Ich bin soweit das ich die forms in ein array speicher, nun will ich sie nacheinander speichern, mit meiner foreach-lösung geht das natürlich nicht, ich zeig euch mal den code:




[...]
<table width="1000" border="1">
<tr>
<td width="756"><div align="center"><strong>Thema</strong></div></td>
<td width="45"><div align="center"><strong>Aktion</strong></div></td>
<td width="82"><div align="center"><strong>Bearbeitung</strong></div></td>
<td width="89"><div align="center"><strong>Termin</strong></div></td>
</tr>
<tr>
<td>Fr&uuml;h/Sp&auml;tdienst kommende Woche</td>
<td><div align="center">A</div></td>
<td><div align="center">Alle</div></td>
<td><div align="center">Heute</div></td>
</tr>
<tr>
EOT;
foreach ($_POST['thema'] as $k) {
print "<td>$k</td>";
}
foreach ($_POST['aktion'] as $a) {
print "<td>$a</td>";
}
foreach ($_POST['bearbeitung'] as $b) {
print "<td>$b</td>";
}
foreach ($_POST['termin'] as $t) {
print "<td>$t</td></tr>";
}

echo "</table>";


wie kann ich es realisieren das jedes array element nur einmal in die tabelle geschrieben wird, und zwar so:



-------------------------------------------------------
|thema1 | aktion1 | bearbeitung1 | termin1 |
-------------------------------------------------------
|thema2 | aktion2 | bearbeitung2 | termin2 |
-------------------------------------------------------
usw.


bei meinem code schreibt er irgendwie alles immer wieder in die zeilen, klar bei foreach.. aber hat jemand nen rat dazu?

Pingu
28-08-2007, 09:54
Dein Problem ist, dass für diese Aktion Deine Daten nicht optimal organisiert sind. Was Du möchtest ist nicht jedesmal eine einzelne Schleife, sondern eine einzige Schleife (über alle Zeilen). Eine Variante auf die Schnelle wäre von mir:
foreach ($_POST['thema'] as $key -> $thema)
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
$thema,
$_POST['aktion'][$key],
$_POST['bearbeitung'][$key],
$_POST['termin'][$key]);

FlorianL
28-08-2007, 10:21
hi pingu, danke schonmal für deine hilfe, ich bekomme bei deinem code jedoch diesen fehler:

Fatal error: Cannot access empty property in /usr/local/apache2/htdocs/post.php on line 74

line 74 ist halt der start deines codes:


foreach ($_POST['thema'] as $key -> $thema) {
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
$thema,
$_POST['aktion'][$key],
$_POST['bearbeitung'][$key],
$_POST['termin'][$key]);
}

Pingu
28-08-2007, 10:30
Ich habe geschrieben "auf die Schnelle". Ich bin nicht fehlerfrei. Wobei einen solchen Fehler auch Du erkennen müsstest. Denn es muss richtig lauten:
foreach ($_POST['thema'] as $key => $thema)
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
$thema,
$_POST['aktion'][$key],
$_POST['bearbeitung'][$key],
$_POST['termin'][$key]);

FlorianL
28-08-2007, 10:39
Danke nochmal, wollte dich aber keinesfalls irgendwie angreifen deswegen :)

aber leider hast du unrecht... ich bin noch ganz am anfang was php angeht, ich habe den fehler zwar jetzt lokalisiert, aber selbständig gelöst hätt ichs wohl nicht :]

naja... nun läuft es ja... danke nochma! :)

BLUESCREEN3D
28-08-2007, 14:02
Da die Daten von außerhalb kommen, solltest du noch darauf achten, dass es keine Cross-Site-Scripting-Sicherheitslücke (http://de.wikipedia.org/wiki/Cross-Site_Scripting) gibt, indem du die einzelnen Variablen z.B. per htmlentities() escapest:


foreach ($_POST['thema'] as $key => $thema)
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
htmlentities($thema),
htmlentities($_POST['aktion'][$key]),
htmlentities($_POST['bearbeitung'][$key]),
htmlentities($_POST['termin'][$key]));