spaties bij post
In de web map van de home server, heb ik nu een map geplaatst met de excel bestanden. In die map heb ik een zoek script geplaatst die alle xls bestanden via <form action="excelopenen.php" method="post"> aanbied. Door nu op een knop met het gewenste bestand te drukken, wordt die link geopend. Maar als er een spatie in de file naam zit dan wordt wel het deel tot de spatie door gegeven maar verder niets. KM opgave.xls en KMopgave.xls kan het zelfde bestand zijn maar KM opgave.xls geeft KM door. Op te lossen met $file2 = str_replace(" ", "%20",$file); werkt niet en ook i.p.v. %20 door $nmbs geeft een niet juiste filenaam aanroep. Post geeft dan niet de volledige file door.
Dat is te controleren door in Excelopenen.php >> ini_set('display_errors', 0); // 0 = uit, 1 = aan
error_reporting(E_ALL);
if(isset($_POST['keuze'])){$keuze= $_POST['keuze'];}
foreach($_POST as $file=>$value)
echo $keuze;
Dan krijg ik bij $keuze te zien wat er aangeboden werd. En dan zie ik een duidelijk verschil als ik KM opgave.xls of KMopgave.xls als naam gebruik voor de file.
Andere mensen maken die Excel bestanden, en het is veel te lastig om al die namen te veranderen.
De vraag is dan ook hoe kan ik de file naam van een bestand Posten zodat ik ook de spaties kan meenemen?
Dus gevonden naam KM opgave.xls, toch KM opgave.xls opent.
<input name="foo" value=dit gaat vast mis>
<input name="foo" value="met quotes gaat het beter">
(voor zover ik je verhaal zonder code begrijp)
dump anders ook eens in je script $_POST met print_r of var_dump om te zien wat er nu werkelijk gepost wordt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$dir = "."; // de directory die hij uit moet lezen
$exten = 'xls'; // de extensie die hij weer moet geven
if ($handle = @opendir($dir))
{
$volgnummer=0;
echo '<form action="excelopenen.php" method="post">';
echo "<table><tr>";
while (false != ($file = @readdir($handle)))
{
$bestand = $dir ."/". $file ;
//echo $bestand."<br>";
$ext = pathinfo($bestand);
if($ext['extension'] == 'xls')
{
$locatie=$_SERVER['DOCUMENT_ROOT'];
// vervang spaties door   %20
$file2 = str_replace(" ", "%20", $file);
//
//echo '<td><INPUT class="knop" type="submit" size="35" name="keuze" value="'.$_POST[$file].'">';
echo '<td><input class="knop" type="submit" name="keuze" value='.$file2.'>';
echo $file."</td>";
if ($volgnummer>4){echo "";$volgnummer=-1;echo "</tr><tr>";}
$volgnummer++;
}
}
echo "</tr></table>";
@closedir($handle);
echo "</form>";
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$dir = "."; // de directory die hij uit moet lezen
$exten = 'xls'; // de extensie die hij weer moet geven
if ($handle = @opendir($dir))
{
$volgnummer=0;
echo '<form action="excelopenen.php" method="post">';
echo "<table><tr>";
while (false != ($file = @readdir($handle)))
{
$bestand = $dir ."/". $file ;
//echo $bestand."<br>";
$ext = pathinfo($bestand);
if($ext['extension'] == 'xls')
{
$locatie=$_SERVER['DOCUMENT_ROOT'];
// vervang spaties door   %20
$file2 = str_replace(" ", "%20", $file);
//
//echo '<td><INPUT class="knop" type="submit" size="35" name="keuze" value="'.$_POST[$file].'">';
echo '<td><input class="knop" type="submit" name="keuze" value='.$file2.'>';
echo $file."</td>";
if ($volgnummer>4){echo "";$volgnummer=-1;echo "</tr><tr>";}
$volgnummer++;
}
}
echo "</tr></table>";
@closedir($handle);
echo "</form>";
}
?>
Daarna het deel wat de data aangeboden krijgt als de knop ingedrukt is. Nu wordt de data aangeboden en wordt het Excel programma geopend.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
ini_set('display_errors', 0); // 0 = uit, 1 = aan
error_reporting(E_ALL);
if(isset($_POST['keuze']))
{
$keuze= $_POST['keuze'];
}
foreach($_POST as $file=>$value)
$keuze2 = str_replace("%20", " ", $file);
echo $keuze2;
echo $keuze;
// We'll be outputting a xls
//header('Content-type: application/xls');
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename='$keuze'");
// The xls source is in original.xls
readfile($keuze);
?>
ini_set('display_errors', 0); // 0 = uit, 1 = aan
error_reporting(E_ALL);
if(isset($_POST['keuze']))
{
$keuze= $_POST['keuze'];
}
foreach($_POST as $file=>$value)
$keuze2 = str_replace("%20", " ", $file);
echo $keuze2;
echo $keuze;
// We'll be outputting a xls
//header('Content-type: application/xls');
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename='$keuze'");
// The xls source is in original.xls
readfile($keuze);
?>
Dat openen gaat goed behalve als de titel van de data een spatie bevat.
Je hebt me geholpen. Dat werkt inderdaad.
Bedankt