2016-11-09 3 views
0

Я делаю веб-страницу, которая должна показывать обратный отсчет, и если она приходит к нулю, следующий отсчет должен начинаться с нового срока. Теперь, я сделал часть обратного отсчета в Javascript, это работает.
Я сделал часть php, которая считывает крайние сроки из txt-файла, это также работает.
Теперь я нашел способ перенести php-крайний срок на javascript, должен работать.
Но. следующий крайний срок должен начинаться, когда предыдущий закончен, так что это 00:00:00. Есть ли способ проверить содержимое html div в php? Таким образом, было бы необходимо проверить, соответствует ли содержание div с id = обратным отсчетом 00:00:00проверить PHP, если html div равно определенному значению

спасибо, ребята! изменения: предложение дубликатом вопрос не решить мою проблему ...

<!DOCTYPE html> 
 

 
<!-- php functions --> 
 
<?php 
 

 
$deadlineH = null; 
 
$deadlineM = null; 
 
$deadlineS = null; 
 
$deadlineTitle = null; 
 

 

 
$filename = "data.txt"; 
 
$fp = fopen($filename, "r"); 
 
$content = fread($fp, filesize($filename)); 
 

 
$fullArray = setFullArray($content); 
 
$length = count($fullArray); 
 
for ($i = 0; $i < $length - 1; $i++) { 
 
    $value = $fullArray[$i]; 
 
    echo "var " . ($i + 1) . ": " . $fullArray[$i] ." <br>"; 
 
    if((($i+1) % 4) == 0){ 
 
    echo " "; 
 
    } 
 
} 
 

 
$numberoflines = getNumberOflines($fullArray); 
 
echo "number of lines: " . $numberoflines . "<br>"; 
 
showDeadlines($fullArray); 
 

 
function setFullArray($content){ 
 
    $fullArray = preg_split("/(:|\n)/" ,$content);   // splits the whole data txt file into small chunks, everything apart 
 
    return $fullArray; 
 
} 
 

 
function getNumberOflines($fullArray){ 
 
    $numberoflines = (sizeof($fullArray) - 1)/4; 
 
    return $numberoflines; 
 
} 
 

 
function showDeadlines($fullArray){ 
 
    $length = count($fullArray); 
 
    for ($i=0; $i < $length-1; $i = $i + 4) { 
 
    $deadlineNumber = ($i + 4)/4; 
 
    $deadlineH = $fullArray[$i]; 
 
    $deadlineM = $fullArray[$i+1]; 
 
    $deadlineS = $fullArray[$i+2]; 
 
    $deadlineTitle = $fullArray[$i+3]; 
 
    echo "deadline " . $deadlineNumber . ": " . $deadlineH . ":" . $deadlineM . ":" . $deadlineS . " titel : " . $deadlineTitle . "<br>"; 
 
    } 
 
} 
 
?> 
 
<!-- end php functions --> 
 

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

 
<body onload="startTime()"> 
 

 
<?php 
 
//php vars: 
 
$NumberOfDeadlines = 10; 
 
?> 
 

 
<div id="visible"> 
 
<div id="clock"><span> </span> </div><br> 
 
<div id="countdown"> </span> </div> 
 
</div> 
 
<div id="inputs"> 
 

 
    <form> 
 
<!-- <?php 
 
for ($i=1; $i < $NumberOfDeadlines; $i++) { ?> 
 
    deadline <?= $i ?> : <br> 
 
    <label for="deadline<?= $i ?>H">Hour: </label> 
 
    <input type="number" name="deadline<?= $i ?>H" id="deadline<?= $i ?>H" min="0" max="23"> 
 
    <label for="deadline<?= $i ?>M">Minute: </label> 
 
    <input type="number" name="deadline<?= $i ?>M" id="deadline<?= $i ?>M" min="0" max="59"> 
 
    <label for="deadline<?= $i ?>S">Second: </label> 
 
    <input type="number" name="deadline<?= $i ?>S" id="deadline<?= $i ?>S" min="0" max="59"> 
 
    <label for="deadline<?= $i ?>Title">Title: </label> 
 
    <input type="text" name="deadline<?= $i ?>Title" id="deadline<?= $i ?>Title"> 
 
    <br> 
 
<?php 
 
} 
 
?> --> 
 
<input type="submit" value="Submit"> 
 
</form> 
 
</div> 
 

 
<!-- javascript scripts --> 
 
<script> 
 
