Fehler mit Textdateien und Arrays

  • geschlossen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fehler mit Textdateien und Arrays

    Tagchen.
    Ich habe vor, ein Votingscript mit Textdateien zu schreiben.
    Allerdings habe ich einen kleinen Fehler.
    Ich habe ein Textdokument, wo die Zahlen der Antworten folgendermaßen aufgelistet sind:
    1
    2
    3
    4

    ( Nur ein Beispiel )

    Gibt nun der User Antwort 1 an, soll die erste Zeilen um 1 erhöht werden.
    Ich habe alle Ergebnisse der Zahlen in ein Array gespeichert, jeden String aus dem Array in ein Integer gewandelt, es um 1 erhöht, das Array geteilt.
    Allerdings, wenn ich nun als Beispiel Antwort1 angeben sieht der String folgendermaßen aus:
    1
    0
    0
    0

    Beim Umwandeln des Strings in ein Integer, da liegt meiner Meinung nach der Fehler.
    Ich habe leider noch keinen Plan warum.
    Daher hoff ich, dass Ihr mir helfen könnt.
    Script steht hier:

    PHP-Quellcode

    1. <html>
    2. <head>
    3. <style type="text/css">
    4. .überschrift{
    5. font-size: 10px;
    6. color: #000000;
    7. font-family: Verdana, Arial;
    8. }
    9. </style>
    10. </head>
    11. <body>
    12. <?php
    13. $dateiname_frage = "frage.txt";
    14. $dateiname_antwortzahlen = "antwortzahlen.txt";
    15. $dateiname_antworten = "antworten.txt";
    16. if (file_exists($dateiname_frage) && file_exists($dateiname_antwortzahlen) && file_exists($dateiname_antworten)) {
    17. if (!isset($_POST['Antwort'])) {
    18. $handle_frage = fopen($dateiname_frage,"r+");
    19. $frage = fread($handle_frage,filesize($dateiname_frage));
    20. echo "<center><font class=\"überschrift\">".$frage."</font></center>";
    21. echo "<table><form action=\"".$PHP_SELF."\" method=\"post\">";
    22. $antworten = file($dateiname_antworten);
    23. foreach($antworten as $antwort) {
    24. if (!isset($nr)) { $nr = 1; }
    25. echo "<tr><td>".$antwort."</td><td><input type=\"radio\" name=\"Antwort\" value=\"".$nr."\"></td></tr><br>";
    26. $nr++;
    27. }
    28. echo "<tr><td></td><td><input type=\"submit\" name=\"absenden\" value=\"Hinzufügen\"></td></tr></table>";
    29. } else {
    30. $antwortzahlen = file($dateiname_antwortzahlen);
    31. for($i=0;$i<sizeof($antwortzahlen);$i++) {
    32. $antwortzahlen[$i] = intval($antwortzahlen[$i]);
    33. }
    34. $antwortzahlen[$_POST['Antwort']-1]++;;
    35. $neu = implode("\n",$antwortzahlen);
    36. echo nl2br($neu);
    37. }
    38. } else {
    39. echo "Die von Ihnen angegebenen Dateinamen sind nicht zu erreichen.";
    40. }
    41. ?>
    42. </body>
    43. </html>
    Alles anzeigen


    Der Fehler liegt in der Zeile:
    $antwortzahlen[$i] = intval($antwortzahlen[$i]);
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • $antwortzahlen[$_POST['Antwort']-1]++;; <- zwei semicolons sind ein bisschen überflüssig^^

    gibts da irgendeine fehlermeldung dazu?

    auf den ersten blick find ich nix

    mfg marx
    [SIZE="1"] Wenn wer nen IPV sucht, melden!!!
    (\_/)
    (o.0)
    (><)
    This is Bunny. Copy Bunny into your signature to help him on his way to world domination
    [/SIZE]
  • habe es mit PHP 5 probiert (und so

    PHP-Quellcode

    1. <html>
    2. <head>
    3. <style type="text/css">
    4. .überschrift{
    5. font-size: 10px;
    6. color: #000000;
    7. font-family: Verdana, Arial;
    8. }
    9. </style>
    10. </head>
    11. <body>
    12. <?php
    13. $frage = "wie heißt du?";
    14. $antwortzahlen = array("12\n","23\n","3\n","1");
    15. $antworten = array("eins\n","zwei\n","drei\n","vier");
    16. if (!isset($_POST['Antwort'])) {
    17. echo "<center><font class=\"überschrift\">".$frage."</font></center>";
    18. echo "<table><form action=\"".$PHP_SELF."\" method=\"post\">";
    19. foreach($antworten as $antwort) {
    20. if (!isset($nr)) { $nr = 1; }
    21. echo "<tr><td>".$antwort."</td><td><input type=\"radio\" name=\"Antwort\" value=\"".$nr."\"></td></tr><br>";
    22. $nr++;
    23. }
    24. echo "<tr><td></td><td><input type=\"submit\" name=\"absenden\" value=\"Hinzufügen\"></td></tr></table>";
    25. } else {
    26. for($i=0;$i<sizeof($antwortzahlen);$i++) {
    27. $antwortzahlen[$i] = intval($antwortzahlen[$i]);
    28. }
    29. $antwortzahlen[$_POST['Antwort']-1]++;;
    30. $neu = implode("\n",$antwortzahlen);
    31. echo nl2br($neu);
    32. }
    33. ?>
    34. </body>
    35. </html>
    Alles anzeigen
    ) probiert

    -> es funktioniert einwandfrei oO