У меня есть новая структура, получающая дату, затем подключение к файлу php... Документация jquery сопровождается буквой, теперь мне нужно получить файл PHP, чтобы получить дату, а затем выбрать данные из таблицы mysql и положил его в ожидающий его div.
Вот JQuery script...
$(document).ready(function () {
$('#datepicker').datepicker({dateFormat: 'yy-mm-dd', onSelect: function(dateText) {
var myDate = $(this).datepicker('getDate');
$('#apDiv1').html($.datepicker.formatDate('DD, d', myDate));
$('#apDiv5').html($.datepicker.formatDate('MM', myDate));
$('#apDiv7').html($.datepicker.formatDate('yy', myDate));
$('#apDiv2').load('dayPower.php', {choice: dateText}, function() {
$(this).show();
});
$('#apDiv4').load('dayGraph.php', {choice: dateText}, function() {
$(this).show();
});
$('#apDiv6').load('monthPower.php', {choice: dateText}, function() {
$(this).show();
});
$('#apDiv9').load('monthGraph.php', {choice: dateText}, function() {
$(this).show();
});
$('#apDiv8').load('yearPower.php', {choice: dateText}, function() {
$(this).show();
});
$('#apDiv10').load('yearGraph.php', {choice: dateText}, function() {
$(this).show();
});
}});
});
Вот PHP
<?
$choice = (isset($_GET['choice'])) ? date("Y-m-d",strtotime($_GET['choice'])) : date("Y-m-d");
$con = mysql_connect("localhost","root","mackie1604");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("inverters", $con);
$sql = 'SELECT sum(power) AS choice '
.'FROM feed '
.'WHERE date = \'$choice\' ';
$res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error());
$row = mysql_fetch_assoc($res);
echo $row['choice'], '<br />';
mysql_close($con);
?>
ПОЧЕМУ не работает php?
Хорошо, вот как выглядит ваш весь код
Затем вы передаете объект .load()
, это POST, а не запрос GET.
Из документации для .load()
:
Метод POST используется, если данные предоставляются как объект; в противном случае предполагается, что GET.
Итак, на стороне PHP вам нужно будет заменить:
$_GET['choice']
С
$_POST['choice']
У вас есть и другие ошибки, но основная причина, по которой она не будет работать, заключается в том, что вы не получаете переменную, которой вы пользуетесь. Вы должны исправить уязвимость SQL-инъекции и форматирование года для других культур (при необходимости).
POST
используется, если data
являются объектом ... Вы можете увидеть код здесь: github.com/jquery/jquery/blob/1.4.4/src/ajax.js # L49
Вы используете одинарные кавычки:
$sql = 'SELECT sum(power) AS choice '
.'FROM feed '
.'WHERE date = \'$choice\' ';
Итак, ваша переменная $choice
не будет использоваться, запрос увидит ее буквально как $choice
.
Решение для этой конкретной задачи:
$sql = "SELECT sum(power) AS choice "
."FROM feed "
."WHERE date = '$choice' ";
var_dump($sql)
ли вы запрос, который вы хотите, если вы делаете var_dump($sql)
?
$_GET
я вижу, используется в функцииdate
так что это не должно быть проблемой, не так ли? В любом случае, использованиеroot
качестве вашего пользователя mysql также кажется излишним.