PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : checkbox auswerten



zaunmayrchris
21-09-2005, 20:20
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:

<!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:

<!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

quinte17
22-09-2005, 07:21
ich würde dir eine andere vorgehensweise empfehlen, weil du mit name eine nicht kontrollierbare situation hervorrufst.

verwende lieber so ein konstrukt:



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

nEox
22-09-2005, 17:44
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

zaunmayrchris
23-09-2005, 00:56
so; hab es nun dank eurer hilfe so gelöst:
dir.php:

<!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:

<!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