Ситуация такая. Пишу функцию edit_user($a, $b, $c, $d). Перед запуском этой функции переменным присваются значения. $a и $b - GET, а $c и $d - POST. Внутри функции ишу запрос: $query = "update user set c='$c', d='$d' where a=$a"; В результате у меня запись в БД обновляется, но переменные $c и $d идут без значения. Т.е. пустыми ячейками. С чем это может быть связано и как исправить? Первый раз с таким столкнулся.
Вот, так идет выполнение функции. PHP: <?php ... elseif ($HTTP_GET_VARS['f'] == 'edit') { $id = $HTTP_GET_VARS['id']; $yes = $HTTP_GET_VARS['yes']; $user = $HTTP_POST_VARS['user']; $pass = $HTTP_POST_VARS['pass']; edit_admin($id, $yes, $user, $pass); } ... ?> А вот и сама функция. PHP: function edit_admin($id, $yes, $user, $pass) { $conn = db_connect(); if (!$conn) { echo 'В данный момент невозможно осуществить подключение к базе данных, попробуйте позднее.'; exit; } if ($yes == 1) { $user = addslashes($user); $pass = addslashes($pass); $query = "update admin set user = '$user', pass = '$pass' where id=$id"; $result = mysql_query($query); if (!$result) { echo 'Обновление невозможно. Попробуйте повторить попытку через несколько минут.'; exit; } else { echo 'Обновление прошло успешно.<br />'; echo '<a href="?p=admins">Вернуться к списку</a>'; exit; } } else { $query = "select * from admin where id='$id'"; $result = mysql_query($query); if (!$result) { echo 'Невозможно выполнить запрос. Попробуйте повторить попытку через несколько минут.'; exit; } $row = mysql_fetch_array($result); $user = $row['user']; $pass = $row['pass']; echo '<form action="?p=admins&f=edit&yes=1&id='.$id.'" method="post"><table>'; echo '<tr><td align="center" width="150" class="td_lg"><font>Логин</font></td><td align="center" width="150" class="td_lg"><font>Пароль</font></td>'; echo '<td align="center" class="td_lg" width="200"><font>Операции</font></td></tr>'; echo '<tr><td class="td_w"><input type="text" size="30" name="user" value="'.stripslashes($user).'"></td>'; echo '<td class="td_w"><input type="text" size="30" name="pass" value="'.stripslashes($pass).'"></td>'; echo '<td class="td_w" align="center"><input type="submit" value="Изменить"></td></tr>'; echo '</table></form>'; } } PS на момент теста делаю все в открытом виде...
JimmyElf Убейте того кто вам показал что такое $HTTP_GET_VARS В РНР начиная с версии 4.1.0 используются $_GET
Может быть и пора... самого себя убить за это дело=) Когда начинал программировать на пхп, то именно так приходилось все делать... Учился по книжкам. Может быть уже пора переучиться... Бум исправляться, хотя... когда привыкаешь к чему-то... Но сделаем!
JimmyElf если эти переменные у тебя встречаются в очень большом кол-ве мест, то можно выйти из положения так (применено, кстати, в том числе и в phpBB) $HTTP_GET_VARS = $_GET;
Господа, а все-таки, если не отвлекаться от основного вопроса, то в чем вы видите причину того, что переменные не воспринимаются? При добавлении, удалении, извлечении и т.п. все оК, а при обновлении - не идет. PS этот проектик только начал и пару-тройку десятков переменных переписал на укороченный вариант, а в старые рабочие уже решил не трогать=)
Данные получаются не методом POST или не правильно присваиваются. Советую почитать Ничего не работает! Что делать???
Спасиб, почитал. Но все это и так понятно. Проверял я значения переменных и выводил их на экран, если выводить через echo, то все оК, а вот в мускул-запросе они уже не воспринимаются и имеют нулевые значения... пустые... такое ощущение, что значения не присвоены.
Вот три магические строчки, которые, я думаю, смогут прояснить что да как Код (Text): print_r($_POST); print_r($_GET); print $query; Т.е. я хочу сказать, что запрос тут ни причем, он выполняется правильно. Но вот сам запрос составлен не правильно.