Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Seltsamer Fehler bei 2 Skripten

  1. #1
    Meister(in) Avatar von Cujo
    Registriert seit
    11.07.2008
    Beiträge
    438
    Danke
    1
    Bekam 1 mal "Danke" in 1 Posting

    Frage Seltsamer Fehler bei 2 Skripten

    Hallo,

    ich habe hier eine Seite:

    www.raetselstunde.de/quizfrage-des-tages.html

    auf der ich 2 Skripte zum Einbinden anbiete. Jedes Skript für sich allein funktioniert einwandfrei. Nur wenn ich die beiden zusammen auf einer Seite einbinde, kommt es zu folgendem Fehler:

    Beim allerersten Aufruf, d. h. wenn die Seite zum ersten Mal geladen wird und ich auf eine Antwort klicke, fehlt im erscheinenden Alert die Lösung und es fehlen die Antworten. Wenn ich einen Reload der Seite mache funktioniert es so wie es soll. Da es ein bisschen schwierig zu erklären ist, hier mal ein Screenshot:



    Und hier sind die Codes:

    Quizfrage des Tages:

    PHP-Code:
    <?php
      
    @mysql_connect("Server""Benutzer""Passwort") or
          die (
    "Fehler beim Connect");
          
        @
    mysql_select_db("Datenbank") or
          die (
    "Datenbank nicht vorhanden");
      function 
    resetDate()
      {
         
    $query "Update
                    quizfrage
                   set
                     datum='0000-00-00'"
    ;
                     
         
    mysql_query($query) or 
           die (
    "MySQL-Fehler: " mysql_error());
      }
      
      function 
    getQuestion(&$question, &$antwortr, &$antwortf1, &$antwortf2, &$antwortf3)
      {
          
    $result false;
          
          
    // Frage des Tages schon mal ermittelt?
          
    $query "Select
                      id,
                      question,
                      antwortr,
                      antwortf1,
                      antwortf2,
                      antwortf3
                    from
                      quizfrage
                    where
                      datum=curdate()"
    ;
                      
           
    $result mysql_query($query) or 
             die (
    "MySQL-Fehler: " mysql_error());
             
             
           if (
    mysql_num_rows($result))
           {
               
    $row mysql_fetch_array($result);
               
    $question  $row['question'];
               
    $antwortr $row['antwortr'];
               
    $antwortf1 $row['antwortf1'];
               
    $antwortf2 $row['antwortf2'];
               
    $antwortf3 $row['antwortf3'];           
               
    $result true;
           }
           else
           {
              
    // Es wurde noch keine Frage des Tages ermittelt
              
    $query "Select
                      id,
                      question,
                      antwortr,
                      antwortf1,
                      antwortf2,
                      antwortf3
                    from
                      quizfrage
                    where
                      datum='0000-00-00'
                    order by rand()"
    ;
                    
              
    $result mysql_query($query) or 
                 die (
    "MySQL-Fehler: " mysql_error());
                 
              if (
    mysql_num_rows($result))
              {
               
    $row mysql_fetch_array($result);
               
    $id  $row['id'];
               
    $question  $row['question'];
               
    $antwortr  $row['antwortr'];
               
    $antwortf1 $row['antwortf1'];
               
    $antwortf2 $row['antwortf2'];
               
    $antwortf3 $row['antwortf3'];           
               
    $result true;
      
                 
    // Die Frage haben wir, jetzt Datum aktualisieren  
                 
    $query "Update
                             quizfrage
                           set
                             datum=curdate()
                           where
                             id = 
    $id";
                             
                 
    mysql_query($query) or 
                    die (
    "MySQL-Fehler: " mysql_error());
                 
                 unset (
    $id);
                    
                 
    $result true;
              }
              else
              {
                 
    // Alle Fragen durch, Datum resetten
                 
    resetDate();
                 
                 
    $result getQuestion($question$antwortr,$antwortf1,$antwortf2,$antwortf3);
              }
           }
           
           return 
    $result;
      }
      
      
    $result getQuestion($question$antwortok$antwortf1$antwortf2$antwortf3);
      
    if(!isset(
    $_POST['senden'])){
      
    $antworten_qft = array ($antwortok,$antwortf1,$antwortf2,$antwortf3);
      
    shuffle ($antworten_qft);
      
    $_SESSION['antworten_qft[0]']=$antworten_qft[0];
      
    $_SESSION['antworten_qft[1]']=$antworten_qft[1];
      
    $_SESSION['antworten_qft[2]']=$antworten_qft[2];
      
    $_SESSION['antworten_qft[3]']=$antworten_qft[3];
      
    $_SESSION['question']=$question;
      
    $_SESSION['antwortok']=$antwortok;
    }
    else
    {
      
    $antworten_qft = array ($_SESSION['antworten_qft[0]'],$_SESSION['antworten_qft[1]'],$_SESSION['antworten_qft[2]'],$_SESSION['antworten_qft[3]']);
      
    $antwortok=$_SESSION['antwortok'];
      
    $question=$_SESSION['question'];
    }
    unset (
    $antwortf1,$antwortf2,$antwortf3);
      if (
    $result === true) {
        echo 
    "<form method='post' action='quizfrage.html'>";
        echo 
    "<div style='text-align:center'>";
        echo 
    "$question";
        echo 
    "<div style='margin-left:auto; margin-right:auto; text-align:left; width:200px'>";
        echo 
    "<input type='radio' name='antwort' value='$antworten_qft[0]' /> $antworten_qft[0]<br />";
        echo 
    "<input type='radio' name='antwort' value='$antworten_qft[1]' /> $antworten_qft[1]<br />";
        echo 
    "<input type='radio' name='antwort' value='$antworten_qft[2]' /> $antworten_qft[2]<br />";
        echo 
    "<input type='radio' name='antwort' value='$antworten_qft[3]' /> $antworten_qft[3]<br />";
        echo 
    "<input type='submit' name='senden' value='Prüfen' />";
        echo 
    "<br />";
        echo 
    "</div>";
        echo 
    "Quizfrage des Tages - powered by <a target='_blank' href='http://www.raetselstunde.de'>www.raetselstunde.de</a>";
        echo 
    "</div>";
        echo 
    "</form>";
      }
      else
        echo 
    "Mist, da ist was schiefgelaufen.";
    if(isset(
    $_POST['antwort']))
    {
      
    $eingabe=$_POST[antwort];
        if (
    $eingabe === $antwortok) echo '<script type="text/javascript"> alert("Sehr gut, das war die richtige Antwort."); </script>'; else echo '<script type="text/javascript"> alert("Leider falsch. ' $antwortok ' wäre richtig gewesen."); </script>';
    }
    ?>
    Zufalls-Quizfrage:
    PHP-Code:
    <?php
    @mysql_connect("Server""Benutzer""Passwort") or
          die (
    "Fehler beim Connect");
          
        @
    mysql_select_db("Datenbank") or
          die (
    "Datenbank nicht vorhanden");
      
      function 
    getQuestionz(&$questionz,&$antwortzr,&$antwortzf1,&$antwortzf2,&$antwortzf3)
      {
        
    // Zufallsfrage ermitteln
          
    $queryz =  "Select
                      question,
                      antwortr,
                      antwortf1,
                      antwortf2,
                      antwortf3
                    from
                        quizfrage
                    order by rand()"
    ;
                      
           
    $resultz mysql_query($queryz) or 
             die (
    "MySQL-Fehler: " mysql_error());         
             
               
    $rowz mysql_fetch_array($resultz);
               
    $questionz  $rowz['question'];
               
    $antwortzr  $rowz['antwortr'];
               
    $antwortzf1 $rowz['antwortf1'];
               
    $antwortzf2 $rowz['antwortf2'];
               
    $antwortzf3 $rowz['antwortf3'];    
               
    $resultz true;
              
           return 
    $resultz;
      }
      
      
    $resultz getQuestionz($questionz,$antwortzr,$antwortzf1,$antwortzf2,$antwortzf3);
      
      
    $antwortenz = array ($antwortzr,$antwortzf1,$antwortzf2,$antwortzf3);
      
    shuffle($antwortenz);
      unset (
    $antwortzf1,$antwortzf2,$antwortzf3);

      if (
    $resultz === true) {
        echo 
    "<form method='post' action='quizfrage-zufall.html'>";
        echo 
    "<div style='margin-left:auto; margin-right:auto;width:400px'>";
        echo 
    "$questionz";
        echo 
    "<div style='margin-left:auto; margin-right:auto; text-align:left; width:200px'>";
        echo 
    "<input type='radio' name='antwortz' value='$antwortenz[0]' /> $antwortenz[0]<br />";
        echo 
    "<input type='radio' name='antwortz' value='$antwortenz[1]' /> $antwortenz[1]<br />";
        echo 
    "<input type='radio' name='antwortz' value='$antwortenz[2]' /> $antwortenz[2]<br />";
        echo 
    "<input type='radio' name='antwortz' value='$antwortenz[3]' /> $antwortenz[3]<br />";
        echo 
    "<input type='submit' name='sendenz' value='Prüfen' />";
        echo 
    "<br />";
        echo 
    "</div>";
        echo 
    "Zufalls-Quizfrage - powered by <a target='_blank' href='http://www.raetselstunde.de'>www.raetselstunde.de</a>";
        echo 
    "</div>";
        echo 
    "</form>";
      }
      else
        echo 
    "Mist, da ist was schiefgelaufen.";

    if(isset(
    $_POST['antwortz']))
    {
      
    $antwortalt=$_SESSION['antwortalt'];
      
    $eingabez=$_POST[antwortz];
      
      if (
    $eingabez === $antwortalt) echo '<script type="text/javascript"> alert("Sehr gut, das war die richtige Antwort."); </script>'; else echo '<script type="text/javascript"> alert("Leider falsch. ' $antwortalt ' wäre richtig gewesen."); </script>';
    }
    $_SESSION['antwortalt']=$antwortzr;
    ?>
    Hat jemand eine Idee, wo der Fehler liegen könnte?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Geändert von Cujo (27.09.2008 um 12:47 Uhr)

  2. #2
    Meister(in)
    Themenstarter
    Avatar von Cujo
    Registriert seit
    11.07.2008
    Beiträge
    438
    Danke
    1
    Bekam 1 mal "Danke" in 1 Posting

    Standard

    Ich bin jetzt einen Schritt weiter gekommen.

    Ich habe herausgefunden, dass es was mit session_start() zu tun hat. Ursprünglich hatte ich session_start() in beiden php-Dateien drin. Dann kam allerdings eine Warnung, dass vorher schon eine Ausgabe erfolgt. Deshalb habe ich session_start() in den Dateien quizfrage.html und quizfrage-zufall.html ganz an den Anfang, noch vor den Doctype, gesetzt. Deshalb hat der Befehl auch im php-Code gefehlt. Die beiden html-Dateien haben jeweils ein include drin für die jeweilige php-Datei.

    Jetzt habe ich in die php.ini mal session.auto-start = 1 eingetragen und in den html-Dateien das session_start() rausgenommen.

    Die gute Nachricht ist, es funktioniert jetzt einwandfrei auf meiner Seite. Die schlechte Nachricht ist, die beiden Skripte stehen noch auf einer anderen Domain auf einer Seite. Dort tritt weiterhin der gleiche Fehler auf. Wer die andere Domain haben will --> PN.

    Hat noch jemand eine Idee, was ich tun könnte, damit es überall funktioniert?

  3. #3
    Bandit
    Gast

    Standard

    Keine HTML-Dateien nehmen und überall session_start einbauen. Es bringt doch nichts, wenn du an einem Server an der php.ini rumfummelst (was ich schon nicht verstehe) und bei einem anderen Server das nicht machen kannst,

  4. #4
    Meister(in)
    Themenstarter
    Avatar von Cujo
    Registriert seit
    11.07.2008
    Beiträge
    438
    Danke
    1
    Bekam 1 mal "Danke" in 1 Posting

    Standard

    Zitat Zitat von bandit600 Beitrag anzeigen
    Keine HTML-Dateien nehmen und überall session_start einbauen. Es bringt doch nichts, wenn du an einem Server an der php.ini rumfummelst (was ich schon nicht verstehe) und bei einem anderen Server das nicht machen kannst,
    Es hat Warnungen gegeben, als ich es direkt in die php-Datei eingebaut hatte.

    Ich habe es jetzt aber nochmal reingesetzt. Seltsamerweise kommen jetzt keine Warnungen mehr, aber auf der anderen Domain geht es immer noch nicht. Auf meiner dagegen schon.

  5. #5
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Also mit dem session_start() kann ich dir zwei Möglichkeiten geben (sind auch kombinierbar ):
    1. Erstelle eine Datei session_start.php, da schreibst du einfach hinein:
    PHP-Code:
    <?
    session_start
    ();
    ?>
    In allen Dateien, die auf die Session angewiesen sind, schreibst du dann oben:
    PHP-Code:
    include_once "session_start.php"
    Dann ist garantiert, dass das überall da ist und nicht doppeltaufgerufen wird.
    2. Du änderst etwas in der .htaccess:
    Code:
    php_flag output_buffering on
    Dann kannst du, auch wenn es schon Ausgaben gab, header versenden und Cookies setzen (also auch sessions starten )

    Viele liebe Grüße
    The User

  6. #6
    Bandit
    Gast

    Standard

    Zu 1. Warum soll ich dann nicht direkt session_start in die Datei reinschreiben?
    zu 2. Die denkbar schlechteste Lösung.

  7. #7
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    1. Du packst das in jede Datei an den Anfang, die das braucht, also funzt dann auch jede Datei alleine, wenn die Datei jedoch includet wird, und schonmal das include_once gemacht worden ist, meckert der nicht über Ausgaben.
    Oder weil man an die Session vielleicht auch einmal andere Vorgänge anknüpfen möchte, bei mir ist das so.
    2. Aber praktisch, wenn man jeder Zeit header() aufrufen kann, ein cookie setzen kann... vorallem auch zum debuggen, gibst was kleines aus, oder es kommt ne fehlermeldung, und schon funktioniert der header nicht, das ist doch doof.
    Geändert von The User (28.09.2008 um 20:52 Uhr)

  8. #8
    Bandit
    Gast

    Standard

    Zu 1. Naja, ob das wirklich Sinn macht, aber egal
    Zu 2. Man kann immer einen header senden oder einen Keks setzen, wenn man ordentlich programmiert. Das Output-Buffering einzuschalten ist definitiv die schlechtere Lösung und maximal für unfähige Programmierer zu empfehlen.

  9. #9
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Was ist denn schlimm dadran?

  10. #10
    Meister(in)
    Themenstarter
    Avatar von Cujo
    Registriert seit
    11.07.2008
    Beiträge
    438
    Danke
    1
    Bekam 1 mal "Danke" in 1 Posting

    Standard

    Um nochmal auf das Thema zurück zu kommen:

    Der momentane Stand ist, dass session_start(); in beiden php-Dateien ganz am Anfang steht. In den html-Dateien steht es nicht mehr drin. Zusätzlich habe ich in der php.ini session.auto-start = 1 stehen --> Ergebnis: Bei mir funktioniert es, auf der anderen Domain nicht.

Ähnliche Themen

  1. Seltsamer Uploaderror -.-
    Von Teron Gerofied im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 08.09.2008, 02:45
  2. Seltsamer Fehler mit der Übergabe von FILES in php...
    Von Teron Gerofied im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 09.03.2008, 18:51
  3. Java-Menü: seltsamer Fehler
    Von veebee im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 30.12.2006, 20:05
  4. Seltsamer Effekt
    Von gerds im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 2
    Letzter Beitrag: 03.12.2006, 17:14
  5. arbeiten mit skripten
    Von neuling007 im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 03.05.2005, 15:47

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •