За последние 24 часа нас посетили 53949 программистов и 1733 робота. Сейчас ищут 835 программистов ...

Форма изменения названия продукта

Тема в разделе "PHP для новичков", создана пользователем dolben, 5 авг 2010.

  1. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    PHP:
    1. <?php
    2. function ProductEdit(){
    3.  
    4. if (isset($_REQUEST['submit'])) {
    5.  
    6. $pro_model = $_REQUEST['pmodel'];
    7.  
    8. mysql_query("UPDATE ".TABLE_PRODUCTS." SET products_model='$pro_model' WHERE products_id='$p_id'");
    9.  
    10. echo "
    11. <script>         // закрытие окна и возврат на обновленную страницу
    12. opener.location.reload();
    13. window.close();
    14. </script>
    15. ";
    16. }
    17. $p_id=$_REQUEST['model'];
    18.  
    19. $sql ="SELECT * FROM ".TABLE_PRODUCTS." WHERE products_id='$p_id'"; // выборка из таблицы моделей
    20. $result = mysql_query($sql);
    21. while ($row = mysql_fetch_array($result)) {
    22.  
    23. $prmodel=$row['products_model'];
    24.  
    25. }
    26.  
    27. $display="
    28. <form action=\"\" method=\"post\">
    29. Модель
    30. <input type=\"text\" value=\"$prmodel\" name=\"pmodel\">
    31. <input type=\"submit\" name=\"submit\" value=\"Изменить\">
    32. </form>
    33. ";
    34.  
    35. return $display;
    36.  
    37. }
    38.  
    Айди берется из ссылки $p_id=$_REQUEST['model'];
    В инпуте отображает всё нормально, но при изменении текста в инпуте не обновляет данные в базе
    Где ошибка?
     
  2. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    оформи тегами, чтобы подсвечивалось
     
  3. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    $p_id из $_REQUEST['pmodel'] вытаскиваешь в строке 17, а используешь в 8-й, ее там нету просто
     
  4. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    мне говорили что обработка должна идти первой и что она берет переменные не важно с какой строки функции!
    Или последовательность должна всё-таки соблюдаться?

    Затестил!
    Вытянул
    $p_id=$_REQUEST['model'];
    до обработки
    процесс пошел на ура
     
  5. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    Спасибо большое
     
  6. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    dolben
    сначала надо определить переменную, только потом использовать
    и еше переменные перед вставкой в бд надо обрабатывать http://php.net/manual/en/function.mysql ... string.html
    иначе скрипт дырявый и юзать не $_REQUEST а $_GET или $_POST в зависимости от метода в форме
    а данные из бд перед выводом на страницу обрабатывать http://php.net/manual/en/function.htmlspecialchars.html если вам теги чужие не нужны на странице
     
  7. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    Спасибо. буду ща дырявить глазами мануал
     
  8. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    Прочитал в одном из мануалов:
    Реквест это новый метод который обьединяет и гет и пост

    Лично сам не совсем еще знаток, чтобы опровергать, но если возможно хотел бы детально почему? просто юзать реквест удобнее, поэтому хочу узнать почему низзя
     
  9. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    потому что там помойка из $_GET, $_POST и $_COOKIE теоретически могут совпасть данные в нем, может каша получиться
    если у вас в $_GET есть ['name'] и в $_COOKIE тоже есть, и вы обращаетесь за переменной $_REQUEST['name'] хз правда что получится
     
  10. Ensiferum

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

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    Padaboo
    поражаюсь твоему терпению
     
  11. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  12. ewgen

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

    С нами с:
    2 авг 2010
    Сообщения:
    11
    Симпатии:
    0
    подскажите пожалуйста что означает \"\" где то видел но не могу найти где
     
  13. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
  14. ewgen

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

    С нами с:
    2 авг 2010
    Сообщения:
    11
    Симпатии:
    0
    но там всё по английски если можно на русском
     
  15. WildZero

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

    С нами с:
    24 фев 2010
    Сообщения:
    242
    Симпатии:
    0
    Адрес:
    Пермь
  16. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    Начал переделывать везде и вот вопрос:
    PHP:
    1.  
    2. if (isset($_REQUEST['modeloutput'])) { // обработка изменения статуса модели
    3. $products_id=$_GET['modeloutput'];
    4. $active=$_GET['active'];
    5. mysql_query("UPDATE ".TABLE_PRODUCTS." SET products_status = '$active' WHERE products_id = '$products_id'");
    6.  
    7. echo"
    8. <script>         // обновление индекса
    9. opener.location.reload();
    10. </script>
    11. ";
    12.  
    13. }
    14.  
    и к этой обработке инпут
    PHP:
    1.  
    2. <input type="button" name="modeloutput" value="$checked" class="week_data"onclick="location.href='products_attributes.php?view=catalog&modeloutput=$pid&active=$set'">
    3.  
    ставлю пост в первом случае не работает. Как правильно?
     
  17. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    dolben
    метод у формы с инпутом какой?
     
  18. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    Формы нет. Инпут без формы идет
     
  19. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    можно посмотреть, что в массивах и как принимать переменные
    PHP:
    1. <?php
    2.  header("Content-Type: text/plain");
    3.  print_r($_GET);
    4.  print_r($_POST);
    5. ?>
    вообще если работает лучше не трогать, просто в следующий раз учесть
     
  20. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    $_GET
    если видите переменную в строке запроса, то это $_GET
     
  21. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  22. dolben

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

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    попробовал поменять input name
    PHP:
    1.  if (isset($_REQUEST['modeloutpu']))
    PHP:
    1. <input type=\"button\" name=\"modeloutpu\"
    думал что обработка от name зависит. Перестало работать. Понял что обработка берет из ссылки данные