[php] fputs & fwrite, schrijven niet naar een bestand.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers,

ik zit met een klein probleem waar ik zelf niet meer uit kom.
Ik doe al een jaar phpén maar ik heb me nooit verdiept in fopen en fwrite enzo. Ik dacht dat het onzin was, maar het kwam nu echt goed van te pas.
Dus kees ging maar eens flink beunen, en een bestand uitlezen lukt al :D
Maar schrijven niet, is heel vreemd hij geeft geen errors, en hij echoéd ook dat de tekst is ingevoegd.

Wat er volgens mij het enige is waar het aan kan liggen is volgens mij:
1. $_POST['text']; leest hij niet, maar dan zou het bestand wel leeg moeten zijn.
2. fwrite verkeert gebruikt?

Ook heb ik fputs ook gebruik maar gebeurt ook niks :(

nouwja hier indergeval de code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<? 
if(isset($_POST['submit']) ) 
{ 
        $file_open = fopen($config['message_file'], 'w+'); 
        fwrite($file_open,$_POST['text']); 
        fclose($file_open); 
        echo 'Je text is toegevoegd!'; 
} 
$file_open = fopen($config['message_file'], 'r'); 
$text = fgets($file_open, 4096); 
fclose($file_open); 
include("lib/templates/home/text_reminder.php"); 
?> 


Weet iemand wat ik fout doe?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Heb je errors op E_ALL staan? Het kan best zijn dat hij waarschuwingen of errors gewoon niet weergeeft.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Zet eens error_reporting(E_ALL); boven je code? En probeer het bestand dat je wil beschrijven eerst eens te chmodden naar 0755?

edit:
Spuit 11

[ Voor 9% gewijzigd door NMe op 27-05-2004 15:44 ]

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

  • sariel
  • Registratie: Mei 2004
  • Laatst online: 22-05-2024
Ik neem aan dat je een formpje hebt waarin je gezet hebt dat de browser POST moet gebruiken (makkelijk overheen gekeken)?
De code lijkt wel enigszins te kloppen....krijg je ook daadwerkelijk een melding dat de text is toegevoegd?

JF

Copy.com


Acties:
  • 0 Henk 'm!

Verwijderd

Bestaat $config['message_file'] wel, echo deze eerst eens op het scherm?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
edit:

Kijk, ik snap dat je vraagt $config['message_file'] enzo aangemaakt heb maar ene kant vindt ik het niet slim dat je dat vraagt want als dat niet zo was zou hij een error geven, en in mijn start post staat dat hij geen errors geeft.
form is ook goed 10x gecheckt.

Dat error_reporting, was wel een goede opmerking, maar hij geeft nog steeds geen errors. Owja allow_furl_open staat op off, maar volgens mij maakt dat niet uit omdat het een intern bestand is?


@NMe84:
bestanden had ik al gechmod ;)



form:
code:
1
2
3
4
5
6
7
<form name="form1" method="post" action="admin.php">
  <div align="right">
    <textarea name="text" rows="12" cols="50"><?=$text;?></textarea>
    <br>
    <input type="submit" name="submit" value="Voeg tekst toe.">
  </div>
</form>


error_reporting(E_ALL);
is aangezet.

Hmz iets eigenaardigs opgemerkt.

http://www.dendulk-hosting.nl/admin.php
username: test
password: test

Als je ingelogd bent en op de index pagina komt zie je een form voor je.
oke probeer 2 dingen:
1. de tekst die er momenteel staat laten staan en 2x enter drukken en er iets bij zetten.
2. de tekst die er momenteel staat verwijderen en dan iets anders ervoor in de plaats zetten.

Ik vindt het heel raar :S..
Maar misschien ook weer niet, want ik maak elke keer als hij naar bestand gaat schrijven het bestand leeg.
Dus kan ik misschien beter de pointer aan het einde zetten?

