radiobutton+fwrite

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

  • radiobutton+fwrite

    Ein radiobutton wird ausgewählt und an das php script verschickt.
    Zu jedem radiobutton ist eine txt-Datei zugewiesen
    Der PHP script soll nachsehen welcher von den 3 radiobuttons ausgewählt wurde und die entsprechende Datei auswählen um die Zahl dort um eins zu erhöhen. Wie kriege ich das mit der Auswahl im PHP Script hin?
    -----------------HTML Seite-----------------
    <form name="" method="post" action="vote.php">
    <table width="140" border="0" cellspacing="0" cellpadding="1" align="center">
    <tr>
    <td width="15%">
    <input type="radio" name="vote" value="ant1">
    <td>
    <td width="85%">ja</td>
    </tr>
    <tr>
    <td width="15%">
    <input type="radio" name="vote" value="ant2">
    </td>
    <td width="85%">nein</td>
    </tr>
    <tr>
    <td width="15%">
    <input type="radio" name="vote" value="ant3">
    </td>
    <td width="85%">Manchmal</td>
    </tr>
    </table>
    <table width="139" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
    <td width="91">&nbsp;</td>
    <td width="48">
    <input type="submit" value="vote">
    </td>
    </tr>
    </table>
    ------------------------------------------------------
    Bitte um die hilfe

    [Editiert von archie am 10-03-2002 um 14:28]

  • #2
    vote.php:
    ---------
    // je nach geklicktem radio-button
    // ant1.txt, ant2.txt oder ant3.txt auslesen:
    $n = implode('', file("$vote.txt"));

    // Datei zum Schreiben öffnen
    $f = fopen ("$vote.txt", 'w');
    // n+1 reinschreiben
    fwrite ($f, $n+1);
    // schließen
    fclose($f);




    [Editiert von Titus am 10-03-2002 um 17:49]
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      // je nach geklicktem radio-button
      // ant1.txt, ant2.txt oder ant3.txt auslesen:
      $n = implode('', file("$vote.txt"));
      Der Rst ist mir ja klaR UND DAS WAS ICH GENAU WISSEN WOLLTE
      kamm bei mir net so gut an. Also ich hab mir das auch gedacht je nach button wird die txt datei beschrieben aber wie macht man das mit der auswahl?

      Kommentar


      • #4
        Also ich hab mir CODE so vorgestellt:
        Ist das richtig so?

        PHP PHP PHP PHP PHP PHP PHP PHP PHP
        ----------------------------------------
        <?
        if($erg1){
        $ant1 != " "; && $ant2 != " "; && $ant3 != " ";
        }

        $datei1 = e1.txt
        $datei2 = e2.txt
        $datei3 = e3.txt
        {
        if(ant1==cheked);
        $file=$datei1;
        }else{
        if(ant2==cheked);
        $file=$datei2;
        }else{
        if(ant3==cheked);
        $file=$datei3;
        $n = implode('', file("$file"));
        $fp = fopen ("$file", 'w');
        fwrite ($fp, $n+1);
        fclose($fp);

        ?
        -------------------------------------------------
        HTML HTML HTML HTML HTML HTML HTML HTML HTML

        <tr>
        <td width="15%">
        <input type="radio" name="vote" value="ant1">
        </td>
        <td width="85%"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">ja</font></td>
        </tr>
        <tr>
        <td width="15%">
        <input type="radio" name="vote" value="ant2">
        </td>
        <td width="85%"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">nein</font></td>
        </tr>
        <tr>
        <td width="15%">
        <input type="radio" name="vote" value="ant3">
        </td>
        <td width="85%"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">Manchmal</font></td>
        </tr>
        <tr>
        <td width="91">&nbsp;</td>
        <td width="48">
        <input type="submit" name="votesubmit" value="vote">
        </td>
        </tr>
        --------------------------------------------------------

        Kommentar


        • #5
          Da dein Formularfeld 'vote' heißt, kommt der ausgewählte Wert (value) im Ziel-Skript in der Variablen $vote an.
          Dadurch das der Dateiname beim file()- und fopen()-Aufruf in Gänsefüßchen (doppelte Anführungszeichen) steht, wir der Name der Variblen $vote durch ihren Wert ersetzt.

          Wurde vote=ant1 ausgewählt, hat also $vore den Wert 'ant1', und im file-Befehl wird aus "$vote.txt" -> ant1.txt, somit wird die Datei ant1.txt gelesen und anschließend zum Schreiben geöffnet.

          Das implode('', file(...)) dient nur dazu, das Auslesen der Datei (ich nehme an, dass da nur die Zahl drin steht) in einer Zeile unterzubringen. Zurückgeliefert wird der Inhalt ALLER Zeilen getrennt durch "\n" - wenn das so ist wie ich mir denke, ist das nur die in der Datei gespeicherte Zahl.

          Ich hoffe, das war was du wissen wolltest.

          Äh ... oder willst du das Formular per Skript generieren?
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Dank, dass du mir so viel geschrieben hast, aber ich habe echt nix gechekt
            8 Monate Zivildienst machen schon was aus man wird genau so komisch wie die Alten
            sorry

            Kommentar


            • #7
              Oh, da war ich zu langsam. =D
              Original geschrieben von archie
              Also ich hab mir CODE so vorgestellt:
              Ist das richtig so?
              so ähnlich: Es gibt eine einfache Möglichkeit, wie du die Auswahl automatisieren kannst. Wenn z.B. Optionen dazukommen, hängst Du einfach einen neuen Dateinamen an die Array-Definition in der ersten Zeile an.

              Ganz wichtig ist, dass du den Radio-Buttons nicht "ant1", "ant2" usw. als Wert gibst, sondern nur "1", "2" etc.!!

              Code:
              <?
              $datei = array ('dummy', 'e1.txt', 'e2.txt', 'e3.txt');
              [i]// in $vote sollte '1', '2' oder '3' stehen,
              // [b]streich mal im HTML-Teil jeweils das 'ant' aus dem value!!![/b][/i]
              
              [i]// Dateiname aus dem array holen
              // Damit kannst du Dir das if/else-Gedönse sparen[/i]
              $dateiname = $datei[$vote];
              Der Rest ist ja anscheinend klar - Datei auslesen, Wert erhöhen und wieder reinschreiben.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8

                O got ich blicke echt nicht mehr durch und so viele Errors:

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

                Warning: file("") - Inappropriate ioctl for device in /home/www/htdocs/deck-kater.de/vote/vote.php on line 10

                Warning: Bad arguments to implode() in /home/www/htdocs/deck-kater.de/vote/vote.php on line 10

                Warning: fopen("Array","w") - Permission denied in /home/www/htdocs/deck-kater.de/vote/vote.php on line 11

                Warning: Supplied argument is not a valid File-Handle resource in /home/www/htdocs/deck-kater.de/vote/vote.php on line 12

                Warning: Supplied argument is not a valid File-Handle resource in /home/www/htdocs/deck-kater.de/vote/vote.php on line 13
                ---------------------------------------------
                <html> \\ Zeile 1
                <head>
                <title>vote</title>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                </head>
                <body>
                <?
                $datei = array ('e1.txt', 'e2.txt', 'e3.txt');
                $dateiname = $datei[$vote];
                $n = implode('', file("$dateiname"));
                $fp = fopen ("$datei", 'w');
                fwrite ($fp, $n+1);
                fclose($fp);
                ?>
                <? readFile("e1.txt") ?>
                </body>
                </html> \\ Zeile 17

                Kommentar


                • #9
                  Warning: file("") - Inappropriate ioctl for device in /home/www/htdocs/deck-kater.de/vote/vote.php on line 10

                  --> weil Dateiname leer.

                  Vermutlich ist $vote=3 oder du hast die 'ant' nicht aus den Values entfernt. Außerdem fehlt der Dummy-Eintrag im Array:
                  $datei = array ('dummy', 'e1.txt', 'e2.txt', 'e3.txt');

                  Bauen wir halt vorne eine Abfrage rein, ob vote gültig ist:
                  if (strlen((int)$vote != strlen(trim($vote))) die ("ungültige Vote: '$vote'");


                  Warning: fopen("Array","w") - Permission denied in /home/www/htdocs/deck-kater.de/vote/vote.php on line 11

                  ---> $fp = fopen ($dateiname, 'w');
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #10
                    Ich kriege trotzden 100 Warnungen und 100 Errors
                    Kann man das nicht ohne Arraz machen. Ich bin totaller noob in PHP und will net ständig mit dummen Fragen nerven. Kann mir einer sagen wie ich das mit der if schleife hinkriegen kann.

                    Kommentar


                    • #11
                      Ich kriege immer noch mehrere Parse Errors was ist daran falsch?



                      Also Php sihet so auf :
                      ------------------------------------------
                      <?php
                      $datei1= e1.txt;
                      $datei2= e2.txt;
                      $datei3= e3.txt;


                      if ($1 != " ")
                      $file = $datei1;
                      elseif

                      if ($2 != " ")

                      $file = $datei2;
                      else

                      $file = $datei3;

                      $datei = fopen($file, "r");
                      if($datei)
                      {
                      $zaehle = fgets($file,3);
                      fclose($file);
                      }
                      $zaehle++;
                      $datei =fopen($file, "w");
                      if($datei)
                      {
                      fputs ($datei,$zaehle);
                      fclose($daeit);
                      }
                      ?>
                      --------------------------------
                      Und html so:
                      <tr>
                      <td width="15%">
                      <input type="radio" name="vote" value="1">
                      </td>
                      <td width="85%"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">ja</font></td>
                      </tr>
                      <tr>
                      <td width="15%">
                      <input type="radio" name="vote" value="2">
                      </td>
                      <td width="85%"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">nein</font></td>
                      </tr>
                      <tr>
                      <td width="15%">
                      <input type="radio" name="vote" value="3">
                      </td>
                      <td width="85%"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">Manchmal</font></td>
                      </tr>
                      <tr>
                      <td width="91">&nbsp;</td>
                      <td width="48">
                      <input type="submit" name="vote" value="vote">
                      </td>
                      </tr>

                      Kommentar


                      • #12
                        Original geschrieben von archie
                        Ich kriege immer noch mehrere Parse Errors was ist daran falsch?

                        Also Php sihet so auf :
                        ------------------------------------------
                        <?php
                        $datei1= e1.txt;
                        $datei2= e2.txt;
                        $datei3= e3.txt;
                        Die Dateinamen müssen in Anführungszeichen:
                        $datei1= 'e1.txt';
                        usw.


                        if ($1 != " ")
                        $file = $datei1;
                        elseif
                        if ($2 != " ")
                        $file = $datei2;
                        else
                        $file = $datei3;
                        $1 und $2 sind keine gültigen Variablennamen. Was versuchst du da eigentlich? Du hast EINE Variable $vote, und die hat entweder den Wert 1, 2 oder 3. Ergo: if ($vote=='1') ... else if ($vote=='2') ... else ...

                        $datei = fopen($file, "r");
                        if($datei)
                        {
                        $zaehle = fgets($file,3);
                        fclose($file);
                        }
                        Warum beschränkst du das Auslesen auf drei Zeichen? Wenn der Zähler über 1000 geht, hast du noch ein zusätzliches Problem!
                        $zaehle++;
                        $datei =fopen($file, "w");
                        if($datei)
                        {
                        fputs ($datei,$zaehle);
                        fclose($daeit);
                        }
                        ?>
                        mein Sport: mein Frühstück: meine Arbeit:

                        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                        Kommentar


                        • #13
                          Danke Titus du hast die Frage beantwortet, genau das wollte ich wissen, was beim Radio übergeben wird.

                          Und noch ne frage, also der Script meldet, dass er die Datei nicht lesen kann und nicht schreiben kann, das liegt aber net am CHMOD oder sowas sondern weil er die Zuweisung net akzeptieren will. Und ich kriege ein Parse error. Wieso ist das falsch?
                          <?php
                          $datei1= 'e1.txt';
                          $datei2= 'e2.txt';
                          $datei3= 'e3.txt';
                          {
                          if ($vote=='1')
                          $file = $datei1;
                          } else{ \\HIER PARSE ERROR

                          if ($vote=='2')
                          $file = $datei2;
                          } else{

                          if ($vote=='3')
                          $file = $datei3;
                          } else{

                          $datei = fopen($file, "r");
                          if($datei)
                          {
                          $zaehle = fgets($file,100);
                          fclose($file);
                          }
                          $zaehle++;
                          $datei =fopen($file, "w");
                          if($datei)
                          {
                          fputs ($datei,$zaehle);
                          fclose($daeit);
                          }
                          }
                          ?>

                          Kommentar


                          • #14
                            Gewöhn Dir noch bitte an, um code-Postings [ code ] und [ /code ] bzw. [ php ] und [ /php ] einzufügen. Dann sieht man die Einrückungen auch

                            Vielleicht ist auch dieses Thema für dich interessant:
                            PHP-Lernen (Mit Windows-Messenger oder Yahoo-Messenger via Headset!)

                            Nun aber zu deinem aktuellen Problem:
                            Original geschrieben von archie
                            Code:
                            ...
                            {
                                if ($vote=='1')
                               $file = $datei1; 
                              } else{                 \\HIER PARSE ERROR 
                               if ($vote=='2')
                               $file = $datei2;
                              } else{
                               if ($vote=='3')
                               $file = $datei3;
                             } else{
                            ... (hier kommt der Kram mit Datei lesen)
                            }
                            Die geschweiften Klammern sitzen falsch; außerdem sind es mehr als nötig.
                            Für die Zukunft: Das ist ein grundlegender Fehler, passiert jedem von uns mal. Aber es ist auch eins der ersten Dinge nach denen man schaut, wenn ein Parse Error in einer Zeile mit geschweifter Klammer oder einem else/elseif auftaucht.

                            Und noch ein Denkfehler: das im letzten else-Zweig wird ausgeführt, wenn $vote undgültig ist. Soll aber nur, wenn $vote gültig ist.

                            So ist das besser:
                            PHP-Code:
                            if ($vote=='1')
                              
                            $file $datei1
                            elseif (
                            $vote=='2')
                              
                            $file $datei2;
                            elseif (
                            $vote=='3')
                              
                            $file $datei3;
                            else
                              
                            $file false;
                            if (
                            $file)
                            {
                            ... (
                            hier kommt der Kram mit Datei lesen)

                            dieser Code hier tut übrigens genau das gleiche:
                            PHP-Code:
                            switch ($vote)
                            {
                              case 
                            '1':
                                
                            $file $datei1;
                                break;
                              case 
                            '2':
                                
                            $file $datei2;
                                break;
                              case 
                            '3':
                                
                            $file $datei3;
                                break;
                              default:
                                 
                            $file false;
                            }
                            if (
                            $file)
                            {
                            ... (
                            hier kommt der Kram mit Datei lesen)

                            ... und in deinem speziellen geht es viiiiel kürzer:
                            PHP-Code:
                            $gueltig = array('1''2''3');
                            if (
                            in_array ($vote$gueltig))
                            {
                              
                            $file 'e'$vote'.txt';
                              ... (
                            hier kommt der Kram mit Datei lesen)

                            mein Sport: mein Frühstück: meine Arbeit:

                            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                            Kommentar


                            • #15
                              Dank dir Titus, für deine Großartige HIlfe. Jezt kriege ich keine Fehlermeldungen mehr
                              Aber eine Frage noch, Ich hab mir gedacht dass der Script nix erhöhen kann wenn da keine Zahl vorhanden ist. Deshalb habe ich in jede Datei einfach so die Zahl 0 reingeschrieben. Und das funzt leider nicht. Alles bleibt bei null. Wenn der Script mit der Dateiauswahl Probs hätte würde der mir das melden, also denke ich dasss der Script an sich schon mal (endlich) richtig ist.
                              Mach ich das falsh mit einer 0 in der Datei, wie sihest du das?

                              Kommentar

                              Lädt...
                              X