PHP.SU

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

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

> Найдено сообщений: 8
poseydon_2003 Отправлено: 02 Апреля, 2013 - 12:03:43 • Тема: Не работает скрипт • Форум: Вопросы новичков

Ответов: 2
Просмотров: 127
DelphinPRO пишет:
для генерации уникальной строки вполне подойдет такая простая функция


и проверять ничего не надо. Вероятность коллизии очень и очень низкая.



Хорошо, спасибо.
poseydon_2003 Отправлено: 02 Апреля, 2013 - 10:11:52 • Тема: Не работает скрипт • Форум: Вопросы новичков

Ответов: 2
Просмотров: 127
Добрый день.
Ситуация такова:

1. При регистрации пользователя в таблицу mysql записывается произвольная строка, которая отправляется пользователю на почту вместе со ссылкой на мой сайт.
2. Пользователь кликает по этой ссылке, далее php сверяет эту ссылку с базой данных, и, если такая строка найдена в БД, то пользователь регистрируется, а произвольная строка напротив его имени обнуляется.

Вот в чём вопрос: как мне сделать проверку, существует ли только что созданная произвольная строка в БД?
И, если она существует, то надо сгенерировать новую.

Вот мой код на PHP & MySQL:

PHP:
скопировать код в буфер обмена
  1.  
  2. $temp = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 20); #формирую строку
  3. $p = 0;
  4. $res = mysql_query("SELECT temp FROM clients", $link);
  5. while($n = mysql_fetch_array($res)){    #записываю столбец из БД с произвольными строками
  6.         $r[] = $n['temp'];
  7. }              
  8. foreach($r as $name){       #проверяю на существование такой же строки
  9.         if ($name == $temp){
  10.                 $p = 1;
  11.         }
  12. }
  13. if ($p == 1){       #если такая есть, то генерирую новую пока она не станет уникальной
  14.                 do {
  15.                 $temp = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 20);
  16.                 $p = 0;
  17.                 foreach($r as $name){
  18.                         if ($name == $temp){
  19.                         $p = 1;
  20.                         }
  21.                 }
  22.         }
  23.         while ($p != 1);                       
  24. }
  25. unset ($r);    
  26. echo $temp;
  27.  


Оно кагбы работает, но только один раз. Тоесть вновь созданная строка, когда у меня в БД она уже есть, то формируеся новая, но она уже не переверяется.

В чём может быть дело? подскажите, плиз!
poseydon_2003 Отправлено: 19 Февраля, 2013 - 12:28:58 • Тема: Проверка даты средствами Mysql • Форум: Работа с СУБД

Ответов: 8
Просмотров: 2610
LIME пишет:

мастерить сессию
она аккурат 20мин по дефолту))



Не совсем так =)))
По дефолту сессия 24 минуты =)

Ну, или изменить жызнь сессии в php.ini
poseydon_2003 Отправлено: 13 Февраля, 2013 - 10:31:03 • Тема: Проверка на вшивость mysql + PHP • Форум: Работа с СУБД

Ответов: 9
Просмотров: 1970
esterio пишет:
imya пишет:
if(isset($_POST['result])

Вопрос не о том Нахмурился Нахмурился Нахмурился


poseydon_2003 пишет:
Спасибо, за ответ, но почему тогда у меня не работает проверка

Понимаете при 0 результатов запрос все таки прошел успешно значит ресурс возвращается.
Если хотите проверить наличие результатов пользуйтесь mysql_num_rows



Спасибо, все заработало )))))) Помогли )))
poseydon_2003 Отправлено: 12 Февраля, 2013 - 16:19:25 • Тема: Проверка на вшивость mysql + PHP • Форум: Работа с СУБД

Ответов: 9
Просмотров: 1970
esterio пишет:
imya пишет:
if(isset($_POST['result])

Вопрос не о том Нахмурился Нахмурился Нахмурился


poseydon_2003 пишет:
Спасибо, за ответ, но почему тогда у меня не работает проверка

Понимаете при 0 результатов запрос все таки прошел успешно значит ресурс возвращается.
Если хотите проверить наличие результатов пользуйтесь mysql_num_rows


Хорошо, попробую. Спасибо.
poseydon_2003 Отправлено: 12 Февраля, 2013 - 15:48:48 • Тема: Проверка на вшивость mysql + PHP • Форум: Работа с СУБД

Ответов: 9
Просмотров: 1970
Спасибо, за ответ, но почему тогда у меня не работает проверка



И как мне правильно тогда написать проверку на существование поля?
poseydon_2003 Отправлено: 12 Февраля, 2013 - 14:25:28 • Тема: Проверка на вшивость mysql + PHP • Форум: Работа с СУБД

Ответов: 9
Просмотров: 1970
Добрый день, форумчане.

В PHP + mysql я новичок, поэтому и соответственный вопрос:

Когда я делаю запрос в базу данных на поиск елемента по столбце user, и такого елемента не существует, какое значение mysql записывает в $result?

PHP:
скопировать код в буфер обмена
  1.  
  2.         function &get_from_db ($user)
  3.         {
  4.                 $link = mysql_connect("localhost", "root", "") or die ("Couldn't connect to database!");
  5.             mysql_select_db ("clients", $link) or die ("Couldn't select database!");
  6.             $query = "SELECT * from clients where user = '$user'";
  7.             $result = mysql_query($query, $link);
  8.             if (!$result){
  9.                 $a[0] = "err";
  10.                 return $a[0];
  11.             }
  12.             else {
  13.                 $a = mysql_fetch_array($result);
  14.                 return $a;
  15.             }
  16.             mysql_close($link);
  17.         }
  18.  


А вот вырезка из файла:
PHP:
скопировать код в буфер обмена
  1.  
  2. $res =& get_from_db ($user);
  3. print $res;
  4.  


Когда идет запрос на существующий елемент user, все работает, а когда такого елемента не существует, ничего никуда не выводится. Где я ошибся?

Помогите плз!
poseydon_2003 Отправлено: 12 Февраля, 2013 - 13:58:58 • Тема: BD и вывод переменной • Форум: Программирование на PHP

Ответов: 6
Просмотров: 368
Если выбирать колонку id по колонке user, тогда так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $link = mysql_connect ("localhost", "user_name", "db_password");
  3. mysql_select_db("db_name", $link);
  4. $query = "SELECT id FROM db_name WHERE user = '$user'";
  5. $result = mysql_query ($query, $link);
  6. $id = mysql_result ($result);     # По-моему, так =)))
  7. echo $id;
  8.  

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB