-
checkbox auswerten
so; auch wenn es peinlich ist, aber ich rätsle nun schon stundenlang und komme nicht drauf wie ich mein problem lösen kann; darum frage ich wieder mal hier nach:
mit folgendem skript lese ich die dateinamen eines ordners aus und stelle sie mit einer checkbox versehen dar:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang=de>
<head>
<body>
<form method="post" action="show.php" enctype="multipart/form-data">
<?php
// arraycount
$count=0;
$tree = dir("lessons");
while ($data = $tree->read())
{
$count++;
}
$filenumber = ($count - 2);
// dir
$folder = opendir("lessons");
$number = array();
while ($file = readdir ($folder))
{
if ($file != "." && $file != "..")
{
echo '<p><input type="checkbox" name="'.$file.'" value="1">'.$file.'</p>';
}
}
echo '<input type="submit" name="submit" value="show">'
?>
</form>
</body>
</head>
btw: oben wird auch noch die anzahl der datein im ordner berechnet!
soweit so gut; das funktioniert noch. mit name="'.$file.'" wird der checkbox auch der richtige name zugewiesen (schaut in html dann so aus: name="20.9.05" --20.9.05 ist einfach ein dateiname)
nun möchte ich in der datei show.php die ausgewählten dateien anzeigen lassen:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang=de>
<head>
<body>
<?php
if (isset($HTTP_POST_VARS['$file']))
{
echo $HTTP_POST_VARS['$file'];
echo 'test';
}
?>
</body>
</html>
das mit dem datei auslesen müsste ich dann schon schaffen; mein problem bis jetzt ist noch das auch wenn ich alle checkboxen anhacke ich in der show.php keine einzige ausgabe bekomme.
statt $HTTP_POST_VARS['$file'] hab ich auch schon $HTTP_POST_VARS[$file] und $HTTP_POST_VARS["$file"] probiert; funktioniert alles nicht!
weiß jmd vllt was ich anders machen muss / wie ich mein problem lösen kann;
ich hoffe ich erwecke nicht den anschein das ich bei jedem *cheiß gleich um hilfe rufe; aber ich hab wirklich schon selber (auch mit suchmaschinen und büchern) probiert mein problem zu lösen, leider hatte ich dabei als programmier und php anfänger keinen erfolg.
cu
CHristoph
-
ich würde dir eine andere vorgehensweise empfehlen, weil du mit name eine nicht kontrollierbare situation hervorrufst.
verwende lieber so ein konstrukt:
Code:
echo '<p><input type="checkbox" name="file[]" value="'.$file.'">'.$file.'</p>';
dann müsste in
$_POST[file]
ein array drin sein...
greetz
ps: habe so ein konstrukt mal verwendet als globals noch on waren... aber ein versuch ist es wert
-
Hallo zaunmayrchris,
gib dir doch mal $HTTP_POST_VARS mit print_r() aus. Würde dir auch die Methode von quinte17 empfehlen.
@quinte17
Ja $_POST["file"] (bzw. $HTTP_POST_VARS) ist dann korrekt.
Gruß,
nEox
-
so; hab es nun dank eurer hilfe so gelöst:
dir.php:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang=de>
<head>
<body>
<form method="post" action="show.php" enctype="multipart/form-data">
<?php
// arraycount
$count=0;
$tree = dir("lessons");
while ($data = $tree->read())
{
$count++;
}
$filenumber = ($count - 2);
// dir
$folder = opendir("lessons");
$file = array();
$i = 1;
while ($file = readdir ($folder))
{
if ($file != "." && $file != "..")
{
echo '<p><input type="checkbox" name="selected['.$i.']" value="'.$file.'">'.$file.'</p>';
$i++;
}
}
echo '<input type="submit" name="submit" value="show">';
echo '<input type=hidden name=file value="'.$file.'">'
?>
</form>
</body>
</head>
und die show.php:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang=de>
<head>
<body>
<?php
//shwo selected lessons
$counted = count($HTTP_POST_VARS["selected"]) + 1;
for($i=1; $i < $counted; $i++)
{
$file = $HTTP_POST_VARS["selected"][$i];
$fp = fopen("./lessons/$file","r");
echo $HTTP_POST_VARS["selected"][$i].'<br>';
echo '<table border="1">';
echo '<colgroup width="280" span="2"></colgroup>';
echo '<tr><th>italienisch</th>';
echo '<th>deutsch</th></tr>';
$zeile = fgets($fp, 1000);
$arzeile = explode(';', $zeile);
if($fp)
{
while(!feof($fp))
{
$zeile = fgets($fp, 1000);
$arzeile = explode(';', $zeile);
echo '<tr><td>'.$arzeile[0].'</td>';
echo '<td>'.$arzeile[1].'</td>';
}
echo '</table><br>';
fclose($fp);
}
}
?>
</body>
</html>
in der dir.php kann man auswählen welche dateien angezeigt werden sollen; und in der show.php werden die daten der datei dann in einer tabelle angezeigt.
cu
CHristoph