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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Andrey5555
Отправлено: 13 Декабря, 2007 - 17:55:29
Post Id


Частый гость


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


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




Как сделать так что бы при обновлении данных (имя, пароль) в бд Имя не обновлялось (если его не меняют), а если меняют то не совпадало с существующими.
 
 Top
valenok Модератор
Отправлено: 13 Декабря, 2007 - 18:19:36
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Читаем текущее имя
принимаем новое имя и пароль
Сверяем оба имени
и записываем имя и пароль или только пароль


-----
Truly yours, Sasha.
 
My status
 Top
Staind
Отправлено: 13 Декабря, 2007 - 18:27:09
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007  
Откуда: Планета сокровищ


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

[+]


Цитата:
Как сделать так что бы при обновлении данных (имя, пароль) в бд Имя не обновлялось (если его не меняют),

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

Цитата:
а если меняют то не совпадало с существующими.

Берем данные из БД. Делаем цикл, с каждым "именем" в базе сверяем с именем, которое ввел пользователь. Если нужно, чтобы сравнение имен не было регистрозависимым (т.е. "Имя" равнялось "иМя" и это уже было бы совпадение имен), то используем функцию "strtolower".
 
 Top
Andrey5555
Отправлено: 13 Декабря, 2007 - 18:36:34
Post Id


Частый гость


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


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




valenok пишет:
Читаем текущее имя
принимаем новое имя и пароль
Сверяем оба имени
и записываем имя и пароль или только пароль



Не совсем понял. А на небольшом примерчике или более шире рассказать, можете показать(рассказать)?
 
 Top
valenok Модератор
Отправлено: 13 Декабря, 2007 - 18:44:06
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




1. Читаем текущее имя
2. принимаем новое имя и пароль
3. Сверяем оба имени
4. и записываем имя и пароль или только пароль

Вы читаете нужную главу в каком нибудь учебнике.
Делаете один за одним пункты выше.
У вас не получается, вы читаете http://phpfaq[dot]ru/debug
У вас вылазит куча ошибок
Вы обращаетесь к документациям по нужным функциям на офф сайте php.net
У вас всё получается.


Или другой вариант - ждите дед мороза.
Наверное кто нибудь за вас напишет код в ближайшее время..



Staind
лишняя запись получается. А хотя с таким количеством данных всё равно.

Цитата:
Берем данные из БД. Делаем цикл, с каждым "именем" в базе сверяем с именем, которое ввел пользователь. Если нужно, чтобы сравнение имен не было регистрозависимым (т.е. "Имя" равнялось "иМя" и это уже было бы совпадение имен), то используем функцию "strtolower".

Ставим регистронезависимость полю (cp1251_ci)
И условие на сравнение пишем прямо в sql запросе.
А вообще зачем доставать ВСЕ данные и их ещё прогонять через цикл, и каждый раз чтото там сравнивать, и перезаписывать ..


-----
Truly yours, Sasha.
 
My status
 Top
Staind
Отправлено: 13 Декабря, 2007 - 18:53:16
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007  
Откуда: Планета сокровищ


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

[+]


Цитата:
лишняя запись получается. А хотя с таким количеством данных всё равно.

Ясно. думал, что перезаписать на ту же быстрее, чем проверить.

Цитата:
Не совсем понял. А на небольшом примерчике или более шире рассказать, можете показать(рассказать)?

А как можно "более шире рассказать"? Итак все по полочкам разложили. Хоть как-нибудь напишите. Потом заталкайте свой вариант на форум, а мы попробуем вам помочь, а то получается, что главная роль в написании этого кода ложится не на Вас.
 
 Top
valenok Модератор
Отправлено: 13 Декабря, 2007 - 19:00:59
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Staind
А здесь каждый первый так..

Цитата:
Ясно. думал, что перезаписать на ту же быстрее, чем проверить.

У меня скрипты в пять страниц исполняются за пять тысячных секунды,
проверки не такое уж и длинное занятие, а вот перезапись уже в зависимости от длинные перезаписываемых данных.
Искать ту самую золотую середину где время того и того равно - бессмысленно, а так как с записью легче прогадать, и вероятность того что запись окажется длиннее проверки более велика - я отдаю предпочтение проверкам..


-----
Truly yours, Sasha.
 
My status
 Top
Staind
Отправлено: 13 Декабря, 2007 - 19:08:38
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007  
Откуда: Планета сокровищ


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

[+]


Улыбка

2valenok, принял совет во внимание, спасибо.
 
 Top
