Finde Fehler nicht

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

  • Finde Fehler nicht

    Ich habe ein kleines Problem mit meinem Script.
    Es handelt sich um ein Formular in dem Fragen nach Themen beantwortet werden sollen. Das Problem ist das die Fragen des letzten Themas nicht in die DB eingetragen werden. Ich suche jetzt schon den ganzen Tag wo der Fehler liegen könnte finde ihn aber nicht. Für jeden Tip wäre ich dankbar.
    Da ich nicht weiss an welcher Stelle der Fehler liegen könnte muss ich leider mal den ganzen Code posten.
    PHP-Code:
    <?PHP
       session_start
    ();
    include (
    "header.html");
    include(
    "connect.inc.php");
            if (!
    session_is_registered('username'))
            {
             die (
    "<font face=\"Verdana\" font size=\"2\">Sorry, aber sie haben sich wohl nicht eigeloggt, oder ?");
            }
    //------------- Der User hat bereits an der Umfrage teilgenommen?---------------
    $query mysql_query("SELECT * FROM antworten WHERE user_ID = '".$ID."' AND fragen_ID = '55'");
    if(
    mysql_num_rows($query) != 0)
    {
         echo 
    "<FONT FACE=\"Verdana\" SIZE=\"2\">";
         echo 
    "Sorry, Sie haben bereits an der Umfrage teilgenommen!";
         echo 
    "<BR><BR>";
         echo 
    "<input type=\"button\" name=\"logout\" value=\"logout\" onClick=\"location.href='logout.php'\">";
         echo 
    "</FONT>";
            } else {
    //------------ Wenn nicht wird das Formular zum abstimmen angezeigt.------------

    if(isset($_POST[nextThema]))
    {
       if(
    $_POST[nextThema] == "leer")
       {
           echo 
    "<FONT FACE=\"Verdana\" SIZE=\"2\" COLOR=\"#336699\"><b>Ihre Daten wurden abgeschickt! Vielen Dank!</b><br><br>";
               echo 
    "<input type=\"button\" name=\"logout\" value=\"logout\" onClick=\"location.href='logout.php'\">";
          return;
          
    //danach das script verlassen
       
    }else
        
    $index=$_POST[nextThema];
       
    reset ($_POST);
       while (list (
    $key$val) = each ($_POST))
       {
          
    $frage=explode("-",$key);
          if(
    $frage[0]=="ant")
           
    mysql_query("insert into antworten (fragen_ID, ant_moe_ID, user_ID) VALUES ('".$frage[1]."','".$val."','".$ID."')");
       }
    }
         else
    $index=1;
    $nextindex=-1;
    ?> <FORM name="frmRegister" method="POST" action="<? echo $PHP_SELF ?>"> <?
    $result = mysql_query("SELECT * FROM user WHERE ID = '".$ID."'");
    while ($daten = mysql_fetch_array($result))
    {
        echo "<FONT FACE=\"Verdana\" SIZE=\"2\">";
        echo "Sie sind eingeloggt als:\n<b><u><FONT COLOR=\"#FF9900\">";
        echo $daten[1];
        echo "\n";
        echo $daten[3];
        echo "\n";
        echo $daten[2];
        echo "</b></u></font>";
     $i=0;
       $result1 = mysql_query("SELECT * FROM themen WHERE ID>= '".$index."' LIMIT 2");
        while ($trow = mysql_fetch_array($result1))
        {
            if($i == 0)
            {
               echo "<u><b>";
               echo "<FONT COLOR=\"#336699\">";
               echo "<br><br><br>";
               echo $trow['thema'];
               echo "</u></b></FONT>";
               $i++;
           }
           else $nextindex=$trow['ID'];
        }
       $result2 = mysql_query("SELECT * FROM fragen WHERE themen_ID = '".$index."'") OR die(mysql_error());
        while($frow=mysql_fetch_array($result2))
        {
            echo "<br><b>";
            echo "<FONT FACE=\"Verdana\" SIZE=\"2\">";
            echo "<br><br>";
            echo $frow['frage'];
            echo "</b><br><br>";

           $result3 = mysql_query("SELECT * FROM ant_moe") OR die(mysql_error());
           while($rw=mysql_fetch_array($result3))
           {
               echo "<FONT FACE=\"Verdana\" SIZE=\"2\">";
               echo "<input type=\"radio\" name=\"ant-".$frow[0]."\" value=\"".$rw[0]."\">\n";
               echo $rw[1];
               echo "</font>";
           }
       }
    }
        echo "<br><br>";
       if($nextindex != -1)// nur wenn es neue themen gibt muss man das feld einfügen
        echo'<input type=hidden name="nextThema" value="'.$nextindex.'">';
        else // ansonsten letzte seite
        echo'<input type=hidden name="nextThema" value="leer">';
        echo '<input type="submit" value="Weiter" onclick="return checkForm()" >';
    }
    echo "</FORM>";
    ?>

  • #2
    gibt es keine fehlermeldung?

    Kommentar


    • #3
      Nein keine Fehlermeldung.
      Läuft alles Prima bis ebend das die fragen des letzten Themas nicht eingetragen werden.

      Kommentar


      • #4
        werden die fragen, oder die
        PHP-Code:
        mysql_query("insert into antworten (fragen_ID, ant_moe_ID, user_ID) VALUES ('".$frage[1]."','".$val."','".$ID."')"); 
        antworten nicht eingetragen?

        Kommentar


        • #5
          mysql_query("insert into antworten (fragen_ID, ant_moe_ID, user_ID) VALUES ('".$frage[1]."','".$val."','".$ID."')");

          Es wird bis zu Thema 7 alles eingetragen.
          fragen_ID, ant_moe_ID und die user_ID.

          Das sind 46 Fragen bis dahin.
          Die stehen auch in der DB dann drinn.
          Aber für Thema 8 schreibt er nichts hinein.
          Nach dem absende Button müssten dann 55 antworten drin stehen statt
          46. Das letzte Thema hat die fehlenden 9 fragen.

          Kommentar


          • #6
            dann guck dir mal die abfrage an:

            PHP-Code:
            if($_POST[nextThema] == "leer"
            abgesehen davon, dass man nie == 'leer' fragen würde, beendest du doch da schon das script, obwohl natürlich noch daten zu schreiben wären!

            Kommentar


            • #7
              Ja abe mit if nextThema sag ich ihm doch er soll solange die Themen durchgehen bis kein Thema mehr vorhanden ist.
              Und wenn dann Thema leer zutrifft also keine themen ID mehr in der DB steht soll er den echo befehl ausführen.
              Macht er ja so nur warum ignoriert er das letzte thema ?
              Ich habe mal testweise das return; raus genommen dann trägt er auch das 8. thema ein. Allerdings zeigt er mir dann nach klick auf absende button das 1. thema wieder an.

              Kommentar


              • #8
                So, das hast du rausgefunden! Und jetzt denk mal ganz scharf nach!!!

                (besser mal vorher gedanken über ne sinnvolle struckturierung machen)

                Kommentar


                • #9
                  so ich habe mit
                  echo "nextT:".$nextindex."<br>";
                  mal ne kontrolle eingebaut.

                  Bei Thema 7 bekomme ich nexT:8
                  Bei Thema 8 bekomme ich nexT:-1
                  Also wenn ich das richtig verstehe wird bei aufruf Thema 8 bereits
                  nächstes Thema als leer (habe ich jetzt in "" geändert .)
                  gezählt und wenn nextThema = leer bricht er das script mit return ab und trägt nichts in die DB ein. Richtig @ TobiaZ ?
                  Zuletzt geändert von emacs; 23.10.2003, 20:12.

                  Kommentar


                  • #10
                    erkannt!

                    da kannst du mal sehen, was man davon hat, wenn man weiß, was man programmiert!

                    Kommentar


                    • #11
                      hmmm... aber nur das return rausnehmen macht ja keinen sinn.
                      muss ich jetzt das ganze script umkrempeln damit ich nach dem letzten
                      thema auch ne vernünftige endmitteilung bekomme?
                      von wegen Vielen Dank blabla...

                      Kommentar


                      • #12
                        naja, n bisschen umstellen musst du schon! Aber auch da wirst du sicher noch drauf kommen.

                        Kommentar


                        • #13
                          *heul*
                          ich gebs auf.
                          Ich komme einfach nicht weiter. Jetzt sitz ich seid gestern an dem sch...
                          und bekomm es nicht gebacken das er nach dem letzten Thema mir nicht wieder thema 1 anzeigt nach dem ich return raus genommen habe.
                          So dämlich kann doch gar keiner sein.

                          Kommentar


                          • #14
                            nee! echt nicht!

                            Aber zum Programmieren braucht man auch ein bisschen logik! Wenn du versuchst deinen Code zu verstehen (das hab ich ja sogar geschafft), dann brauchst du nicht blind rumzuprobieren, sondern änderst ein bisschen was, und gut ist!

                            Kommentar


                            • #15
                              Ja logik ist gut....
                              Ich verzweifel langsam.
                              Muss denn das return unbedingt raus ?
                              Zuletzt geändert von emacs; 24.10.2003, 18:00.

                              Kommentar

                              Lädt...
                              X