Votingwerte in einer TXT-Datei speichern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Votingwerte in einer TXT-Datei speichern

    Hallo,
    ich habe ein für mich großes, scheinbar nicht überwindbares Problem. Für euch Profis ist es bestimmt lachhaft.

    Ich möchte gern an einem Vote etwas ändern, mein Programm soll ganz ohne MySQL auskommen.

    Das habe ich zwar schon fast hinbekommen, nur wird mir bei 6 Wahlpunkten immer nur der angezeigt mit der korrekten Prozentzahl, welcher ausgewählt wurde. Die anderen haben dann 0%.

    Leider geht es durch mein klägliches Wissen nur mit verschiedenen 6 TXT-Dateien, weil ich nicht weiß, wie man 6 Werte aus einer einzigen TXT-Datei lesen kann. Dadurch wird mein Quellcode natürlich umständlich.

    Es wäre fabelhaft, wenn mir jemand einen Tipp geben kann.

    Danke + Gruß
    Wolfine

    Hier mal mein Quellcode:
    vote wird mir übergeben von meiner Umfrage.html

    Ergebnis.php
    PHP-Code:
    <?php
       $i
    =$vote;

       if (
    $vote==1) { $Datei "./wahl1.txt"; }
       if (
    $vote==2) { $Datei "./wahl2.txt"; }
       if (
    $vote==3) { $Datei "./wahl3.txt"; }
       if (
    $vote==4) { $Datei "./wahl4.txt"; }
       if (
    $vote==5) { $Datei "./wahl5.txt"; }
       if (
    $vote==6) { $Datei "./wahl6.txt"; }

        
    $wahl[$vote] = fopen($Datei"r+");
        
    $wahlstand[$vote] = fgets($wahl[$vote], 10);
        if(
    $wahlstand[$vote] == "")
        {
        
    $wahlstand[$vote] = 0;
        }

        
    $wahlstand[$vote]++;
        
    rewind($wahl[$vote]);
        
    fwrite($wahl[$vote], $wahlstand[$vote]);
        
    fclose($wahl[$vote]);

        
    $wahl1 fopen("./wahl1.txt""r");
        
    $wahlstand1 fgets($wahl110);

        
    $wahl2 fopen("./wahl2.txt""r");
        
    $wahlstand2 fgets($wahl210);

        
    $wahl3 fopen("./wahl3.txt""r");
        
    $wahlstand3 fgets($wahl310);

        
    $wahl4 fopen("./wahl3.txt""r");
        
    $wahlstand4 fgets($wahl410);

        
    $wahl5 fopen("./wahl5.txt""r");
        
    $wahlstand5 fgets($wahl510);

        
    $wahl6 fopen("./wahl6.txt""r");
        
    $wahlstand6 fgets($wahl610);

        
    $insgesamt $wahlstand1 $wahlstand2 $wahlstand3 $wahlstand4 $wahlstand5 $wahlstand6;

        print(
    $insgesamt);

        
    $choicetext = array("""C++""JScript""Perl""PHP",
                            
    "VB/VBA/VBScript""Andere");

        for (
    $i 1$i <= 6$i++)
          {
           echo 
    "wahlstand[$i]";
          
    $prozent round(($wahlstand[$i]* 100)/$insgesamt);
          
    $balken $prozent 2;

          if (
    $prozent >= 50){
          print (
    " <table border=\"0\"> <tr>
          <td width=\"150\"><font face='Arial' size='3'>
    $choicetext[$i]</font></td>
          <td>
          <td><img src=\"balken_r.gif\" height=\"10\" width=\"
    $balken\"></td>
          <td><font face='Arial' size='3' color='red'> 
    $prozent % </font></td>
          </tr></table> \n"
    );
          }

          else {if (
    $prozent == 0){
          print (
    " <table border=\"0\"> <tr>
          <td width=\"150\"><font face='Arial' size='3'>
    $choicetext[$i]</font></td>
          <td>

          <td><font face='Arial' size='3'> 
    $prozent % </font></td>
          </tr></table> \n"
    );
          }

          else {
          print (
    " <table border=\"0\"> <tr>
          <td width=\"150\"><font face='Arial' size='3'>
    $choicetext[$i]</font></td>
          <td>
          <td><img src=\"balken.gif\" height=\"10\" width=\"
    $balken\"></td>
          <td><font face='Arial' size='3'> 
    $prozent % </font></td>
          </tr></table> \n"
    );
          }  }
          }
      
    ?>
    EDIT:
    auch du kannst die code/php-tags benutzen. php.tags by wotan

    Zweitens hast du deinen Thread im falöschen Forum gepostet, für solchen Frage ist das PHP-Dev-Forum da und nicht Fragen zum Forum.

    Zuletzt geändert von Wotan; 23.11.2003, 22:40.

  • #2
    Re: Votingwerte in einer TXT-Datei speichern

    naja,

    nur wird mir bei 6 Wahlpunkten immer nur der angezeigt mit der korrekten Prozentzahl, welcher ausgewählt wurde. Die anderen haben dann 0%.
    PHP-Code:
    <?php

        $wahl
    [$vote] = fopen($Datei"r+");
        
    $wahlstand[$vote] = fgets($wahl[$vote], 10);

    ...

        
    $wahl1 fopen("./wahl1.txt""r");
        
    $wahlstand1 fgets($wahl110);

        
    $wahl2 fopen("./wahl2.txt""r");
        
    $wahlstand2 fgets($wahl210);

        
    $wahl3 fopen("./wahl3.txt""r");
        
    $wahlstand3 fgets($wahl310);

        
    $wahl4 fopen("./wahl3.txt""r");
        
    $wahlstand4 fgets($wahl410);

        
    $wahl5 fopen("./wahl5.txt""r");
        
    $wahlstand5 fgets($wahl510);

        
    $wahl6 fopen("./wahl6.txt""r");
        
    $wahlstand6 fgets($wahl610);

    ...

        for (
    $i 1$i <= 6$i++)
          {
           echo 
    "wahlstand[$i]";
    du weist ja auch dem array, das du am ende ausgibst, nur diesen einen wert zu ..., die 6 werte, die du haben willst, stehen in wahlstand1 - wahlstand6 ....

    was spricht dagegen, alle ergebnisse in einer datei zeilenweise zu speichern, sie einzulesen und in einem array weiter zu verwenden? spart ne menge tipparbeit

    wir werden verschoben
    Zuletzt geändert von Wotan; 23.11.2003, 22:42.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Hallo,
      danke dass du meins angesehen hast, aber du drückst nur noch mehr den Finger in die Wunde.

      Wenn ich quellcodetechnisch könnte, würde ich alles in TXT-Datei schreiben, aber mein Wissen versagt mir dies.

      Leider kann ich auch nicht erkennen, was du mir sagen willst mit:
      PHP-Code:
      for ($i 1$i <= 6$i++)
      {
      echo 
      "wahlstand[$i]"
      --------------------------------------------------------------------------------

      du weist ja auch dem array, das du am ende ausgibst, nur diesen einen wert zu ..., die 6 werte, die du haben willst, stehen in wahlstand1 - wahlstand6 ....

      PHP-Code:
      echo "wahlstand[$i]"
      hatte ich nur drin, um zu sehen, ob's überhaupt genommen wird.

      Ich dachte die Ausgabe wird darüber geregelt
      PHP-Code:
       $prozent round(($wahlstand[$i]* 100)/$insgesamt); 
      Ich hab doch immerhin Zeiger.

      Gruß Wolfine
      Zuletzt geändert von Wotan; 23.11.2003, 22:41.

      Kommentar


      • #4
        Hallo,
        danke dass du meins angesehen hast, aber du drückst nur noch mehr den Finger in die Wunde.

        Wenn ich quellcodetechnisch könnte, würde ich alles in TXT-Datei schreiben, aber mein Wissen versagt mir dies.

        Leider kann ich auch nicht erkennen, was du mir sagen willst mit:
        PHP-Code:
        for ($i 1$i <= 6$i++)
        {
        echo 
        "wahlstand[$i]"
        EDIT:
        Kannst du dir bitte angewöhnen, wenn du hier im Forum schon PHP-Code schreibst auch die php.tags zu benutzen. Und wenn du einen Beitrag zitieren willst, unter den Beitrag auf Zitat klicken und nicht den Text per Drog & Drop Kopieren!

        --------------------------------------------------------------------------------

        du weist ja auch dem array, das du am ende ausgibst, nur diesen einen wert zu ..., die 6 werte, die du haben willst, stehen in wahlstand1 - wahlstand6 ....

        PHP-Code:
        echo "wahlstand[$i]"
        hatte ich nur drin, um zu sehen, ob's überhaupt genommen wird.

        Ich dachte die Ausgabe wird darüber geregelt
        PHP-Code:
         $prozent round(($wahlstand[$i]* 100)/$insgesamt); 
        Ich hab doch immerhin Zeiger.

        Gruß Wolfine
        Zuletzt geändert von Wotan; 23.11.2003, 23:02.

        Kommentar


        • #5
          Hallöle,


          mehrere Variable aus einer Textdatei?

          hmm, schau dir doch eventuell mal folgendes an.

          fgetcsv()

          Hoffe, das hilft.


          Gruß Peacie

          Kommentar


          • #6
            naja,

            ich kenne die funktion zwar nicht, der name klingt aber vielversprechend^^.

            demnach könntest du die werte dann in der form:

            wert1, wert2, wert3, wert4, wert5, wert6

            in einer datei speichern. beispielcode zum auslesen ist ja vorhanden.

            Leider kann ich auch nicht erkennen, was du mir sagen willst mit:
            du speicherst den übergebenen vote-wert in einem array mit dem index der jeweiligen frage. die anzahl der votes für einen punkt liest du dann aber jeweils in eine eigene variable names wahlstandx. wenn du dann das array wahlstand[] ausgibst, ists logisch, daß du nur einen wert angezeigt kriegst.

            probier mal die funktion, wirst sehn, der code schrumpft aus wenige zeilen zusammen.

            algo: seite, die per get/post die $vote kriegt:
            - textdatei öffnen, werte in ein array lesen
            - jeweiligen vote-wert incrementieren
            - array neu in textdatei schreiben, wieder als csv
            - header(location: ... weiter zur ausgabe)(wichtig!)
            - arrayinhalt ausgeben

            update und ausgabe gehören nicht zusammen auf eine seite, imho.
            Zuletzt geändert von derHund; 24.11.2003, 12:25.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Japp,

              der Meinung bin ich auch.

              Man kann mit fgetcsv() jeden wert (z.B. durch "," getrennt) in ein array lesen:

              vote1,vote2,vote3 ......

              das war meine Idee....

              Ich hab das irgendwann mal mit nem Dropdownfeld gemacht, mal kramen .....

              Ah ja....

              also

              $data = fgetcsv ($fp, 1000, ",")
              Also stehen die werte anschließend ind $data[0] $data[1]........
              data[0] hat dann den wert vote1
              data[1] hat dann den wert vote2


              Nur ein Ansatz, aber sollte gehen


              Bis dahin..

              Peacie

              Kommentar

              Lädt...
              X