Andrey5555
Отправлено: 14 Декабря, 2007 - 11:32:28
Post Id


Частый гость


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


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




Вот скрипт, который выводит для редактирования Имя и Пароль в текстовых полях

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include ("mysql.php");
  4. $id = $_GET['id'];
  5. $query = mysql_query ("SELECT login, password FROM users WHERE id = '$id'");
  6. echo ("<form name='form' method='post' action='edit_user?id=$id'>");
  7. echo "<table border='1'>";
  8. while ($user = mysql_fetch_array ($query))
  9. {
  10. echo ("<tr>");
  11. echo ("<td><input name='login' type='text' id='login' value=".$user['login']."></td><td><input name='password' type='text' id='password' value=".$user['password']."></td>");
  12. echo ("</tr>");
  13. }
  14. echo "</table>";
  15. echo ("<input type='submit' name='Submit' value='Submit'>");
  16. echo ("</form>");
  17. ?>
  18.  


Вот скрипт который должен обновить данные

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include ("mysql.php");
  4. $id = $_GET['id'];
  5. $log = $_POST ['login'];
  6. $pas = $_POST ['password'];
  7. if ( !eregi ("^[a-z0-9_]+$", $log)) die ("<b>Логин имеет неверный формат !!!</b>");
  8. if (strlen ($log) > 15) die ("<b> Логин слишком длинный !!!</b> ");
  9. if ( !eregi ("^[0-9]+$", $pas)) die ("<b>Пароль имеет неверный формат !!!</b>");
  10. if (strlen ($pas) > 15) die ("<b>Пароль слишком длинный !!!</b> ");
  11. $query = mysql_query ("SELECT login FROM users WHERE (login = '$log') LIMIT 1");
  12. if  (mysql_num_rows ($query) > 0) die ("<b>Пользователь с таким логином уже существует !!!</b>");
  13. mysql_query ("UPDATE users SET  login = '$log', password = '$pas' WHERE id = '$id'");
  14. echo "<b>Данные пользователя успешно изменены !!!</b>";
  15. ?>
  16.  
 
 Top
valenok Модератор
Отправлено: 14 Декабря, 2007 - 11:46:47
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




1. Читаем текущее имя
2. принимаем новое имя и пароль
3. Сверяем оба имени
4. и записываем имя и пароль или только пароль

Вы читаете нужную главу в каком нибудь учебнике.
Делаете один за одним пункты выше.
( До сюда готово ? А дальше?? )
У вас не получается, вы читаете http://phpfaq[dot]ru/debug
У вас вылазит куча ошибок
Вы обращаетесь к документациям по нужным функциям на офф сайте php.net
У вас всё получается.\n\n(Добавление)
заключайте код в теги [php][/php]


-----
Truly yours, Sasha.
 
My status
 Top
Andrey5555
Отправлено: 14 Декабря, 2007 - 13:06:09
Post Id


Частый гость


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


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




[quote=valenok]
1. Читаем текущее имя
$log = $_POST['login'];

2. принимаем новое имя и пароль
Не совсем понятно, что с ними делать? Передать на обработку?

3. Сверяем оба имени
Сверить какие имена текущее с новым?

Можно на маленьком примерчике обьяснить, а то я не понимаю?
 
 Top
valenok Модератор
Отправлено: 14 Декабря, 2007 - 13:08:23
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Нет нельзя.
Цитата:
Имя не обновлялось (если его не меняют)

Что с чем сверять??

Цитата:
принимаем

От кого это может быть ?

Цитата:
Читаем

А это от куда может быть?


-----
Truly yours, Sasha.
 
My status
 Top
Andrey5555
Отправлено: 14 Декабря, 2007 - 13:24:42
Post Id


Частый гость


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


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




Ну помоги. Будь человеком. Напиши маленький примерчик или исправь мои скрипты.
Заранее спасибо.
 
 Top
valenok Модератор
Отправлено: 14 Декабря, 2007 - 13:30:57
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Я на вас не работаю.
Хотите - отвечайте на вопросы. не хотите не отвечайте.
Нам за вас всю жизнь писать чтоли? Разгребайте свой беспорядок в голове.


-----
Truly yours, Sasha.
 
My status
 Top
Andrey5555
Отправлено: 14 Декабря, 2007 - 14:10:31
Post Id


Частый гость


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


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




Я же не прошу написать за меня интернет- магазин или какой то мега скрипт. вам же это семечки. Помогите пожалуйста.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB