2016-12-15 9 views
1

Ich habe eine Abstimmung 'Umfrage' auf meiner Website und zum Speichern der Ergebnisse verwendet es eine Textdatei. Ich lese grundsätzlich die vorhandenen Ergebnisse, inkrementiere die neuen Ergebnisse und speichere sie erneut.PHP Schreiben und Lesen in Textdatei

Es scheint jedoch, die Datei zu lesen, speichern Sie die Datei. Aber wenn ich die Daten erneut lese, um sie später zu überprüfen, scheint die Datei nicht richtig gespeichert zu haben ... Ich bin unsicher, was los ist, und meine Webserver-Berechtigungen sollten OK sein, da ich auch einen Besucherzähler habe, der schreibt/liest eine Textdatei Hier

ist der Code poll_vote.php:

<?php 
$vote = $_REQUEST['vote']; 

//open file read current votes 
$contents = file("poll_result.txt"); 

//put content in array, split between the ; 
$array = explode(";", $contents[0]); 
$yes = $array[0]; 
$no = $array[1]; 

echo("Opened file and read contents. YES-" . $yes . " NO-" . $no . "<br>"); 

//Check if it's a yes or no vote 
if ($vote == 0) 
{ 
    $yes = $yes + 1; 
    echo("Incremented yes vote, it is now" . $yes . "<br>"); 
} 

if ($vote == 1) 
{ 
    $no = $no + 1; 
    echo("Incremented no vote, it is now" . $no . "<br>"); 
} 

//insert new votes to txt file 
$insertvote = $yes. ";". $no; 

echo("To insert: " . $insertvote . "<br>"); 

$wfile = fopen('poll_result.txt', w); 
fputs($wfile, $insertvote); 

echo("Done."); 

////////////////////////////////////////////////// 

//open file read current votes 
$contents = file("poll_result.txt"); 

//put content in array, split between the || 
$array = explode(";", $contents[0]); 
$yes = $array[0]; 
$no = $array[1]; 

echo("Re-read data: " . $yes . "|" . $no); 

?> 

Die Textdatei im Format gespeichert wird: 0; 0

+1

Aktivieren Sie die Fehlerberichterstattung. Werden Fehler gemeldet? Überprüfen Sie die Datei. Wird das letzte Änderungsdatum aktualisiert? Tipp: Fügen Sie den Dateinamen in eine Variable ein und verwenden Sie THAT anstelle von "poll_results.txt" an jeder Stelle. –

+2

Je nachdem, wie ausgelastet diese Umfrage ist, können Probleme beim Zugriff auf die Datei auftreten, wenn sie bereits geöffnet ist für einen Schreibvorgang. Sie könnten möglicherweise Daten verlieren. –

+0

Ihnen fehlen die Anführungszeichen auf 'w'. Und Sie schließen die Datei nicht. –

Antwort

0

Sie die Datei richtig, es zu schreiben Scheibe schließen sollen

Versuchen Sie

fputs($wfile, $insertvote); 
fclose($wfile); //close the file 
echo("Done."); 
+0

Nicht sicher, ob dies behoben wurde, wie ich das andere Zeug oben getan habe, aber es funktioniert jetzt Prost –

Verwandte Themen