Datenübertragen per Formular
kasten
- php
Guten Tag.
Ich habe folgendes Problem. Ich habe ein Formular erstellt, mit dessen Hilfe mir die Daten in die Datenbank eingeschrieben werden.
Drücke ich den Button "Daten eintragen", so werden alle Daten wie sie sollen in die Datenbank eingeschrieben.
Da ich jedoch einen Test gecodet habe, soll nach bestimmter Zeit der Test gespeichert werden. Das klappt auch. Nur wenn ich jetzt mithilfe des Javascripts diesen Test abspeichern möchte, werden alle Daten aus dem Formular wie sie sollen in der Datenbank abgespeichert, bis auf eines. Umzwar das Feld fragen. Da wird irgendwie die Variable nicht übernommen und ich verstehe nicht warum. Weil klicke ich manuell auf den Button, so funktioniert ja alles... nur wenn ich ihn vom Javascript aufrufen lassen klappt es nicht... da ist doch keine Logik dahinter.
Kann mir bitte einer sagen woran das liegt? Hier ist das Script.
---------------------------------------------------------------
Template: fragen.tpl
---------------------------------------------------------------
$header
<script type="text/javascript">
<!--
var intMinuten = $bearbeitungszeit;
var intSekunden = $bearbeitungszeit;
var intHalf = $ur_bearbeitungszeit / 2;
function countdown(){
document.getElementById('timerID').innerHTML = intSekunden;
intSekunden--;
if(intSekunden == intHalf){
window.alert('Dir bleiben noch ' + intSekunden + ' Sekunden Zeit!');
}
if(intSekunden >= 0){
window.setTimeout("countdown()", 1000);
}else{
window.alert('Der CM-Test ist zu Ende und wird gespeichert!');
document.frmForm1.Speichern.click();
}
}
-->
</script>
<body onload="countdown();">
<form action="$dateiname" name="frmForm1" method="post">
<table style="width:100%;border: 1px solid #000000" border="0" cellpadding="5" cellspacing="1" align="center">
<tr>
<td class="tabletitle" colspan="2"><font size="5"><center><b>CM-Examen Fragen</center></font></b><br><center><b>Verbleibende Zeit: <span id="timerID">Sekunden zeit.</span> Sekunden</b> </center></td>
</tr>
<tr>
<td colspan="2"><hr></td>
</tr>
$fragen_ausgabe
<tr>
<td class="tabletitle" colspan="2"><center><input type="submit" class="submit" value="Test abschließen" name="Speichern"></center></td>
</tr>
</table>
</form>
</body>
$footer
---------------------------------------------------------------
*****************************************************************
*****************************************************************
---------------------------------------------------------------
fragen.php
---------------------------------------------------------------
if(isset($_POST['Speichern']) || isset($_POST['submit']))
{
// Frage Speichern
$count = 1;
$zahl = $limit + 1;
while($count < $zahl)
{
$antwort = 'antwort_'.$count;
$antwort = $_POST[$antwort];
$frage = 'frage_'.$count;
$frage = $_SESSION[$frage];
$eintragen = $db->query("INSERT INTO ".$prefix."antworten
( antwort
, frage
, fragen\_id
, id
, user
, ip
) VALUES ('$antwort', '$frage', '$count', '', '$benutzer', '$ip')") or die(mysql_error());
$count++;
echo $frage;
echo '<br>';
echo $antwort;
echo '<br>';
echo '<br>';
}
// Frage Auswerten
$count = 1;
$zahl = $limit + 1;
$a = 0;
while($count < $zahl)
{
$result = $db->query("SELECT * FROM ".$prefix."antworten
WHERE user = '".$benutzer."' AND fragen_id='".$count."'") or die(mysql_error());
$row = $db->fetch_array($result);
$frage = $row['frage'];
$antwort = $row['antwort'];
$sql = $db->query("SELECT * FROM ".$prefix."fragen
WHERE id = '".$frage."'") or die(mysql_error());
$r = $db->fetch_array($sql);
$richtige_antwort=$r['richtige_antwort'];
if ($richtige_antwort==0) $richtige_antwort='3';
if($antwort == $r['richtige_antwort'])
{
$a = $a+1;
}
$count++;
//echo 'frage:'.$frage.'<br>';
//echo 'antwort:'.$antwort[$count].'<br>';
//echo 'Richtige Antwort:'.$r['richtige_antwort'].'<br>';
//echo 'Punktzahl:'.$a.'<br><br>';
}
etc....
---------------------------------------------------------------
****************************************************************
Dankeschön schon im Voraus.
MfG
kasten
bis auf eines. Umzwar das Feld fragen. Da wird irgendwie die Variable nicht übernommen und ich verstehe nicht warum.
im Template gibts kein solches Feld. Falls es per PHP reingefummelt wird, wäre es nett von dir, uns das Ergebnis-HTML zu zeigen ... nicht jeder hier hat einen PHP-Compiler im Kopf.
document.frmForm1.Speichern.click();
Formulare werden per submit() abgeschickt, wenns denn JS sein muss.
Gruß
MrWurf
bis auf eines. Umzwar das Feld fragen. Da wird irgendwie die Variable nicht übernommen und ich verstehe nicht warum.
im Template gibts kein solches Feld. Falls es per PHP reingefummelt wird, wäre es nett von dir, uns das Ergebnis-HTML zu zeigen ... nicht jeder hier hat einen PHP-Compiler im Kopf.
document.frmForm1.Speichern.click();
Formulare werden per submit() abgeschickt, wenns denn JS sein muss.
Gruß
MrWurf
Entschuldigung ;d ich poste mal die gesammte fragen.php Dann wird sich das wohl klären ;D
mfg
kasten
<?php
ob_start();
session_cache_expire(1);
session_start();
if($_SESSION['cm_userName'] == '' OR $_SESSION['cm_userId'] == ''){
header('location: index.php');
exit;
}
require('./global.php');
$query= $db->query("SELECT * FROM ".$prefix."admin_einstellungen WHERE id='4'") or die(mysql_error());
$row = $db->fetch_object($query);
$limit = $row->funktion;
$query= $db->query("SELECT * FROM ".$prefix."admin_einstellungen WHERE id='1'") or die(mysql_error());
$row = $db->fetch_object($query);
$day = date("d",$row->funktion);
$month = date("n",$row->funktion);
$year = date("Y",$row->funktion);
$hour = date("H",$row->funktion);
$min = date("i",$row->funktion);
$sec = date("s",$row->funktion);
if(isset($_POST['Speichern']) || isset($_POST['submit']))
{
// Frage Speichern
$count = 1;
$zahl = $limit + 1;
while($count < $zahl)
{
$antwort = 'antwort_'.$count;
$antwort = $_POST[$antwort];
$frage = 'frage_'.$count;
$frage = $_SESSION[$frage];
$eintragen = $db->query("INSERT INTO ".$prefix."antworten
( antwort
, frage
, fragen\_id
, id
, user
, ip
) VALUES ('$antwort', '$frage', '$count', '', '$benutzer', '$ip')") or die(mysql_error());
$count++;
echo $frage;
echo '<br>';
echo $antwort;
echo '<br>';
echo '<br>';
}
// Frage Auswerten
$count = 1;
$zahl = $limit + 1;
$a = 0;
while($count < $zahl)
{
$result = $db->query("SELECT * FROM ".$prefix."antworten
WHERE user = '".$benutzer."' AND fragen_id='".$count."'") or die(mysql_error());
$row = $db->fetch_array($result);
$frage = $row['frage'];
$antwort = $row['antwort'];
$sql = $db->query("SELECT * FROM ".$prefix."fragen
WHERE id = '".$frage."'") or die(mysql_error());
$r = $db->fetch_array($sql);
$richtige_antwort=$r['richtige_antwort'];
if ($richtige_antwort==0) $richtige_antwort='3';
if($antwort == $r['richtige_antwort'])
{
$a = $a+1;
}
$count++;
//echo 'frage:'.$frage.'<br>';
//echo 'antwort:'.$antwort[$count].'<br>';
//echo 'Richtige Antwort:'.$r['richtige_antwort'].'<br>';
//echo 'Punktzahl:'.$a.'<br><br>';
}
$query=
"UPDATE ".$prefix."cm\_users
SET
ergebnis = '".$a."'
WHERE
user = '".$benutzer."' ;";
$db->query($query) or die(mysql_error());
//header("Location: logout.php");
//exit;
}
$query= $db->query("SELECT * FROM ".$prefix."admin_einstellungen WHERE id='3'") or die(mysql_error());
$row = $db->fetch_object($query);
$bearbeitungszeit = $row->funktion *60;
$ur_bearbeitungszeit = $bearbeitungszeit;
$time = $bearbeitungszeit;
$c = 0;
$sql = $db->query("SELECT * FROM ".$prefix."fragen\_sicherheitsspeicher
WHERE user = '".$benutzer."'");
if ($db->num_rows($sql)==0){
$sql = $db->query("SELECT * FROM ".$prefix."fragen
ORDER BY RAND() LIMIT ".$limit."");
while($result = $db->fetch_array($sql))
{
$c++;
$_SESSION['frage_'.$c.''] = $result['id'];
$fragen_id = $result['id'];
//Fragen sicherheitspeicherung
$eintragen = $db->query("INSERT INTO ".$prefix."fragen\_sicherheitsspeicher
( id
, fragen\_id
, user
, frage\_id
) VALUES ('', '$fragen_id' , '$benutzer', '$c')") or die(mysql_error());
$frage = $result['frage'];
$antworten = array(
$result['antwort_1'],
$result['antwort_2'],
$result['antwort_3'],
$result['antwort_4']);
srand((float)microtime() * 1000000);
shuffle($antworten);
eval ("$fragen_ausgabe .= "".gettemplate("fragen_ausgabe")."";");
}
//Testbeginn eintragen
$user_testbeginn = time();
$eintragen = $db->query("INSERT INTO ".$prefix."user\_testbeginn
( username
, testbeginn
) VALUES ('$benutzer', '$user_testbeginn')") or die(mysql_error());
}
elseif ($db->num_rows($sql)!=0){
$sql = $db->query("SELECT * FROM ".$prefix."user\_testbeginn
WHERE username = '".$benutzer."'");
$result = $db->fetch_array($sql);
$testbeginn= $result['testbeginn'];
$zeit = time()-$testbeginn;
$ur_bearbeitungszeit = $bearbeitungszeit;
$bearbeitungszeit = ($bearbeitungszeit)-$zeit;
$sql = $db->query('SELECT a. * , b. * FROM '.$prefix.'fragen\_sicherheitsspeicher
a LEFT JOIN '.$prefix.'fragen
b ON a.fragen_id = b.id WHERE a.user = ''.$benutzer.'' ORDER BY a.frage_id');
while($result = $db->fetch_array($sql))
{
$c++;
$_SESSION['frage_'.$c.''] = $result['id'];
$frage = $result['frage'];
$antworten = array(
$result['antwort_1'],
$result['antwort_2'],
$result['antwort_3'],
$result['antwort_4']);
srand((float)microtime() * 1000000);
shuffle($antworten);
eval ("$fragen_ausgabe .= "".gettemplate("fragen_ausgabe")."";");
}
}
eval ("printtemplate("".gettemplate("fragen")."");");
?>