[php] txt bestand opslaan op de pc i.p.v server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • WebTwister
  • Registratie: November 2001
  • Laatst online: 27-08-2024
Hallo beste tweakers,

Ik heb wil dat er vanuit een database gegevens in een textbestand worden gezet en dat dat bestand niet op de server, maar op een pc worden opgeslagen.

het liefst met voorafgaand een validatie scherm waar het bestand opgeslagen moet worden.

Nu is het maken van dat tekstbestand niet zo'n probleem, maar hoe zorg ik ervoor dat het bestandje op de pc wordt opgeslagen?

er zijn bij tweakers geen topics over... tenminste mij zoektocht leverde weinig op.

Acties:
  • 0 Henk 'm!

  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 15-09 17:06
De gebruiker het laten opslaan? Met PHP kan je sowieso geen bestandjes opslaan op de client. En anders cookies?

Skat! Skat! Skat!


Acties:
  • 0 Henk 'm!

Verwijderd

Als je het als een download aanbied, dan kan de gebruiker zelf de locatie kiezen.

Toch even iets meer info:

Maak het bestand aan op de server en maak met de volgende HTML de download direct beschikbaar voor de gebruiker:
code:
1
2
3
4
5
6
7
<html>
<head>
<meta HTTP-EQUIV="refresh" CONTENT="0; URL=output.txt">
</head>
<body>
</body>
</html>

[ Voor 63% gewijzigd door Verwijderd op 23-05-2004 21:36 ]


Acties:
  • 0 Henk 'm!

  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Ja misschien een of ander alternatief MIME type instellen zodat de browser altijd aanbiedt het bestand op te slaan in plaats van direct te openen.

Remember, if you have any trouble you can always send a telegram to the Right People.


Acties:
  • 0 Henk 'm!

  • WebTwister
  • Registratie: November 2001
  • Laatst online: 27-08-2024
Ik heb het opgelost door middel van header informatie mee te geven:
ik heb geekozen voor .csv ipv .txt omdat het iets chiquer was, maar het kan natuurlijk ook met .txt

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$datum = date("[YmdHis]");
$naam = "export-bezoekers_$datum";
$file = "$naam.csv";    
        
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$file"); 
        
$getGegegevens = mysql_query("SELECT * FROM tabel");
while $gegevens = mysql_fetch_array($getGegegevens);

echo "$gegevens[cell]";
                                

}

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

WebTwister schreef op 24 mei 2004 @ 13:18:
Ik heb het opgelost door middel van header informatie mee te geven:
ik heb geekozen voor .csv ipv .txt omdat het iets chiquer was, maar het kan natuurlijk ook met .txt
Misschien handig als je je code netjes houdt zonder notice-opwekkende code. ;)

PHP:
1
echo $gegevens["cell"];

Bovendien missen er haakjes in je while en blocktags erna (zoals Papa Eend al zegt. :P)

[ Voor 12% gewijzigd door NMe op 24-05-2004 13:58 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

NMe84 schreef op 24 mei 2004 @ 13:50:
[...]

Misschien handig als je je code netjes houdt zonder notice-opwekkende code. ;)

PHP:
1
echo $gegevens["cell"];
Die code werkt überhaupt niet... { }

En nog een tipje: als je gaat werken met het forcen van downloads In IE ga je geheid problemen krijgen. Geef in ieder geval altijd een content-length mee! Echo je zut dus niet on-the-fly, maar append een string var, waarvan je de length pakt voor de content-length :)

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • WebTwister
  • Registratie: November 2001
  • Laatst online: 27-08-2024
[quote]Papa Eend schreef op 24 mei 2004 @ 13:55:
[...]

Die code werkt überhaupt niet... { }
[quote]

die code werkt wel degelijk, ik heb namelijk de code ter weergave even snel aangepast om te laten zien hoe het werkt en wat ik bedoel.

Zoals ik het heb gemaakt is het namelijk al operationeel. ;)
ik zal de eigenlijke code hieronder even posten (en geen commentaar waarom ik bepaalde dingetjes niet netjes heb opgelost...want dat weet ik ;))
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function exportTellers(){
            
$datum = date("[YmdHis]");
$naam = "export-bezoekers_$datum";
$file = "$naam.csv";    
        
  header("Content-type: application/force-download");
  header("Content-Disposition: attachment; filename=$file"); 
        
  echo "\"$file\" \n\n";
  echo ";\"aantal\";\"soort\";\"prijs\";\"merk - type\" \n\n";

  $getTeller = mysql_query("SELECT * FROM tellers ORDER BY teller DESC");
    while ($teller = mysql_fetch_array($getTeller)){
        $getCars = mysql_query("SELECT * FROM occasion2 WHERE autoid = '$teller[autoid]'");
        $cars = mysql_fetch_array($getCars);
 
        echo ";\"$teller[teller]\";\"$cars[soort]\";\"$cars[prijs]\";\"$cars[automerk] - $cars[autotype]\"\n";
    }
}

