Lieber Fiffi,
$namen = array(
array('Hans','1'),
array('Paul','0'),
array('Karl','0'),
array('Willi','1'),
array('Otto','1'),
);
warum kein assoziatives Array? Außerdem ist es nicht sinnvoll, die numerischen Werte (hier null und eins) in Anführungszeichen zu schreiben und sie künstlich zu Strings machen zu wollen. Damit ließe es sich so leichter arbeiten:
$namen = array(
'Hans' => 1,
'Paul' => 0,
'Karl' => 0,
'Willi' => 1,
'Otto' => 1
);
echo "<form action=\"name_config.php\" method=\"get\">";
Warum benutzt Du keine Template-Schreibweise? Lagere den HTML-Code in eine echte HTML-Datei aus, die Du in PHP einliest, um dann an entsprechender Stelle die passenden Inhalte zu ergänzen. Du kannst später dann den kompletten HTML-Code mit einem finalen echo an den Browser ausgeben, anstatt in häppchenweise auszuliefern, was in bestimmten Fällen (z.B. beim Arbeiten mit geänderten header-Daten) eine zwingende Notwendigkeit ist.
$html = file_get_contents('template.html');
foreach ($namen as $key => $val){
echo "
<form action="name_config.php" method="get">"
Warum erzeugst Du für jeden Namen ein eigenes Formular? Du kannst doch alle Namen in einem einzigen Formular abhandeln! Vielleicht erklärt das bereits Dein eigentliches Problem...?
Deine HTML-Struktur würde ich auch konsequenter gestalten. Du willst doch eine Tabelle mit "Name | aktiv?" als Spalten. Dann gestalte das doch auch so:
~~~html
<table>
<tr><th>Name</th><th>aktiv</th></tr>
<tr><td>Hans</td><td><input type="checkbox" checked="checked" /></tr>
...
</table>
Und damit wären wir bei der Template-Datei:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Spielerübersicht</title>
<style type="text/css">/*<![CDATA[*/
#spieler-uebersicht,
#spieler-uebersicht td,
#spieler-uebersicht th {
border: 1px dotted black;
border-collapse: collapse;
}
#spieler-uebersicht th {
background: #aaaaaa;
}
*/]]>*/</style>
</head>
<body>
<h1>Spieler-Übersicht</h1>
<form action="name_config.php" method="post">
<table id="spieler-uebersicht">
<tr><th>Name</th><th>aktiv</th></tr>
</table>
</form>
</body>
</html
So, nun kann man mit PHP diese HTML-Datei befüllen:
$html = file_get_contents('template.html');
foreach ($namen as $name => $aktiv) {
$zeile = sprintf(
"\t\t\t\t"
. '<tr><td>%s</td><td><input name="box[%s]" checked="s" /></td>'
. "</tr>\r\n",
htmlspecialchars($name), // [link:http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel@title=kontextgerechtes Enkodieren!]
htmlspecialchars($name),
($aktiv ? 'checked' : '')
);
// vor </table> in den Quelltext einpassen
$html = preg_replace('~(?is)([ \t]+</table>)~', "$zeile$1", $html);
}
// alles an den Browser ausgeben
echo $html;
Den Code habe ich jetzt nicht überprüft, es könnten noch Fehler enthalten sein. Aber die generelle Denkweise dahinter sollte klar geworden sein.
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)