[ Voor 51% gewijzigd door Verwijderd op 27-05-2004 16:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

ehmm, ik zie geen form voor me

wel een menu waarin in kan zien dat je 3 klanten hebt en wat je omzet is....
Is het de bedoeling dat we gaan testen of we gegevens kunnen bewerken?

[taalpurist mode]
het is inkomsteN en uitgaveN in het toevoegen-scherm
[/taalpurist mode]

[ Voor 21% gewijzigd door Verwijderd op 27-05-2004 16:12 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Het schrijven is iig het probleem niet, want hij schrijft wel één regel weg. De regels erna alleen niet. Gebruik je onderstaande code letterlijk zo?
PHP:
1
fwrite($file_open,$_POST['text']);

Druk anders $_POST['text'] voor de lol eens af en kijk voordat je het wegschrijft wat je eigenlijk doorkrijgt.
Verwijderd schreef op 27 mei 2004 @ 16:09:
[taalpurist mode]
het is inkomsteN en uitgaveN in het toevoegen-scherm
[/taalpurist mode]
offtopic:
Nee hoor, het is Zoek een uitgave/inkomste op datum, netjes zoals het er staat. Enkelvoud. ;) (al is dat bij inkomste nogal vreemd woordgebruik :))

[ Voor 40% gewijzigd door NMe op 27-05-2004 16:15 ]

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

Verwijderd

Topicstarter
nee, het zou er zo uit moeten zien:

Afbeeldingslocatie: http://www.dendulk-hosting.nl/screenshot.jpg

Anders moet je even op de link home klikken in het menu.

edit:

@NMe84 : ga ik nu meteen doen ;)

het blijkt dat hij enters niet pakt nee, maar hoe kan ik zorgen dat hij de volgende regel ook wegschrijft?



offtopic:
Hoeft ook niet proffesioneel over te komen :P het is maar een admin voor byron en mij. Maar welke woorden adviseer jij dan?

[ Voor 57% gewijzigd door Verwijderd op 27-05-2004 16:17 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 27 mei 2004 @ 16:12:
edit:
@NMe84 : ga ik nu meteen doen ;)

het blijkt dat hij enters niet pakt nee, maar hoe kan ik zorgen dat hij de volgende regel ook wegschrijft?
Ik zie dat je deze code gebruikt:
code:
1
2
3
4
5
6
7
<form name="form1" method="post" action="admin.php">
  <div align="right">
    <textarea name="text" rows="12" cols="50"><?=$text;?></textarea>
    <br>
    <input type="submit" name="submit" value="Voeg tekst toe.">
  </div>
</form>
Hoe kom je aan $text? Hoe vul je die variabele? Ik vermoed dat het daar verkeerd gaat.
Verwijderd schreef op 27 mei 2004 @ 16:12:
offtopic:
Hoeft ook niet proffesioneel over te komen :P het is maar een admin voor byron en mij. Maar welke woorden adviseer jij dan?
Gewoon wat je nu hebt is best in orde hoor. :P

[ Voor 12% gewijzigd door NMe op 27-05-2004 16: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!

Verwijderd

Topicstarter
hier haal ik $text vandaan: ;)
PHP:
1
$text = fgets($file_open, 4096);

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 27 mei 2004 @ 16:23:
hier haal ik $text vandaan: ;)
PHP:
1
$text = fgets($file_open, 4096);
Sorry, overheen gelezen. :) Anders had ik de fout al eerder gezien. Quotetje:
Beschrijving
string fgets ( resource handle [, int length])

Geeft een string terug, met een maximale lengte van length - 1, gelezen uit het bestand waar de bestands pointer handle naar verwijst. Het lezen uit het bestand stopt als length - 1 bytes zijn gelezen, of als er een nieuwe regel begint (die wordt meegegeven aan de string), of als er een EOF optreed (welke dan ook het eerste komt).
M.a.w.: gebruik fread(), of een while ($s = fgets($_file_open, 4096)) constructie. ;)

