Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите плз сохранить изменения в бд.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SofiaKit
Отправлено: 20 Июля, 2012 - 03:55:22
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




как сделать, чтоб изменения сохранялись в бд?
PHP:
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3.     function change(){  
  4.    var name = document.getElementById('user_name').innerHTML;  
  5.    document.getElementById('name').innerHTML = '<input name="user_name" type="text" id="user_name" value="'+name+'">';  
  6.    document.getElementById('name').innerHTML +=' [<a href="javascript:save();">Сохранить</a>]';
  7. }
  8.  
  9. function save(){
  10.    var name = document.getElementById('user_name').value;
  11.    document.getElementById('name').innerHTML = '<span id="user_name">'+name+'</span>';
  12.    document.getElementById('name').innerHTML +=' [<a href="javascript:change();">Изменить</a>]';
  13. }
  14.  
  15. </script>
  16.  
  17. <div id="name">
  18. <span id="user_name"><? echo $myrow[i]; ?></span> [<a href="javascript:change();">Изменить</a>]
  19. </div>
  20.  
 
 Top
Macka_CMEXA
Отправлено: 20 Июля, 2012 - 04:09:57
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Июль 2012  


Помог: 5 раз(а)





это вообще как понять ?
i - константа ?? переменная (написали неверно) ?? строка ??
откуда взялась и что выводит?

сохранить? можно заменить ссылку на submit и отправить на скрипт который запишет значение в базу...
 
 Top
SofiaKit
Отправлено: 20 Июля, 2012 - 04:12:24
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)





это переменная Радость
(Добавление)
а без сабмита можно? с помощью ссылки Однако
 
 Top
Macka_CMEXA
Отправлено: 20 Июля, 2012 - 04:35:54
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Июль 2012  


Помог: 5 раз(а)




Радость поржал с твоей переменной..

Ну решим например так:
Передадим данные скрипту например через пост (так как ты и так используешь форму)
- создадим файл script.php который будет добавлять данные в базу
- изменим текущий файл так чтобы функция js change() отрисовывала нам кнопку отправки с надписью "записать в базу", для этого модифицируем функцию так

CODE (htmlphp):
скопировать код в буфер обмена
  1. function change(){
  2.    var name = document.getElementById('user_name').innerHTML;
  3.    document.getElementById('name').innerHTML = '<input name="user_name" type="text" id="user_name" value="'+name+'">';
  4.    document.getElementById('name').innerHTML +=' [<a href="javascript:save();">Сохранить</a>]';
  5.    document.getElementById('name').innerHTML +=' <input type="submit" value="Записать в базу">';
  6. }


дальше изменим начальный вывод в браузер так чтобы сработала кнопка (изменим слой(<div>) на форму (<form>) и укажем ей метод и путь к скрипту обработчику)
это теперь выглядит так
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form method="post" action="script.php" id="name">
  2. <span id="user_name"><? echo $myrow[i]; ?></span> [<a href="javascript:change();">Изменить</a>]
  3. </form>


файл script.php будет выглядеть примерно так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. mysql_connect("имя сервера", "пользователь", "пароль");
  2. mysql_select_db("название базы");
  3. $cmpl = mysql_query ("INSERT INTO `tbl` VALUES $_POST['user_name']");
  4. if ($cmpl) еcho "Данные успешно добавлены в таблицу tbl"


конечно тут надо ввести данные и так далее и тому подобное и пропустить данные через mysql_real_escape_string(), но для примера это не требуется ;)

смысл думаю понятен.. за качество не ручаюсь, но по смыслу должно работать ;)
(Добавление)
Цитата:
а без сабмита можно? с помощью ссылки


ну допиши как GET параметр и по тому же сценарию или вовсе в том же файле..
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. document.getElementById('name').innerHTML +=' [<a href="<?=$_SERVER[PHP_SELF]?>?user_name='+name+'">Записать в базу</a>]';

