За последние 24 часа нас посетили 17085 программистов и 1302 робота. Сейчас ищет 2031 программист ...

Update не видит переменных.

Тема в разделе "MySQL", создана пользователем JimmyElf, 17 янв 2007.

  1. JimmyElf

    JimmyElf Активный пользователь

    С нами с:
    17 янв 2007
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Perm
    Ситуация такая. Пишу функцию 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 идут без значения. Т.е. пустыми ячейками.

    С чем это может быть связано и как исправить? Первый раз с таким столкнулся.
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    JimmyElf
    код в студию
     
  3. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. echo $a, $b, $c, $d;
    и смотри, какие значения они принимают.
     
  4. JimmyElf

    JimmyElf Активный пользователь

    С нами с:
    17 янв 2007
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Perm
    Вот, так идет выполнение функции.
    PHP:
    1. <?php
    2. ...
    3.   elseif ($HTTP_GET_VARS['f'] == 'edit')
    4.     {
    5.       $id = $HTTP_GET_VARS['id'];
    6.       $yes = $HTTP_GET_VARS['yes'];
    7.       $user = $HTTP_POST_VARS['user'];
    8.       $pass = $HTTP_POST_VARS['pass'];
    9.       edit_admin($id, $yes, $user, $pass);
    10.     }
    11. ...
    12. ?>
    А вот и сама функция.

    PHP:
    1. function edit_admin($id, $yes, $user, $pass)
    2.     {
    3.       $conn = db_connect();
    4.       if (!$conn)
    5.         {
    6.           echo 'В данный момент невозможно осуществить подключение к базе данных, попробуйте позднее.';
    7.           exit;
    8.         }      
    9.       if ($yes == 1)
    10.         {
    11.           $user = addslashes($user);
    12.           $pass = addslashes($pass);
    13.           $query = "update admin set user = '$user', pass = '$pass' where id=$id";
    14.           $result = mysql_query($query);
    15.           if (!$result)
    16.             {
    17.               echo 'Обновление невозможно. Попробуйте повторить попытку через несколько минут.';
    18.               exit;
    19.             }
    20.           else
    21.             {
    22.               echo 'Обновление прошло успешно.<br />';
    23.               echo '<a href="?p=admins">Вернуться к списку</a>';
    24.               exit;
    25.             }
    26.         }
    27.       else
    28.         {
    29.           $query = "select * from admin where id='$id'";
    30.           $result = mysql_query($query);
    31.           if (!$result)
    32.             {
    33.               echo 'Невозможно выполнить запрос. Попробуйте повторить попытку через несколько минут.';
    34.               exit;
    35.             }
    36.           $row = mysql_fetch_array($result);
    37.           $user = $row['user'];
    38.           $pass = $row['pass'];
    39.           echo '<form action="?p=admins&f=edit&yes=1&id='.$id.'" method="post"><table>';
    40.           echo '<tr><td align="center" width="150" class="td_lg"><font>Логин</font></td><td align="center" width="150" class="td_lg"><font>Пароль</font></td>';
    41.           echo '<td align="center" class="td_lg" width="200"><font>Операции</font></td></tr>';
    42.           echo '<tr><td class="td_w"><input type="text" size="30" name="user" value="'.stripslashes($user).'"></td>';
    43.           echo '<td class="td_w"><input type="text" size="30" name="pass" value="'.stripslashes($pass).'"></td>';
    44.           echo '<td class="td_w" align="center"><input type="submit" value="Изменить"></td></tr>';
    45.           echo '</table></form>';
    46.         }    
    47.     }
    PS на момент теста делаю все в открытом виде...
     
  5. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    JimmyElf
    Убейте того кто вам показал что такое $HTTP_GET_VARS

    В РНР начиная с версии 4.1.0 используются $_GET
     
  6. JimmyElf

    JimmyElf Активный пользователь

    С нами с:
    17 янв 2007
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Perm
    Может быть и пора... самого себя убить за это дело=) Когда начинал программировать на пхп, то именно так приходилось все делать... Учился по книжкам.

    Может быть уже пора переучиться... Бум исправляться, хотя... когда привыкаешь к чему-то... Но сделаем!
     
  7. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    JimmyElf

    если эти переменные у тебя встречаются в очень большом кол-ве мест, то можно выйти из положения так (применено, кстати, в том числе и в phpBB)

    $HTTP_GET_VARS = $_GET;
     
  8. Anonymous

    Anonymous Guest

    Хуже этого я видел только
    $GLOBALS+=$_GET;
    :?
     
  9. Mavir

    Mavir Guest

    По-моему тут должна победить лень - $_GET короче писать :)
     
  10. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Горбунов Олег

    расскажите это авторам phpBB:)
     
  11. JimmyElf

    JimmyElf Активный пользователь

    С нами с:
    17 янв 2007
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Perm
    Господа, а все-таки, если не отвлекаться от основного вопроса, то в чем вы видите причину того, что переменные не воспринимаются?
    При добавлении, удалении, извлечении и т.п. все оК, а при обновлении - не идет.

    PS этот проектик только начал и пару-тройку десятков переменных переписал на укороченный вариант, а в старые рабочие уже решил не трогать=)
     
  12. Mavir

    Mavir Guest

    Данные получаются не методом POST или не правильно присваиваются.
    Советую почитать Ничего не работает! Что делать???
     
  13. JimmyElf

    JimmyElf Активный пользователь

    С нами с:
    17 янв 2007
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Perm
    Спасиб, почитал. Но все это и так понятно.

    Проверял я значения переменных и выводил их на экран, если выводить через echo, то все оК, а вот в мускул-запросе они уже не воспринимаются и имеют нулевые значения... пустые... такое ощущение, что значения не присвоены.
     
  14. Mavir

    Mavir Guest

    Вот три магические строчки, которые, я думаю, смогут прояснить что да как
    Код (Text):
    1. print_r($_POST);
    2. print_r($_GET);
    3. print $query;
    Т.е. я хочу сказать, что запрос тут ни причем, он выполняется правильно. Но вот сам запрос составлен не правильно.
     
  15. JimmyElf

    JimmyElf Активный пользователь

    С нами с:
    17 янв 2007
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Perm
    Спасиб, все работает. Нашел причину и исправил...