Немного странной проблемы здесь ...
У меня запрос на обновление, который не работает, и я не могу понять, почему!
В моей таблице два поля: «id» (int, автоинкремент), «date» (date) и «totalraised» (десятичное). Часть приложения, которое я разрабатываю, рассчитывает общую сумму сбора средств каждую неделю, сделанную благотворительной книжной лавкой. В поле «дата» используется тип столбца даты, как и везде на сайте. Я использую даты в расчетах.
В других местах системы у меня есть другие запросы на обновление, которые работают просто отлично, но я подозреваю, что проблема с этим в том, что помимо обновления записи я также пытаюсь манипулировать форматом даты (так чтобы я мог вводить даты в британском формате дд-мм-гггг, а затем использовать PHP для преобразования обратно в дружественный MySQL формат гггг-мм-дд.
Это странный бит. Согласно странице подтверждения на сайте, запрос выполнен нормально, и обновление выполнено, но когда я проверяю базу данных, ничего не меняется. Таким образом, я мог проверить вывод запроса, пытаясь отобразить результат на веб-странице, чтобы увидеть, что я получаю. Ожидаемые значения отображаются там на странице, но опять же, когда я проверяю базу данных, ничего не обновлялось.
Это моя форма обновления с функцией преобразования даты:
function dateconvert($date,$func) {
if ($func == 1){ //insert conversion
list($day, $month, $year) = split('[/.-]', $date);
$date = "$year-$month-$day";
return $date;
}
if ($func == 2){ //output conversion
list($year, $month, $day) = split('[-.]', $date);
$date = "$day/$month/$year";
return $date;
}
} // end function
require_once('/home/thebooks/admins/connect.php');
$id = $_GET['id'];
$dateinput = $_GET['dateinput'];
$query = "SELECT * FROM fundraisingtotal WHERE id='$id'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
extract($row);
$date = $row['date']; //your mysql date
$realdate = dateconvert($date,2); // convert date to British date
$amountraised = stripslashes($amountraised); //amount raised
mysql_close();?>
<div id="title">Update Fundraising Total</div>
<form id="updatetotals" action="updated.php" method="post">
<div class="row"><label for="dateinput" class="col1">Date </label><span class="col2"><input id="dateinput" name="dateinput" type="text" size="25" value="<?php echo $realdate ?>" maxlength="10" /></span></div>
<div class="row"><label for="amountraised" class="col1">Fundraising Total </label><span class="col2"><input id="amountraised" name="amountraised" type="text" size="25" value="<?php echo $amountraised ?>" maxlength="7" /></span></div>
<div class="submit"><input type="submit" name="submitted" value="Update" /><input type="reset" name="reset" value="Clear the form" /></div>
<input type="hidden" name="id" value="<?php echo $id ?>" />
</form>
... и это страница обработки формы / запроса:
require_once('/home/thebooks/admins/connect.php');
$dateinput = $_POST['dateinput'];
// Date conversion from: http://www.phpbuilder.com/annotate/message.php3?id=1031006
// using type 1
$convdate = $_POST['dateinput']; // get the data from the form
$convdate = dateconvert($convdate, 1); // Would convert to e.g. 2005-12-19 which is the format stored by mysql
function dateconvert($convdate,$func) {
if ($func == 1){ //insert conversion
list($day, $month, $year) = split('[/.-]', $convdate);
$date = "$year-$month-$day";
return $date;
}
if ($func == 2){ //output conversion
list($year, $month, $day) = split('[-.]', $convdate);
$date = "$day/$month/$year";
return $date;
}
}
$date = "$convdate";
$amountraised = $_POST['amountraised'];
$update = "UPDATE fundraisingtotal SET date = '$date', amountraised = '$amountraised' WHERE id='$id' ";
$result = mysql_query($update);
$realdate = dateconvert($date,2); // convert date to British date
if ($result) {
echo "<p class=\"dbpara\">Thank you. Your update to the record was successful.</p>";
echo "<p class=\"dbpara\">The record has been amended to a date of <b>$realdate</b> and amount of <b>$amountraised</b>.</p>";
}
else {
echo "<p>Nothing has been changed.</p>";
}
mysql_close();
Странно то, что текст подтверждения "Запись была изменена на ... и т. Д." отображается точно так, как ожидалось, но когда я проверяю базу данных, запись вообще не обновлялась.
Я уверен, что это должно быть что-то, что я упускаю из-за того, что возился с форматами даты, или у меня что-то не в порядке, но я перепробовал так много разных вариантов, и теперь не вижу дрова для деревьев. Кто-нибудь есть идеи, что я здесь делаю не так?