Volledige versie bekijken : hoe txt bestand leegmaken met één druk op de knop???
dribs
%Europe/Berlin %773 %2007, 19:34
Beste,
Eerst en vooral ben ik echt een n00b in PHP.
Ik zou graag door een druk op een knop of prent een bestaand txt bestand ledigen.
Ik ben opzoek geweest op het internet en ik ben beginnen puzzelen.
U raadt het al, het werkt niet.
Graag had ik jullie hulp.
<? php
if ( isset ( $_POST['leegmaken'] ) ){
$Bericht = "";
if(!$fp = fopen("gastenboek.txt","w")){
echo 'het bestand kon niet geopend worden';
}else{
fputs($fp, "$Bericht");
fclose($fp);
}}
?>
josko
%Europe/Berlin %962 %2007, 00:05
Hey, het legen van een bestand gaat simpelweg door te openen in Write mode met de pointer aan het begin (w) en dan een lege datastring erheen te schrijven, als ik me niet vergis tenminste.
Dus:
if( isset ( $_POST['leegMaken'] ) )
{
$handle = fopen( 'bestand.txt', 'w' );
if( $handle !== false )
{
fputs ( $handle, "" );
//Of een fwrite :-)
}
}
dribs
%Europe/Berlin %701 %2007, 17:49
Het lijkt nog steeds niet te werken.
Ik heb een button aangemaakt.
<input type="submit" name="leegmaken" value="Leegmaken" />
En dan het php scriptje eronder gezet.
<?
if( isset ( $_POST['leegmaken'] ) )
{
$handle = fopen( 'gastenboek.txt', 'w' );
if( $handle !== false )
{
fputs ( $handle, "" );
//Of een fwrite :-)
}
}
?>
Bargok
%Europe/Berlin %756 %2007, 19:09
Pak deze eens:
<?
if (isset($_POST['leegmaken'])) {
$handle = fopen( 'gastenboek.txt', 'w' );
if ($handle) {
fwrite( $handle, "");
}
}
?>
Weet niet of het laks is, maar vergeet geen form om je knop te zetten.
BjornBF
%Europe/Berlin %758 %2007, 19:11
probeer is het volgende bij de verwerking:
<?
if(isset($_POST[' leegmaken']))
{
if($handle = fopen('gastenboek.txt', 'w+'))
{
//schrijven
ftruncate($handle, 0);
}
else
{
//kan niet schrijven
}
}
else
{
//formulier laten zien
}?>
het is niet getest, dus weet het niet zeker
Bargok
%Europe/Berlin %760 %2007, 19:14
Het is een zeer slordige stijl om functie/settings te doen binnen elkander, raad je persoonlijk aan om deze strict gescheiden te houden.
josko
%Europe/Berlin %688 %2007, 17:31
Het lijkt nog steeds niet te werken.
Ik heb een button aangemaakt.
<input type="submit" name="leegmaken" value="Leegmaken" />
En dan het php scriptje eronder gezet.
<?
if( isset ( $_POST['leegmaken'] ) )
{
$handle = fopen( 'gastenboek.txt', 'w' );
if( $handle !== false )
{
fputs ( $handle, "" );
//Of een fwrite :-)
}
}
?>
Wat is de chmod (=bestandsrechten) van het bestand? Mag hij schrijven?
dribs
%Europe/Berlin %727 %2007, 18:28
chmod 777 heb ik ingesteld.
Bovenstaande scriptjes werken nog steeds niet.
Bargok
%Europe/Berlin %764 %2007, 19:20
Dan ligt het 1500% aan jouw implementatie.
Laat je gehele bestand maar eens zien, dan zeg ik wel waar je de fout maakt ;).
maikel
%Europe/Berlin %321 %2007, 08:42
Ga eens even alles na:
- staan je script en gastenboek.txt in dezelfde map
- heet het bestandje echt gastenboek.txt zonder 'tiep'-fout
- kijk je rechten nog eens na
- en voer dan het script nog eens uit.
- maak van de naam van je button ook eens Leegmaken (met hoofdletter)
- en van je isset($_POST['leegmaken') <- ook met hoofdletter
- als je deze punten allemaal gehad hebt, en het werkt dan nog niet, dan kunnen we verder zoeken naar de fout.
- Succes!
Cheers,
Maikel
dribs
%Europe/Berlin %519 %2007, 13:28
Mijn volledige code.
<form>
<input type="submit" name="Leegmaken" value="Leegmaken" />
</form>
<?
if( isset ( $_POST['Leegmaken'] ) )
{
$handle = fopen( 'gastenboek.txt', 'w' );
if( $handle !== false )
{
fputs ( $handle, "" );
//Of een fwrite :-)
}
}
?>
gastenboek.txt = chmod 777
maikel
%Europe/Berlin %920 %2007, 23:05
Hey Dribs,
Even een snelle reactie (met wat ik zo op het eerste oog gezien krijg).
- Om te beginnen is het slim (NODIG!) om, aangezien je in je php bestand checkt of er een post variabele geset is, het formulier method="post" mee te geven.
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
<input type="submit" name="Leegmaken" value="Leegmaken" />
</form>(ik heb hierboven ook het formulier even naar zichzelf verwezen om verwarringen te verkomen)
- Hierna is het goed om je script nog eens te herzien. -> Gooi er even voor jezelf wat echo's in zodat je ziet waar je script spaak loopt.
if(isset($_POST['Leegmaken']))
{
echo 'Leegmaken is geset.<br/>';
if( $handle = fopen('gastenboek.txt', 'w'))
{
echo 'Leegmaken is geset.<br/>';
/*=FOUT
* verder dan hier gaat hij niet komen als onderstaand er staat
* Je kunt namelijk het bestand niet vullen met niks op de een
* of andere manier wil mij dit iig nooit lukken.
-----------------------------------------------------------
if(fputs($handle, "")){
echo "Succes!";
}
* Dus had je eens wat anders geprobeerd (een simpele fout-
* afhandeling) was je al een stuk verder geweest.
* Zie onder ik vul bestand met een spatie en voila. KEPS!
---------------------------------------------------------*/
if(fputs($handle, " ")){
echo "Succes!";
}
/* en ik sluit het bestand nog even netjes */
fclose($handle);
}
}
Dit even als snelle reactie. Hoop dat je er wat mee kunt!
Cheers!
Maikel
ps: misschien is er een manier om het bestand wel geheel te legen? Laat maar wat weten. Dit is iig een snelle manier.
psps: Misschien door het bestand te overschrijven door een nieuw leeg gastenboek.txt bestand. <- Is dit een oplossing voor jouw? laat even wat weten dan kijk ik hier morgen (donderdag) even naar.
dribs
%Europe/Berlin %927 %2007, 23:15
Succes !!!
Bedankt allemaal voor de hulp, vooral maikel met de duidelijke laatste hand.
Dit scriptje ga ik toch ergens bewaren.
Bedankt !!
Dries
EDIT: toch nog een kleinigheidje.
Als ik op de knop "Leegmaken" klik dan wordt het tekstbestand idd leeggemaakt. Maar ik moet dan eerst mijn pagina vernieuwen voor ik de verandering zie.
Is er een functie in PHP die ik bij in de code kan stoppen zodat deze pagina ook daadwerkelijk vernieuwt?
EDIT EDIT: Ik heb het kunnen oplossen na wa googlen.
ik heb deze echo toegevoerd.
echo "<meta http-equiv=\"Refresh\" content=\"1;URL=pagina.html\">";
Hierdoor vernieuwd de pagina na 1 seconden na het klikken op de Leegmaken knop.
maikel
%Europe/Berlin %943 %2007, 23:38
Super!!
Maaarrrr....is het niet zo dat de pagina nu 'blijft' vernieuwen?
dribs
%Europe/Berlin %950 %2007, 23:48
Was ik van plan, maar vergeten. Bij deze gebeurd !!
Bargok
%Europe/Berlin %308 %2007, 08:23
Je kan er natuurlijk ook een AJAX Request op zetten, als je een simpele en intressante AJAX Tutorial wilt volgen: http://w3schools.com/ajax/default.asp
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.