timestamp

sunflower84

Erfahrenes Mitglied
Hi Leute

Ich habe ein Quiz mit 20 Fragen. In meiner Datenbank habe ich eine Tabelle auswertung wo die Antworten drin gespeichert werden. Mit einem Timestamp trage ich die aktuelle Uhrzeit und das Datum ein. Jetzt soll ich aber zu jeder Frage ein timestamp machen, d.h wenn man auf den Button next_Question klickt soll wieder ein neues timestamp gemacht werden, damit man später auswerten kann wie lange der Benutzer für die Frage gebraucht hat. Wie mache ich denn das? Hier mein Code:
PHP:
<? Session_start();
$i = $_POST['seite'];
       if($i=="")
       {
       $timestamp = time();
       $_SESSION['time'] = date("Y-m-d",$timestamp)." ".date("H:i:s",$timestamp);
       $i=0;
       }
if ($i == 20)
        {header("Location: result.php");}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Exactt</title>

	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

         <link rel="stylesheet" type="text/css" href="style.css">


</head>





<body scroll="no">


<table cellspacing="10" cellpadding="5" width="900" height="550" align="center" bgcolor="#ffffff" border="0">

       <tr bgcolor="#A7D6EF"><td colspan="2" width="100%" height="10%"><h1><div align="left"><img src="uhr11.jpg" align="left" width="70" height="85" style="margin-left:40px"></div></font>

         <br><font size="+2" color="#005C27"><div align="center">EXACTT - trial questionnaire</div></font> </h1>

               </td></tr>




<tr><td width=10% bgcolor="#A7D6EF">

<div>

<p>

        <a href="home.html"><img src="home5.jpg" border="0" alt="home"></a> <br><br>

        <a href="how.html"><img src="how_to_use.jpg" border="0" alt="How to use"></a> <br><br>

        <a href="questions.php"><img src="questionnaire.jpg" border="0" alt="Question"></a> <br><br>

        <a href="impressum.html"><img src="impressum2.jpg" border="0" alt="Impressum"></a> <br><br>

        <div align="center">
        <a href="index.php"><b><font size="-1">logout</font></b></a>
        </div>

<br><br><br><br><br><br><br><br><br><br><br>
<div align="left"><a href="" onclick="Fenster1=window.open('hinweis.html','','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=700,height=600'); return false;">Copyright BI </a></div>
    </p>
</td>
<td align=center align=top>
<table border=0 width=75% height=100%>
<tr><td colspan=2><br></td></tr>
<tr><td colspan=2><br></td></tr>
<tr><td colspan=2><br></td></tr>