(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <div id="name">
  2. <span id="user_name"><? echo $myrow[i]; ?></span> [<a href="javascript:change();">Изменить</a>]
  3. </div>
  4.  
  5. mysql_connect("имя сервера", "пользователь", "пароль");
  6. mysql_select_db("название базы");
  7. if (isset($_GET['user_name'])
  8.    $cmpl = mysql_query ("INSERT INTO `tbl` VALUES $_GET['user_name']");
  9. if ($cmpl) еcho "Данные успешно добавлены в таблицу tbl"

(Отредактировано автором: 20 Июля, 2012 - 04:54:14)

 
 Top
SofiaKit
Отправлено: 20 Июля, 2012 - 04:54:04
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




я так уже делала, не подходит вариант Огорчение
мне надо чтоб посылалось новое имя а не старое.. пока только старое посылается:
PHP:
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.     function change(){  
  3.    var name = document.getElementById('user_name').innerHTML;
  4.    document.getElementById('name').innerHTML = '<form name="user_name" action="user.php" method="get">';  
  5.    document.getElementById('name').innerHTML = '<input name="user_name" type="text" id="user_name" value="'+name+'">';  
  6.    document.getElementById('name').innerHTML +=' [<a href="user.php?user_name='+name+'">Сохранить</a>]</form>';
  7. }
  8. </script>
  9.  <? if ($_GET['user_name']) { mysql_query("UPDATE users SET i = '".$_GET['user_name']."' WHERE login = '$login'"); }?>
  10. <div id="name">
  11. <span id="user_name"><? echo $myrow[i]; ?></span> [<a href="javascript:change();">Изменить</a>]
  12. </div>
соответственно и перезаписывается старое имя. Огорчение
 
 Top
Macka_CMEXA
Отправлено: 20 Июля, 2012 - 04:55:56
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Июль 2012  


Помог: 5 раз(а)




Цитата:
мне надо чтоб посылалось новое имя а не старое.. пока только старое посылается:


Странно но в вашем запросе посылается как раз новое имя, только для этого надо сначала нажать "Изменить" потом уже ввести имя и "Сохранить".
При нажатии сохранить, браузер перейдет по ссылке и передаст GET запросу.. который переданное в user_name и запишет в базу.



и обработайте запрос вот этим



иначе вам можно всю базу разворотить SQL инекциями ;)

(Отредактировано автором: 20 Июля, 2012 - 05:05:20)

 
 Top
SofiaKit
Отправлено: 20 Июля, 2012 - 05:04:43
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




посылается к сожалению +name+, а это уже записанное имя из $myrow[i]. Значение в бд поэтому и не меняет
 
 Top
Macka_CMEXA
Отправлено: 20 Июля, 2012 - 05:06:26
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Июль 2012  


Помог: 5 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. if (isset($_GET['user_name']))


вы забыли проверить на существование саму переменную и поэтому ещё при первой загрузке скрипта получаете запись ;)
А также обязательно сначала СОХРАНИТЬ значение! а потом только добавлять в базу.
Как одним кликом сначала запустить save() а потом перейти по ссылке я незнаю, так как плохо разбираюсь в чистом js.
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.    function change(){
  3.   var name = document.getElementById('user_name').innerHTML;
  4.   document.getElementById('name').innerHTML = '<input name="user_name" type="text" id="user_name" value="'+name+'">';
  5.   document.getElementById('name').innerHTML +=' [<a href="javascript:save();">Сохранить</a>]';
  6.   document.getElementById('name').innerHTML +=' [<a href="<?=$_SERVER[PHP_SELF]?>?user_name='+name+'">Записать в базу</a>]';
  7. }
  8.  
  9. function save(){
  10.   var name = document.getElementById('user_name').value;
  11.   document.getElementById('name').innerHTML = '<span id="user_name">'+name+'</span>';
  12.   document.getElementById('name').innerHTML +=' [<a href="javascript:change();">Изменить</a>]';
  13. }
  14.  
  15. </script>
  16. <div id="name">
  17. <span id="user_name"><? echo $myrow[i]; ?></span> [<a href="javascript:change();">Изменить</a>]
  18. </div>
  19. <br>
  20. <?=$_GET['user_name']?>


этот код прекрасно работает, осталось только дописать запись в базу

(Отредактировано автором: 20 Июля, 2012 - 05:16:52)

 
 Top
SofiaKit
Отправлено: 20 Июля, 2012 - 05:21:03
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




вовсе нет, $_GET['user_name'] первоначально пустая, поэтому апдейт и не запускается.. пришла к выводу, что надо как-то форму посылать на эту же страницу. но с помощью ссылки а не субмитом. вопрос только как симулировать субмит?
 
 Top
Macka_CMEXA
Отправлено: 20 Июля, 2012 - 05:30:56
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Июль 2012  


Помог: 5 раз(а)




ссылка = GET, submit = POST

посылать форму с помощью ссылки ;) извращение ;), оформите кнопку как ссылку ;)

Тут скорее вопрос как симулировать ссылку ;)

(Отредактировано автором: 20 Июля, 2012 - 05:36:32)

 
 Top
SofiaKit
Отправлено: 20 Июля, 2012 - 05:35:06
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




т.е. никак GET не послать в моем случае?
 
 Top
Macka_CMEXA
Отправлено: 20 Июля, 2012 - 05:36:40
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Июль 2012  


Помог: 5 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.    function change(){
  3.   var name = document.getElementById('user_name').innerHTML;
  4.   document.getElementById('name').innerHTML = '<input name="user_name" type="text" id="user_name" value="'+name+'">';
  5.   document.getElementById('name').innerHTML +=' [<a href="javascript:save();">Сохранить и Записать в базу</a>]';
  6. }
  7.  
  8. function save(){
  9.   var name = document.getElementById('user_name').value;
  10.   location.href = 'user.php?user_name='+name;
  11.  
  12. }
  13.  
  14. </script>
  15. <div id="name">
  16. <span id="user_name"><? echo $us = isset($_GET['user_name'])? $_GET['user_name'] : $myrow[i]; ?></span> [<a href="javascript:change();">Изменить</a>]
  17. </div>
  18. <br>
  19. <?=$_GET['user_name']?>


Пробуем так ;)

(Отредактировано автором: 20 Июля, 2012 - 05:40:19)

 
 Top
SofiaKit
Отправлено: 20 Июля, 2012 - 06:38:52
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




спасибо! то что надо Закатив глазки
 
 Top
green_man
Отправлено: 21 Июля, 2012 - 21:08:27
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Июль 2012  


Помог: 6 раз(а)




Macka_CMEXA пишет:
location.href = 'user.php?user_name='+name;


А ты слышал о ajax запросе? зачем редиректить всю страницу???
 
 Top
Macka_CMEXA
Отправлено: 21 Июля, 2012 - 22:41:03
Post Id


Гость


Покинул форум
Сообщений всего: 100
Дата рег-ции: Июль 2012  


Помог: 5 раз(а)




green_man пишет:
А ты слышал о ajax запросе? зачем редиректить всю страницу???

Слышал, но никогда не пользовался Ха-ха

Оке, раз написал предложи вариант решения с помощью AJAX
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB