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 :: Составить запрос Mysql

 PHP.SU

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


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

> Описание: Помогите составить запрос Mysql
noobphp
Отправлено: 15 Сентября, 2016 - 21:23:48
Post Id


Новичок


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


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




Приветствую! Прошу помочь правильно написать условие и составить запрос Mysql.
Нужно сделать так, что если код уже существует в базе, то сгенерировать другой код.
Генерирую 5-ти значный код и записываю в базу:
PHP:
скопировать код в буфер обмена
  1.  
  2. $max = 5;
  3. for ($j=0;$j<$max;$j++)
  4. $track.=rand(0,9);
  5.  
  6. $sql_track=$mysqli->query("SELECT id FROM partners_tracker WHERE track='".$track."'")->fetch_row();
  7.  
  8. if($sql_track[0]>0)
  9. {
  10. //здесь не знаю как написать, в случае если код уже есть в базе, то сгенерировать другой код
  11. }
  12.  
  13. $mysqli->query("INSERT INTO partners_tracker VALUES('NULL','".time()."','$login','$name','$track','0')");
  14.  
 
 Top
OrmaJever
Отправлено: 15 Сентября, 2016 - 22:19:38
Post Id



Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1. $max = 5;
  2. do {
  3.    for ($j=0;$j<$max;$j++) {
  4.       $track.=rand(0,9);
  5.    }
  6.    $sql_track=$mysqli->query("SELECT id FROM partners_tracker WHERE track='".$track."'")->fetch_row();
  7. } while($sql_track[0] > 0);
  8.  
  9. $mysqli->query("INSERT INTO partners_tracker VALUES('NULL','".time()."','$login','$name','$track','0')");


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
noobphp
Отправлено: 15 Сентября, 2016 - 23:46:39
Post Id


Новичок


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


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




Спасибо, вроде работает. Только вот почему-то когда ставлю $max = 2; , то иногда в базу пишется 4-х значный код, вместо 2-х значного.
Если не сложно, то не могли бы вы описать как работает ваш код? Просто хочу разобраться, но сам толком не понимаю.

(Отредактировано автором: 15 Сентября, 2016 - 23:47:07)

 
 Top
Sail
Отправлено: 16 Сентября, 2016 - 09:39:57
Post Id



Участник


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


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




noobphp пишет:
Только вот почему-то когда ставлю $max = 2; , то иногда в базу пишется 4-х значный код, вместо 2-х значного.

Наверное, потому что надо инициализировать $track перед накоплением циферок.
(Добавление)
Спойлер (Отобразить)
 
 Top
noobphp
Отправлено: 16 Сентября, 2016 - 12:26:50
Post Id


Новичок


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


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




Всем спасибо за помощь, все работает.
 
 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