<?php
        //$questions = $_POST["fragen"];




        $sql = mysql_connect("localhost", "root", "")  or
        die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");

         mysql_select_db("db_test") or
        die ("MySQL-Fehler: Datenbank nicht gefunden");
    $count = mysql_query("SELECT * FROM fragen");
    $num = mysql_num_rows($count);


       //Antwort überprüfen
        $antwort1 = $_POST['antwort1'];
        $antwort2 = $_POST['antwort2'];
        $antwort3 = $_POST['antwort3'];
        if ($i != 0)
        {

                 $user_id = $_SESSION['user_id'];
                 $date_time = $_SESSION['time'];


                 //Ergebniszeile anlegen
		$query = "SELECT * FROM auswertung WHERE USER_ID = '$user_id' AND DATETIME = '$date_time' AND FRAGE = '$i'";
                 $auslesen = mysql_query($query);
                 while ($erg = mysql_fetch_assoc($auslesen))
	        {
                 $weiter = 1;
                 }

                 if ($weiter != 1)
                 {$query = "INSERT INTO auswertung (ID,USER_ID,FRAGE,DATETIME) VALUES(NULL,'$user_id','$i','$date_time')";
                 $eintragen = mysql_query($query);
                 if (mysql_errno())
	        die ("MySQL-Fehler: " . mysql_error());
                 }

        		$select2 = mysql_query("SELECT * FROM antworten where ID = $i");
	        while ($ergebnis2 = mysql_fetch_assoc($select2))
	        {
                 //Antwort 1 überprüfen und in Auswertung eintragen
                 if ($antwort1 != "" && $ergebnis2['richtig1'] || $antwort1 == "" && ($ergebnis2['richtig1'] == false))
                 {//echo 'Antwort 1 war richtig<br>';
                 $query="UPDATE auswertung SET ANTWORT1 = 1 WHERE FRAGE = '$i' AND USER_ID = '$user_id'";}
                 else
                 {//echo 'Antwort 1 war falsch<br>';
                 $query="UPDATE auswertung SET ANTWORT1 = 0 WHERE FRAGE = '$i' AND USER_ID = '$user_id'";}
                 $eintragen = mysql_query($query);
                 if (mysql_errno())
	        die ("MySQL-Fehler: " . mysql_error());

                 if ($antwort2 != "" && $ergebnis2['richtig2'] || $antwort2 == "" && ($ergebnis2['richtig2'] == false))
                 {//echo 'Antwort 2 war richtig<br>';
                 $query="UPDATE auswertung SET ANTWORT2 = 1 WHERE FRAGE = '$i' AND USER_ID = '$user_id'";}
                 else
                 {//echo 'Antwort 2 war falsch<br>';
                 $query="UPDATE auswertung SET ANTWORT2 = 0 WHERE FRAGE = '$i' AND USER_ID = '$user_id'";}
                 $eintragen = mysql_query($query);

                 if ($antwort3 != "" && $ergebnis2['richtig3'] || $antwort3 == "" && ($ergebnis2['richtig3'] == false))
                 {//echo 'Antwort 3 war richtig<br>';
                 $query="UPDATE auswertung SET ANTWORT3 = 1 WHERE FRAGE = '$i' AND USER_ID = '$user_id'";}
                 else
                 {//echo 'Antwort 3 war falsch<br>';
                 $query="UPDATE auswertung SET ANTWORT3 = 0 WHERE FRAGE = '$i' AND USER_ID = '$user_id'";}
	        }
                 $eintragen = mysql_query($query);
        }


    $select = mysql_query("SELECT * FROM fragen LIMIT $i,1");

        while ($ergebnis = mysql_fetch_assoc($select))
        {
        ?><tr><td align=left colspan=2 ><font size="+1"  color="#092644"><?echo $ergebnis['Fragen']?></font></td></tr>
        <tr><td colspan=2><br></td></tr><?
        }
    $select2 = mysql_query("SELECT * FROM antworten where ID = $i+1");


        echo '<form action="questions.php" method=post>';
        while ($ergebnis2 = mysql_fetch_assoc($select2))
        {
        ?><tr><td width=2% valign=top><input type=checkbox name=antwort1></td><td><font size="-1"  color="#092644"> <? echo $ergebnis2['antwort1'];?></font></td></tr>
        <tr><td width=2% valign=top><input type=checkbox name=antwort2></td><td><font size="-1"  color="#092644"><?echo $ergebnis2['antwort2']?></font></td></tr>
        <tr><td width=2% valign=top><input type=checkbox name=antwort3></td><td><font size="-1" color="#092644"><?echo $ergebnis2['antwort3']?></font></td></tr>


<?
        }
        /*if($i < $num)
        { */
?>
         <input type=hidden name=seite value="<? echo $i+1; ?>"> <?
        echo '<tr><td align=center valign=bottom colspan=2 height=60%><input name=submit src=next_question.jpg style="border:0;" type="image"></input></td></tr>' ;
        //<echo '<a href="question4.php?seite='.($i+1).'"> <br> Weiter</a>';
        //}
        ?>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>
        <tr><td colspan=2><br></td></tr>



        </form>
</td>
</tr>

</table>

</table>
</body>

</html>

Lg
Sunflower84
 
