spaties bij post

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

E Ander

E Ander

20/01/2015 09:10:48
Quote Anchor link
Omdat in Windows8 de home server niet meer wordt ge-indexeerd en ik op die home server heel veel excel bestanden heb staan, ben ik begonnen met een simpel zoek en bied aan scriptje.
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.
 
PHP hulp

PHP hulp

23/12/2024 09:02:02
 
Ivo P

Ivo P

20/01/2015 09:18:32
Quote Anchor link
dit lijkt op het probleem als:

<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.
 
G P

G P

20/01/2015 11:38:27
 
E Ander

E Ander

21/01/2015 17:29:32
Quote Anchor link
Ok hier het scriptdeel om de inhoud van de directory in te lezen en als knop aan te bieden. Het is nog allemaal in de test fase en wordt later afgewerkt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 &nbsp %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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>

Dat openen gaat goed behalve als de titel van de data een spatie bevat.
 
Ivo P

Ivo P

21/01/2015 17:48:43
Quote Anchor link
wat ik dus zei: geen "" op je value:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
//niet:
 echo '<td><input class="knop" type="submit" name="keuze" value='.$file2.'>';
// maar:
 echo '<td><input class="knop" type="submit" name="keuze" value="'.$file2.'">';

?>
 
E Ander

E Ander

22/01/2015 09:57:06
Quote Anchor link
Ivo,
Je hebt me geholpen. Dat werkt inderdaad.
Bedankt
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.