[ Voor 4% gewijzigd door NMe op 27-05-2004 16:27 ]

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

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Als je ipv fwrite eens fputs gebruikt? Gaat het dan wel goed?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Janoz schreef op 27 mei 2004 @ 16:28:
Als je ipv fwrite eens fputs gebruikt? Gaat het dan wel goed?
Zie topictitel. ;)
edit:
@wipkip: Volgens mij heb je mijn vorige post gemist, daar staat je oplossing. ;)

[ Voor 21% gewijzigd door NMe op 27-05-2004 16:32 ]

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

Verwijderd

Topicstarter
beide exact hetzelfde effect, en zoals je ziet op php.net zijn het dezelfde functies dus de werking is (neem ik aan) bij beide hetzelfde.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hij werkt bijna :D ;)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        if(isset($_POST['submit']) )
        {
                $file_open = fopen($config['message_file'], 'w+b');
                fwrite($file_open,$_POST['text']);
                fclose($file_open);
                echo 'Je hebt het volgende gepost:'.$_POST['text'];
                echo '<br><br><b>Je text is toegevoegd!</b>';
        }
        $file_open = fopen($config['message_file'], 'r');
        while (!feof ($file_open))
        {
                $text .= fgets($file_open, 4096);
        }
        fclose($file_open);
        include("lib/templates/home/text_reminder.php");


Hij voegde wel de tekst in, maar hij leeste alleen de eerste regel uit.
dus met een while ff gefixed.


Nu zit ik nog wel met wat kleine foutjes.
Probeer maar eens alles te verwijderen en dan typ in blaat bijvoorbeeld, en nou zie je dat hij hem 2x laat zien.. dat ligt zeker aan de while loop?

[ Voor 49% gewijzigd door Verwijderd op 27-05-2004 16:41 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Maak van die while eens dit:
PHP:
1
$text = fread($file_open, filesize($config['message_file']));

Is sneller en werkt nog ook. :P

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

Verwijderd

Topicstarter
zo tnx! dat lost weer probleem op, het enige rare is, dat hij nu wat space voor de tekst invoegt.. moet ik nu trim($_POST['text'] doen?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Dat kan, maar die spatie moet toch ergens vandaan komen? Naja, als je de oorzaak niet kan vinden kun je idd het symptoom bestrijden met trim(). :)

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

Verwijderd

Topicstarter
oorzaak ligt denk aan fwrite maar hoe het komt (al sla je me dood.) Hopen dat iemand het weet.

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Echo dan eens die $_POST["text"] voor je hem wegschrijft:
PHP:
1
echo "|".$_POST["text"]."|"; //Die |'s om te zien of er een spatie staat. :P

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

Verwijderd

Topicstarter
problem fixed..
het lag aan de opschuldige form.. mijn fout :>
Nou alles is naar wens, dus als je het niet erg vindt delete ik het test account.. :/


en mensen HEEL erg bedankt, dankzij jullie heb ik vandaag weer es wat geleerd en kan ik door :P.. _/-\o_

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 27 mei 2004 @ 16:51:
problem fixed..
het lag aan de opschuldige form.. mijn fout :>
Nou alles is naar wens, dus als je het niet erg vindt delete ik het test account.. :/
Vertrouw je ons niet? >:) :+
Verwijderd schreef op 27 mei 2004 @ 16:51:
en mensen HEEL erg bedankt, dankzij jullie heb ik vandaag weer es wat geleerd en kan ik door :P.. _/-\o_
Geen probleem, daar zijn we hier voor. Wist het zelf eerlijk gezegd eerst ook niet van fgets. :)

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

Verwijderd

Topicstarter
NMe84 schreef op 27 mei 2004 @ 16:53:
[...]

Vertrouw je ons niet? >:) :+
Nouwja het gaat straks wel om vertrouwelijk informatie :P dit is allemaal test wat er nu instaat.

Helaas maar het speel kwartier is over >:).

edit:

zo te zien is er goed mee gespeelt :/

[ Voor 12% gewijzigd door Verwijderd op 27-05-2004 17:00 ]

Pagina: 1