Wenn ich dich richtig verstanden habe, willst die Zeit, an welcher der User die Antwort gibt in die Datenbank speichern, oder? Eigentlich brauchst du dann bei den Antworten nur eine neue Spalte (z.B. ReplyTime) in welche jedesmal wenn der User auf den Antwortbutton klickt (Sofern es sowas gibt) die aktuelle time() gespeichert wird.

Bin nicht sicher ob ich dich richtig verstanden habe. Am besten du gibst vielleicht kurz die relevanten Stellen in deinem Code an :)

Gruss
De Igäl

Edit:
PHP:
$query = "INSERT INTO auswertung (ID,USER_ID,FRAGE,DATETIME) VALUES(NULL,'$user_id','$i','$date_time')";

Hier kannst du das anpassen:

PHP:
$query = "INSERT INTO auswertung (ID,USER_ID,FRAGE,DATETIME,REPLYTIME) VALUES(NULL,'$user_id','$i','$date_time', time())";
 
Zuletzt bearbeitet:
Die Spalte habe ich schon. Sobald der Benutzer mit den Fragen beginnt, wird die Zeit und das Datum in die Spalte geschrieben. Aber jetzt soll bei jedem klick zur nächsten Frage ein neues timestamp gesetzt werden. D.h ich habe zu jeder Frage eine andere Zeit in der Tabelle.
Codeausschnitte von oben:
Momentan mache ich das so:
PHP:
<? Session_start();
$i = $_POST['seite'];
       if($i=="")
       {
       $timestamp = time();
       $_SESSION['time'] = date("Y-m-d",$timestamp)." ".date("H:i:s",$timestamp);
       $i=0;
       }
if ($i == 20)
        {header("Location: result.php");}

?>

Es soll aber jetzt zu jeder Frage ein neues timestamp gesetzt werden:
Hab gerade mal versucht, bevor der Button next_Question geklickt wird ein timestamp zu machen.
PHP:
$timestamp = time();
       $_SESSION['time'] = date("Y-m-d",$timestamp)." ".date("H:i:s",$timestamp);
        echo '<tr><td align=center valign=bottom colspan=2 height=60%><input name=submit src=next_question.jpg style="border:0;" type="image"></input></td></tr>' ;

Das geht auch super. Hab zu jeder Frage eine andere Zeit, nur habe ich jetzt in der Seite result.php, die aufgerufen wird wenn der Test fertig ist nichts mehr drin stehen.
Woran liegt das denn?

Lg
Sunflower84
 
Hm... Meine Glaskugel will mir den Source von result.php nicht zeigen ;)

Schreib mal zu oberst im PHP-File "error_reporting(E_ALL);" rein. Damit sollten einige Fehler mehr ausgegeben werden, wenn welche vorhanden sind. Dann kannst du das Problem vielleicht besser eingrenzen.
 
Wenn du eine halbwegs aktuelle MySQL Version hast, kannst du auch eine Spalte mit dem Typ Timestamp einfügen und den Standart wert auf CURRENT_TIMESTAMP stellen:

Code:
ALTER TABLE `bla` CHANGE `zeit` `zeit` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP

Dann fügst du einfach alle anderen Daten ein und hast in dem Feld die aktuelle Zeit drinstehen, ohne in deinem Skript näher darauf eingehen zu müssen.
 
Und die Timestamps sind in der Datenbank richtig eingetragen? Eigentlich ist alles wunschgemäss, ausser dass du jetzt auf der Seite result.php keine Ausgabe mehr hast?

Poste doch ein paar Linien des Problemcodes. Im ursprünglichen Code scheint jo alles in Ordnung zu sein, wenn er die Zeitstempel wunschgemäss einschreibt.
 
Hab jetzt in der Datenbank current time aktiviert. Hatte dann den gleichen Fehler das er mir die result.php nicht aufgerufen hat. Hab ihn aber beseitigt. Hatte in der result.php eine if die nie erfüllt war und deshalb keine Ergebnisse. Aber vielen Dank für die Idee mit dem current time, mit dem klappt es nämlich super :)

Lg
Sunflower84
 

Neue Beiträge

Zurück