function startTime() { 
 
    var now = new Date(); 
 
    //var deadline = new Date();     NOT USED ANY MORE 
 
    // year, month, day, hours, minutes, seconds, milliseconds 
 
    var deadline = new Date(2016, 11, 9); 
 
    var phpHours = <?php echo json_encode($GLOBAL[deadlineH]); ?>; 
 
    var phpMinutes = <?php echo json_encode($GLOBAL[deadlineM]); ?>; 
 
    var phpSeconds = <?php echo json_encode($GLOBAL[deadlineS]); ?>; 
 
    deadline.setHours() 
 
    
 
    //console.log(deadline); 
 

 
    var clockH = now.getHours(); 
 
    var clockM = now.getMinutes(); 
 
    var clockS = now.getSeconds(); 
 

 
    // var countdownH = getCountdown(deadline).hours; 
 
    // var countdownM = getCountdown(deadline).minutes; 
 
    // var countdownS = getCountdown(deadline).seconds; 
 

 
    //m = checkTime(m); 
 
    //s = checkTime(s); 
 

 
    startClock('clock'); 
 
    startCountdown('countdown', deadline); 
 

 
    var t = setTimeout(startTime, 500); 
 
} 
 

 
function getCountdown(deadline){ 
 
    //console.log(Date.parse(deadline)); 
 
    //console.log(Date.parse(new Date())); 
 
    var countdownTotal = Date.parse(deadline) - Date.parse(new Date()); 
 
    var countdownS =  Math.floor((countdownTotal/1000) % 60); 
 
    var countdownM =  Math.floor((countdownTotal/1000/60) % 60); 
 
    var countdownH =  Math.floor((countdownTotal/(1000*60*60)) % 24); 
 
    return{ 
 
     'countdownTotal': countdownTotal, 
 
     'countdownH':  countdownH, 
 
     'countdownM':  countdownM, 
 
     'countdownS':  countdownS 
 
    } 
 
} 
 

 
function startClock(id){ 
 
    var clock = document.getElementById(id); 
 
    var timeInterval = setInterval(function(){ 
 
    var now = new Date(); 
 
    var nowH = now.getHours(); 
 
    var nowM = now.getMinutes(); 
 
    var nowS = now.getSeconds(); 
 
    nowH = checkTime(nowH); 
 
    nowM = checkTime(nowM); 
 
    nowS = checkTime(nowS); 
 

 
    clock.innerHTML = nowH + ':' + nowM + ':' + nowS; 
 
    }, 1000); 
 
} 
 

 
function startCountdown(id, deadline){ 
 
    var countdown = document.getElementById(id); 
 
    var timeInterval = setInterval(function(){ 
 
    var t = getCountdown(deadline); 
 
    //console.log(t); 
 
    countdown.innerHTML = checkTime(t.countdownH) + ':' + checkTime(t.countdownM) + ':' + checkTime(t.countdownS); 
 
    if(t.countdownTotal <= 0){ 
 
     clearInterval(timeInterval); 
 
    } 
 
    }, 1000); 
 
} 
 

 
function checkTime(i) { 
 
    if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10 
 
    return i; 
 
} 
 
</script> 
 
<!-- //end javascript --> 
 

 
</body> 
 
</html>

+0

Я думаю, что вы захотите сделать вызов AJAX и отправить содержимое div скрипту php для разбора/обработки. – raphael75

+0

Я добавил свой код для человека, который спросил об этом. –

+0

Возможный дубликат [Как получить значение HTML Div с помощью PHP] (http://stackoverflow.com/questions/30569809/how-to-get-value-of-html-div-using-php) –

ответ

0

ли вы перенести все данные обратного отсчета на страницу HTML?
если да, активный обратный отсчет должен быть пожара события, когда заканчивается. и если да, то ваш следующий обратный отсчет должен быть «отмечен».
Если нет, а также, обратный отсчет должен запустить событие, в этом случае вы можете сделать ajax-вызов для сервера, чтобы получить следующий обратный отсчет daba, или даже обновить страницу, чтобы получить новейший обратный отсчет.

Edit:

Я знаю, что программисты не хотят отказываться от своего кода, но я должен Recommand вам обратный отсчет плагина, который поддерживает концевое событие и так много других возможностей. Вы можете отрезать его в this link.

Теперь, чтобы получить следующие данные обратного отсчета, как я уже сказал, вам нужно сделать вызов ajax, когда он закончится, или получить все из них при загрузке страницы.

Я не знаю, если это то, что вам нужно, но я надеюсь, что я помогу.

Удачи.

+0

Я добавил свой код, чтобы вы могли видеть, что я делаю, спасибо! –

0

Вы можете читать только статические страницы с помощью функции PHP get_contents, пример:

$homepage = file_get_contents('http://www.google.com/'); 
echo $homepage; 

Если манипулировать данными с помощью Javascript вы можете использовать его, чтобы сделать Ajax запрос на отправку содержимого дел до ваш php-скрипт.

Смежные вопросы