2013-04-16 1 views
0

У меня есть сайт HTML со страницей, использующей PHP-код, который запрашивает базу данных MySQL. Таблица содержит 3 столбца (дата, время, остальные). Основываясь на текущей дате и времени, я бы хотел, чтобы страница HTML вернулась и отобразила соответствующее значение из столбца «Осталось».обновление «количество оставшихся» без обновления сайта

Фокус в том, что я хотел бы, чтобы это значение обновлялось автоматически (AJAX?) Без необходимости обновления страницы или нажатия на кнопку.

PHP Я до сих пор работаю над тем, что он отображает «оставшееся» значение на основе даты, но я не выяснил, как запрашивать дату и время, а также автоматическое обновление.

PHP код я понял, до сих пор

(примечание: quantitytest_config.php просто содержит имя хоста/имя пользователя/пароль)

<?php 

include 'quantitytest_config.php'; 

//connection to the database 
$dbhandle = mysql_connect($hostname, $username, $password) 
    or die("Unable to connect to MySQL"); 

//select a database to work with 
$selected = mysql_select_db("grace59_countdown",$dbhandle) 
    or die("Could not select countdown"); 

//execute the SQL query and return records 
$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE()"); 
//fetch tha data from the database 
while ($row = mysql_fetch_array($result)) { 
    echo "Quantity:".$row{'remaining'}."<br>"; 
} 

//close the connection 
mysql_close($dbhandle); 
?> 

Заранее спасибо за вашу помощь. Очень признателен.

+3

Самый простой способ сделать это - изучить AJAX :-) – raidenace

ответ

2

С jQuery.load, это ветер, следующий фрагмент кода будет вызывать скрипт и обновления остальных COUNT каждые 10 секунд.

setInterval(function(){ 
    // Assumes the container has the id of count 
    // and the php script is called remaining.php 
    $("#count").load("remaining.php") 
}, 10000); 

Без JQuery, вы должны будете сделать некоторое чтение, но это не так уж трудно

Насколько любые другие вопросы, которые вы встроили в тот же самый вопрос. Вы не должны задавать несколько вопросов как один. Каждый вопрос должен показывать, что вы пробовали, ожидаемое/фактическое поведение, сообщения об ошибках. Так ваш вопрос может быть полезным для других, а не только для вас самих, и это лежит в основе Stack Overflow. В настоящее время ваш вопрос: я не знаю, как это сделать, и это не очень хорошо подходит для SO.

+0

спасибо Хуан! Я попробовал, и это работает как шарм. Приношу свои извинения за многочисленные вопросы, а не за ваши другие предложения. С этого момента я обязательно это сделаю. – Zander

+0

@ Zander Не нужно извиняться, добро пожаловать в переполнение стека, рад, что он сработал. –

1

Как вы упомянули, вы должны использовать AJAX.

В принципе, время от времени вы будете продолжать вызывать страницу и проверять, есть ли новые результаты (если они существуют) и получить их для пользователя.

Страница, которую вы будете называть, является файлом PHP, подобным тому, который вы опубликовали, который будет возвращать результаты для вызова AJAX.

После вызова результаты будут представлены пользователю.

Как правило, в методе AJAX GET выполняется быстрее, так как он не включает в себя профили POST-полей, и, поскольку вы получаете только информацию, я буду придерживаться его.

Вот базовый синтаксис того, что вы ищете. Наверное, у него есть некоторые сложные, но понятные имена.

<script> 
setInterval(function(){check_new_stuff();}, 10000); 

function check_new_stuff(){ 
    $.ajax({ 
    type: "GET", 
    url: "url_with_your_php_code.php", 
    dataType: 'html', 
    data: {name_of_the_parameter_to_be_passed_in_get: value_of_the_parameter_to_be_passed_in_get}, 

    success: function(html){ 
      $("#div_to_have_its_html_replaced_with_the_result_from_php_code").html(html); 
    }, 

    error: function(){ 
    }, 

    complete: function(){ 
    } 
    }); 

    setTimeout(function(){check_new_stuff();}, 10000); 
} 
</script> 

(вы можете read more about this here)

О ваш вопрос о времени, я не видел проблемы в нем. Вам просто нужно добавить поле и передать ему значение времени в запросе базы данных?

(если вы хотите, текущее время - пытаясь угадать ваши имена столбцов, как вы не поддерживать за столом Номенклатуре же на всем протяжении Вашего объяснения)

$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE() AND salestime=CURTIME()"); 

(определенное время, заданное сами?)

$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE() AND salestime='11:15:00'"); 
+0

Спасибо Иво, и извините за то, что вы догадались названия колонок (что вы сделали правильно!). Итак, мой стол состоит из «salesdate», «salestime» и «Осталось». Я хотел бы, чтобы запрос соответствовал сегодняшней дате и последнему действительному времени в таблице. К сожалению, первое предложение: $ result = mysql_query («SELECT else FROM from WHERE salesdate = CURDATE() AND salestime = CURTIME()») даст только результат, если текущее время точно такое же, как любое значение в ' salestime ', иначе он ничего не возвращает. К сожалению, я не могу найти решение в документации по MySQL. – Zander

+0

Что значит действительное время? Некоторая строка, в которой заполняется строка? Если это так, попробуйте сделать это: $ result = mysql_query ("SELECT остальное FROM количество WHERE salesdate = CURDATE() И salestime! = '00:00:00'"); –

+0

К действительному времени я имею в виду: Моя таблица будет предварительно заполнена данными. Итак, скажем, таблица содержит 10 заполненных строк дат, раз и осталось и что эти значения могут содержать прошлые и будущие даты/время. Я хочу, чтобы запрос возвращал «оставшееся» значение только из одной строки - из строки, которая наиболее точно соответствует сегодняшней дате и текущему времени, но не в будущем. – Zander

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