Автоматичен Submit?

maria88

Registered
Здравейте. Може ли малко помощ? Как може да се направи, автоматично след 10 мин., да се събмитне страницата?
Ето и кода:

<?


$id = $_GET['id'];
if ($id) {
$sql = "SELECT * FROM questions WHERE testid= $id ORDER BY id ASC";
$res = mysql_query($sql) or die(mysql_error());
if (!($_POST['submit']))
{

echo "<br><form name='test' method='POST' >";

$vapros = 1;
while ($row = mysql_fetch_array( $res )){
echo "<br><left><font color='#000000'>$vapros.<font color='#77021A'> $row[vapros]<br></left>";
echo "<br><left><font color='#828282'>а<font color='#000000'><input name='$row[id]' type='radio' value='a'>".$row[a];"<br></left>";
echo "<br><left><font color='#828282'>б<font color='#000000'><input name='$row[id]' type='radio' value='b'>".$row;"<br></left>";
echo "<br><left><font color='#828282'>в<font color='#000000'><input name='$row[id]' type='radio' value='c'>".$row[c]."<br><br></left>";

$vapros++;

}
echo "<br><input type='submit' name='submit' style='background-color:#FF8080' value='КРАЙ'><input type='reset' name='reset' style='background-color:#FF8080' value='ИЗЧИСТИ'><br>";
echo "</form>";

}
else {
$veren = 0;
$gre6en = 0;
$i=0;

while ($row = mysql_fetch_array( $res )){
$id= $row[id];
$testid= $row[testid];
$vapros = $row[vapros];

$otg = addslashes($_POST[$id]);
$votg=$row[otg];
if ($row[otg] == $otg) {
$i++;
$veren++;
} else {
$i++;
$gre6en++;
}
$all = $veren + $gre6en;
$koef = $veren/$all;
$koef = $koef*100;
$koef = round($koef);




$sql1 = "INSERT INTO `results` (testid,vaprosid,vapros,otg,votg,userid) VALUES ('$testid','$i', '$vapros', '$otg', '$votg', '$_SESSION[userid]')";

$result = mysql_query($sql1) or die(mysql_error());

}

$sql2 = "INSERT INTO `results` ( verni, greshni, koef,userid) VALUES ( '$veren', '$gre6en', '$koef', '$_SESSION[userid]')";
$result2 = mysql_query($sql2) or die (mysql_error());

echo"<br><center>Тестът приключи. Вашият резултат е: $koef%.</center>";
require "refresh.php";

}
}

else {
$sql = "SELECT * FROM tests ORDER BY RAND() LIMIT 1";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($res);
echo "<br><font size='+2' color='#333333'><center><a href='tests.php?id=$row[id]'>$row[ime]</a></font><br>
$row[opisanie]</center><br></br>";

}
?>
 
пред това което искаш да се изпълнява след 10 секунди, опа извинявам се то е 10 минути, аз прочетох 10 секунди за 10 минути го направи 60*10 не 10 или по-точно sleep(600);
 
С времето добре, но аз питам и как да го направя, така че след това време да се запише информацията в базата.
 
ами махни си проверките дали е натиснат submit бутона или направи, така че когато не е натиснат и изтекат 10 минути да изпраща информация, че е натиснат, с hidden input можеш да го направиш
 
Ако в дадената страница няма влезнал потребител, страницата няма как да се събмитне сама.

Ако има влезнал потребител и изчака 10 - те минути и за да се събмитне някоя форма автоматично ти трябва да използваш curl.
http://www.html-form-guide.com/php-form/php-form-submit.html

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

Ако няма потребител, който да изчака 10мин, ще трябва да използваш CRON JOB.
http://www.thesitewizard.com/general/set-cron-job.shtml

+

CURL http://www.html-form-guide.com/php-form/php-form-submit.html


Някои хостинг компании може да не предлагат curl или cron или и двете.



Между - другото не мисля, че това е най - удачният вариант, като гледам кода това е някакъв тест и след 10 минути (като изтече времето), да изпрати отговорите и да приключи теста.

По удачен вариант може би ще е да записваш всички потребителски отговори в сесия, като тази сесия ще има начална дата на отварянето й, тоест когато потребителя натисне на бутона " СТАРТИРАЙ ТЕСТ " да се записва unixtime в потребителската сесия. И при всяка дейност в сайта, правиш проверка дали времето записано в сесията + 10те минути е < от сегашното, ако стане по - голямо значи теста е приключил. И записваш отговорите от сесията в базата данни.

В допълнение към проверката за времето може да добавиш AJAX (най - лесно с jQuery) за проверка на времето в реално време(да си знае човека), а и по - точно ще засечеш кога му свършва времето.
 

Back
Горе