[ Voor 11% gewijzigd door WebTwister op 25-05-2004 09:45 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

WebTwister schreef op 25 mei 2004 @ 09:43:
(en geen commentaar waarom ik bepoaalde dingetjes niet netjes heb opgelost...want dat weet ik ;))
Misschien een heel gekke vraag, maar als je weet dat je iets niet netjes opgelost hebt, waarom los je het dan niet wèl netjes op?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • WebTwister
  • Registratie: November 2001
  • Laatst online: 27-08-2024
NMe84 schreef op 25 mei 2004 @ 09:45:
[...]

Misschien een heel gekke vraag, maar als je weet dat je iets niet netjes opgelost hebt, waarom los je het dan niet wèl netjes op?
ach ja wat zal ik daarop zeggen, gebrek aan ervaring is 1,
gebrek aan goede hulp en duidelijke antwoorden is 2,
tijdsdruk is 3

maar vooruit als er commentaar is brand maar los....kan ik gelijk weer wat leren

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

WebTwister schreef op 25 mei 2004 @ 09:59:
ach ja wat zal ik daarop zeggen, gebrek aan ervaring is 1,
Dat is geen excuus, want je weet blijkbaar dat het niet helemaal goed zit. ;)
WebTwister schreef op 25 mei 2004 @ 09:59:
gebrek aan goede hulp en duidelijke antwoorden is 2,
Programmeren moet je zelf leren, net zoals iedereen. Hulp is altijd welkom maar je moet er niet van afhankelijk zijn. ;)
WebTwister schreef op 25 mei 2004 @ 09:59:
tijdsdruk is 3

maar vooruit als er commentaar is brand maar los....kan ik gelijk weer wat leren
Met alle liefde. :)

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
function exportTellers(){
  // Zet headers altijd zo hoog mogelijk, zo voorkom je dat je er per ongeluk output boven zet          
  header("Content-type: application/force-download");
  header("Content-Disposition: attachment; filename=$file"); 
        
  $datum = date("[YmdHis]");
  $naam = "export-bezoekers_$datum";
  $file = "$naam.csv";

  $temp = "\"$file\" \n\n";
  $temp .= ";\"aantal\";\"soort\";\"prijs\";\"merk - type\" \n\n";

  //jouw probleem kon makkelijk met één query, door te joinen
  $query = mysql_query("SELECT * FROM tellers, occasion2 WHERE tellers.autoid = occasion2.autoid ORDER BY teller DESC");
  while ($teller = mysql_fetch_array($query)){
    //de index van een array moet gequote worden; als je error_reporting(E_ALL)
    //zou hebben ingesteld, kreeg je een notice
    $temp .= ";\"".$teller["teller"]."\";\"".$teller["soort"]."\";\"".$teller["prijs"]."\";\"".$teller["automerk"]." - ".$teller["autotype"]."\"\n";
  }

  //Speciaal voor Papa Eend en Basszje ;)
  header("Content-Length: ".strlen($temp)); 

  //nog maar één echo --> sneller
  echo $temp;
}

[ Voor 35% gewijzigd door NMe op 25-05-2004 11:22 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 09:08

Basszje

Reisvaap!]

Papa Eend schreef op 24 mei 2004 @ 13:55:
En nog een tipje: als je gaat werken met het forcen van downloads In IE ga je geheid problemen krijgen. Geef in ieder geval altijd een content-length mee! Echo je zut dus niet on-the-fly, maar append een string var, waarvan je de length pakt voor de content-length :)
Inderdaad wat een ellende is dat zeg. Vooral de 5.x browsers hebben hier echt veel problemen mee. Geef ook na de download een exit() statement mee voor de zekerheid en zorg ervoor dat er geen rare enters ergens nog in je code staan, anders gaat de output ook verkeerd.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Acties:
  • 0 Henk 'm!

  • WebTwister
  • Registratie: November 2001
  • Laatst online: 27-08-2024
[b][message=20821926,noline]NMe84 schreef op 25 mei 2004 @ 10:19
Met alle liefde. :)
Nou bedankt, hier heb ik tenminste wat aan! ik zal het vanavond even aanpassen...
klasse gast!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

WebTwister schreef op 25 mei 2004 @ 13:58:
Nou bedankt, hier heb ik tenminste wat aan! ik zal het vanavond even aanpassen...
klasse gast!
Niet vergeten te backuppen he, ik heb nix getest. :P Het kan zijn dat die query wat tweaks nodig heeft als je bijvoorbeeld twee dezelfde veldnamen hebt in de twee gebruikte tabellen, maar daar kom je wel uit. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1