Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Генерация случайного числа с проверкой по базе
 
 автор: TetRiska   (04.07.2012 в 21:04)   письмо автору
 
 

Всем привет. Нужно сгенерировать число и проверить его на существование в базе, если такое существует, то перегенерировать.


$num = rand(1000000000,9999999999);
            
$check = "
         SELECT `pi_programs_buy_id`
         FROM `pi_programs_buy`
         WHERE `pi_programs_buy_num` = '".$num."'
         "; 

$check = select_query($check);
            
if($check['count'] != 0){
    $num = rand(1000000000,9999999999);
}

Такой вариант не идеален, т.к. Идет единичная проверка с перегенерацией. Нужно или в цикле, ума не приложу. Как собственно сделать?

  Ответить  
 
 автор: Sfinks   (04.07.2012 в 23:03)   письмо автору
 
   для: TetRiska   (04.07.2012 в 21:04)
 

Это задача из разряда головоломок?
В смысле не важно зачем, но сделать надо?
Или у нее есть какое-то практическое применение?
Может возможен другой подход?
В такой формулировке выглядит, как минимум, не логично!
_____________________
И какова вероятность попадания в существующее?
Может просто сгенерировать 10 чисел, записать их в IN() и выбрать любое свободное?

  Ответить  
 
 автор: TetRiska   (04.07.2012 в 23:26)   письмо автору
 
   для: Sfinks   (04.07.2012 в 23:03)
 

pi_programs_buy_num - это поле содержит номера заказов, оно не автоинкрементное и не будет им, сюда записывать нужно не повторяющиеся значения, поэтому я таким способом делаю сверку, прежде чем записать, по другому пока не знаю как

  Ответить  
 
 автор: TetRiska   (05.07.2012 в 02:02)   письмо автору
 
   для: TetRiska   (04.07.2012 в 23:26)
 

решил, тему можно в пхп раздел перенести, не туда создал

$next  = true;    
            while($next){
                $num = rand(1000000000,2147483647);
                    
                $check = "
                         SELECT `pi_programs_buy_id`
                         FROM `pi_programs_buy`
                         WHERE `pi_programs_buy_num` = '".$num."'
                         "; 

                $check = select_query($check);
            
                if($check['count'] == 0){
                    $next = false;
                }
            }

  Ответить  
 
 автор: confirm   (05.07.2012 в 07:32)   письмо автору
 
   для: TetRiska   (05.07.2012 в 02:02)
 

А не наоборот ли - получить все из базы, поместить в массив, и уже в массиве искать совпадения?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования