За последние 24 часа нас посетили 34147 программистов и 1314 роботов. Сейчас ищут 927 программистов ...

Редактирование текста в форме и отправка в базу MySqL UPDATE

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

  1. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Запутался что к чему.

    Первый скрипт выводит 2 поля textarea из быазы данных. Текст соот-о одинаковый и там и там.

    Хочу во втором поле ввести другой текст и передать это все в базу. Т.е. сделать UPDATE текстового поля 1.





    PHP:
    1. <?php
    2.  // Устанавливаем соединение с базой данных  
    3.  include "conn.php";  
    4.  
    5.  
    6.  
    7.    
    8.  $page = $_GET[band];
    9.  
    10.  $sql = "SELECT * FROM groups WHERE NAME = '$page'";
    11.  
    12.  
    13.    $data = mysql_query($sql);
    14.    $row = mysql_fetch_row($data);
    15.    
    16.  
    17.    ?>
    18.  
    19.  
    20. <form action=doedit.php?band=$row[1] method=GET>
    21.  
    22. <table border=3>
    23.  
    24. <tr>
    25. <td><textarea class=input cols=42 rows=5 name=DEMO><?  echo $row[1]; ?>></textarea></td>
    26. <td><textarea class=input cols=42 rows=5 name=NAME><?  echo $row[1]; ?>></textarea></td>
    27. </tr>
    28.  
    29. </table>
    30. <input class=button type=submit value="CHANGE">
    31.  
    32. </form>

    Обработчик

    PHP:
    1. <?php
    2.      
    3.   include "conn.php";
    4.  
    5.  $page = $_GET[band];
    6.  
    7.  $query = "UPDATE groups SET NAME = '$page'";
    8.  
    9.  
    10.    $data = mysql_query($sql);
    11.    $row = mysql_fetch_row($data);
    12.  
    13.  
    14.    echo $row[1];
    15.  
    16. ?>
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    WHERE забыл. так он тебе весь столбец обновит этим значением

    это раз

    два, кто такой get[band]?
    во-первых не [band], a ['band'] видимо
    во-вторых такого параметра не передается ибо в форме такого элемента нет. Есть демо и нейм.
     
  3. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    PHP:
    1. Переделал, но пока изменений не видно.
    2.  
    3. <?php
    4.  // Устанавливаем соединение с базой данных  
    5.  include "conn.php";  
    6.  
    7.  
    8.  // Извлекаем из URL текущую страницу
    9.    
    10.  $page = $_GET[band]; // здесь по band передаются корректно парметры с предыдущей страницы.
    11.  
    12.  $sql = "SELECT * FROM groups WHERE NAME = '$page'";
    13.  
    14.  
    15.    $data = mysql_query($sql);
    16.    $row = mysql_fetch_row($data);
    17.    
    18.  
    19.    ?>
    20.  
    21.  
    22. <form action=doedit.php method=GET>
    23.  
    24. <table border=3>
    25.  
    26. <tr>
    27. <td><textarea class=input cols=42 rows=5 name=answer><?  echo $row[1]; ?>></textarea></td> // выводит ABBA
    28. <td><textarea class=input cols=42 rows=5 name=NAME><?  echo $row[1]; ?>></textarea></td> // выводит ABBA (корректирую на BEATLES)
    29. </tr>
    30.  
    31. </table>
    32. <input class=button type=submit value="CHANGE">
    33.  
    34. </form>
    35.  


    Обработчик

    PHP:
    1. <?php
    2.      
    3.   include "conn.php";
    4.  
    5.  $page = $_GET['NAME'];  //извлекаю свои BEATLES
    6.  
    7.  $query = "UPDATE groups SET WHERE NAME = '$page'";  // думаю мускул не понимает какую ячейку надо заменить занчением Beatles !!!
    8.  
    9.  
    10.  
    11.    $data = mysql_query($query);
    12.    $row = mysql_fetch_row($data);
    13.  
    14.  
    15.    echo $row[1];  //хочу вывести свои beatles
    16.  
    17. ?>
     
  4. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    Что SET? Куда SET? Взгляни , может поможет...
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    апдейт групс сет нейм = битлс WHERE ????????=???????

    иначе он апдейтит все подряд.

    и еще. параметры хтмл тегов должны заключаться в кавычки. иначе могут быть косяки.
     
  6. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    хера себе, что там наверху за хня с [⁄b] поризошла??? Я лично только выделил фрагмент жирным в цитате, или этого нельзя делать ? Ж))

    - что это??
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
     
  8. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    А так?

    Однако с текстом работает.
     
  9. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Вот чуть подробнее.

    Это скрипт передает 2 значения
    OLDNAME --старое имя
    NAME---новое имя (которое я хочу вписать)


    PHP:
    1. <form action=doedit.php method=GET>
    2.  
    3. <table border=3>
    4.  
    5. <tr>
    6. <td><textarea class=input cols=42 rows=5 name=OLDNAME><?  echo $row[1]; ?></textarea></td> Выводит ABBA
    7. <td><textarea class=input cols=42 rows=5 name=NAME><?  echo $row[1]; ?></textarea></td> // Выводит ABBA
    8. </tr>
    9.  
    10. </table>
    Вот тчо уходит в строку запроса doedit.php?OLDNAME=ABBA&NAME=BEATLES

    PHP:
    1. <?php
    2.      
    3.   include "conn.php";
    4.  
    5.  $page = $_GET['NAME'];  // Получаю новое имя BEATLES
    6.  
    7.  $pageold = $_GET['OLDNAME']; //Получаю старое имя  ABBA
    8.  
    9.  $query = "UPDATE groups SET NAME WHERE NAME = '$pageold'";  //  Делаю абдейст столбца NAME где ячейка соответсует имени OLDNAME
    10.  
    11.  
    12.  
    13.    $data = mysql_query($query);
    14.    $row = mysql_fetch_row($data);
    15.  
    16.  
    17.    echo $row[1];
    18.  
    19. ?>
    На экране вижу пустой экран..

    Может в пшп админ можно проверить каким-нибудь sql запросом ??))


    Помогите !!!!
     
  10. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    PHP:
    1.  $query = "UPDATE groups SET NAME ='$page' WHERE NAME = '$pageold'";
    Или как-то так нужно написать запрос..??
     
  11. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    $query = "UPDATE groups SET NAME ='".$page."' WHERE NAME = '".$pageold."'";
     
  12. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    [sql]UPDATE `таблица` SET `таблица`.`поле` = 'значение' WHERE `таблица`.`поле` = 'значение'[/sql]
     
  13. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Извиняйте вы меня зайцы мои добрые ))

    оказывается вот эта хрень

    PHP:
    1.  $query = "UPDATE groups SET NAME ='$page' WHERE NAME = '$pageold'";
    работает

    Я обновил первую страницу и увидел изменения !! Ура.

    Но мне бы хотелось видеть все таки не пустой экран , а изменения в обработчике

    PHP:
    1.  $data = mysql_query($query);
    2.    $row = mysql_fetch_row($data);
    3.  
    4.  
    5.    echo $row[1];
    6.  
    7.  ?>
    вот здесь касяк..он ничего не выводит...хотя в базе меняет ABBA на BETALES!!
     
  14. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    ясен пень пустой экран, $row = mysql_fetch_row($data); - это чё такое? а вернее зачем тут?
    УЧИ!

    и что ты хочешь на экран вывести? Ввпринципе у тебя все данные есть.

    хош NAME? так и пиши echo $page; хош старую пиши echo $pageold; хош полностью строку - тогда сперва зделай SELECT потом mysql_fetch_row, а потом echo $row[1];

    псы: я не заяц, SQL не хрень.... и почитай доки, всё получится без лишних вопросов.
     
  15. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Что хочу ??

    На словах это звучит так:

    После UPDATE хочу снова обратиться к базе и выделить эту же ячейку которую я обновлял и получить из нее уже то значение которое пришло. Т.е. смысл банально проверить а пришло ли значение в нужную ячейку )). Обновилось ли оно.

    Вот колхозный пример который возвращает не одну ячейку , а весь столбик. В нем я уже вижу то самое новое значение.

    Хотелось бы , чтобы приходило именно 1 значение, а не столбик из 30 имен..))


    По видимому надо иметь еще ID строки или значение другого стоблика привязанного к этой строке. Т.е. в этот скрипт должна приходить еще одна не меняемая переменная типа $id = $_GET['ID']; которую можно будет использовать в запросе применяя where. Я прав ??

    Ну а пока колхозный вариант выбивает весь столбик с кучей строк.

    PHP:
    1.  <?php
    2.      
    3.   include "conn.php";
    4.  
    5.   $page = $_GET['NAME'];
    6.  
    7.   $pageold = $_GET['OLDNAME'];
    8.  
    9.   $query = "UPDATE groups SET NAME ='$page' WHERE NAME = '$pageold'";
    10.  
    11.   $data = mysql_query($query);
    12.  
    13.    
    14.  
    15.  
    16. $sql = "SELECT  * FROM groups";
    17.  
    18. $data = mysql_query($sql);
    19.  
    20. while($row=mysql_fetch_array($data))  
    21.  
    22.   echo "$row[NAME]<br>";
    23.  
    24.  
    25.  
    26. ?>
     
  16. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    нимагу больше....

    [​IMG]
     
  17. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Я уже близок к победе.

    в этом скрипте я получаю еще ID строки. Она приходит прооверено. И хочу использовать ID в запросе.

    Не уверен что запрос корректен, и что цикл нужен ...наверно доасточно


    $row=mysql_fetch_array($data)


    PHP:
    1. <?php
    2.      
    3.   include "conn.php";
    4.  
    5.   $page = $_GET['NAME'];
    6.  
    7.   $pageold = $_GET['OLDNAME'];
    8.  
    9.   $id = $_GET['ID'];
    10.  
    11.  
    12.   $query = "UPDATE groups SET NAME ='$page' WHERE NAME = '$pageold'";
    13.  
    14.   $data = mysql_query($query);
    15.  
    16.    
    17.  
    18.  
    19. $sql = "SELECT   FROM groups WHERE ID = '$id'";
    20.  
    21. $data = mysql_query($sql);
    22.  
    23. while($row=mysql_fetch_array($data))
    24.  
    25.   echo "$row[NAME]<br>";
    26.  
    27.  
    28.  
    29. ?>
     
  18. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Ура я сделал !!

    Не хватало звездочки в запросе MySQL

    PHP:
    1. <?php
    2.      
    3.   include "conn.php";
    4.  
    5.   $page = $_GET['NAME'];
    6.  
    7.   $pageold = $_GET['OLDNAME'];
    8.  
    9.   $id = $_GET['ID'];
    10.  
    11.  
    12.   $query = "UPDATE groups SET NAME ='$page' WHERE NAME = '$pageold'";
    13.  
    14.   $data = mysql_query($query);
    15.  
    16.    
    17.  
    18.  
    19. $sql = "SELECT * FROM groups WHERE ID = '$id'";
    20.  
    21. $data = mysql_query($sql);
    22.  
    23. while($row=mysql_fetch_array($data))  
    24.  
    25.   echo "$row[NAME]<br>";
    26.  
    27.  
    28.  
    29. ?>
     
  19. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    Слушай ты обновляешь строку чем? вот это значение тебе и нужно вывесте, не надо делать лишнего SELECT, просто:
    PHP:
    1.  
    2. <?
    3. $query = "UPDATE `groups` SET `NAME` ='$page' WHERE `NAME` = '$pageold'";
    4.  
    5. if(mysql_query($query))
    6. {
    7.     return $page;
    8. }
    9. else
    10. {
    11.     return 'Ошибка обновления БД.';
    12. }
    13. ?>
    14.  
     
  20. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    PHP:
    1. <?php
    2.      
    3.   include "conn.php";
    4.  
    5.   $page = $_GET['NAME'];
    6.  
    7.   $pageold = $_GET['OLDNAME'];
    8.  
    9.   $id = $_GET['ID'];
    10.  
    11.  
    12.   $query = "UPDATE groups SET NAME ='$page' WHERE NAME = '$pageold'";
    13.  
    14.    
    15.  if(mysql_query($query))
    16.  {
    17.      return $page;
    18.  }
    19.  else
    20.  {
    21.      return 'Ошибка обновления БД.';
    22.  }
    23.  
    24.  
    25. ?>
    Смысл твоей конструкции мне понятен, но она выводит пустой экран..(( ни ошибки ни значения...

    Пробовал оставлять $data = mysql_query($sql); перед проверкой...все рано результат тот же ..пустой экран


    Чем плох мой метод ?? Он сильно нагружает скрипт или нет ??...теряется бытродействие ??
     
  21. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    БЛЯЁ! НАПИШИ ВМЕСТО RETURN $PAGE; - DIE($PAGE); или ECHO или PRINT.... вобще уже

    Ну а сам то как думаешь?
     
  22. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    СПАСЫЫЫЫБО УЧЫЫЫЫТЕЛЬ ))

    Написал echo. Заработало ))


    как говорил мой препод по металоведенью " Не надо думать" --Надо знать.)

    Я не знаю. Вижу только что скорость выполнения визуально не отличается. а как замерить пока не знаю
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    думать > знать