Ich habe eine seltsame Frage und ich habe keine Ahnung, was los ist. Ich kodiere eine interaktive Karte der Vereinigten Staaten. Der Benutzer klickt auf einen Status und der Klick zeichnet in einer Textdatei auf. Dann wird die Anzahl der Klicks insgesamt auf der Karte angezeigt. Es ist im Grunde ein schneller Workaround um eine vollständige Datenbank.Schreiben in Textdatei funktioniert nicht mit dem ersten geklickt Element
Der Code funktioniert. Jedes Mal, wenn Sie auf einen Status klicken, wird dieser zur Textdatei hinzugefügt. Wenn der Status noch nicht existiert, wird ein Eintrag dafür gemacht. Wenn dies der Fall ist, wird die Anzahl der Klicks einfach aktualisiert. Hier ist die Datei:
<?php
// get the input from AJAX
@$state = $_GET['state'];
// get the txt file where all of the states are
$file = 'state_count.txt';
//if state_count.txt exists
if($fopen = fopen($file, 'c')){
//open it and check if the name of the state is recorded or not
if($strpos= strpos(file_get_contents($file), $state)){
//if so, add 1 to the value after the state's name
// in the formate State:#
//cut the text file into an array by lines
$lines = file($file);
//foreach line, parse the text
foreach($lines as $l => $k){
// create a new array $strings where each key is the STATE NAME and each value is the # of clicks
$strings[explode(':', $k)[0]] = explode(':', $k)[1];
}
// add 1 to the # of clicks for the state that was clicked
$strings[$state] = $strings[$state]+1;
// move cursor to the end of the state's name and add 1 to accomodate the :
fseek($fopen, $strpos+strlen($state)+1, SEEK_SET);
// overwrite number in file
fwrite($fopen, $strings[$state]);
// debug print($strings[$state]);
}
//if not, add it with the value 1
else{
file_put_contents($file, $state.":1\n", FILE_APPEND);
}
}
//if does not exist
else{
die('Cannot create or open file.');
}
?>
Das Problem, das ich habe, ist, dass der Code für alle Staaten außer dem ersten Zustand arbeitet, die angeklickt wird (dh die Textdatei leer ist, Benutzer einen Zustand klickt, dieser Zustand ist der erste Zustand). In diesem Fall wird der anfänglich angeklickte Zustand nie aktualisiert, sondern es werden lediglich eine Reihe einzelner Einträge erstellt. Es endet wie folgt aussehen (vorausgesetzt, dass ich Pennsylvania geklickt zuerst):
Pennsylvania:1
Pennsylvania:1
Utah:1
Colorado:1
Kansas:1
Nebraska:1
Wyoming:1
Indiana:1
Ohio:3
Virginia:1
West Virginia:2
Kentucky:8
Tennessee:1
Georgia:1
Alabama:2
Mississippi:1
Pennsylvania:1
Pennsylvania:1
Pennsylvania:1
Pennsylvania:1
Pennsylvania:1
Ich bin mir nicht sicher, warum es dies tut, so dass ich ein paar frische Augen der Hoffnung, kann offensichtlich etwas hinweisen ... I habe das Gefühl es hat mit der Zeile if Anweisung in if($strpos= strpos(file_get_contents($file), $state)){
zu tun, aber ich kann mir nicht sicher sein. Es scheint ein seltsames Problem zu sein, dass der Code 100% korrekt für alles funktioniert, ABER der erste Zustand, auf den Sie klicken. Ich weiß, dass es der erste Zustand ist, nur weil ich es viele Male mit verschiedenen Zuständen als erstes versucht habe.
Irgendwelche Ideen oder Vorschläge?
einer der wenigen wohlgeformten Fragen heute. –
Sie überprüfen, ob Sie den Wert von $ strpos erfolgreich setzen können ...;) – SophieXLove64
jemals gedacht, dass es sich um ein Groß- und Kleinschreibung Problem handeln könnte? versuchen Sie 'Stripos', wenn das hier der Fall ist, es ist für Groß- und Kleinschreibung. –