Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 17

Занесение в таблицу рандомного числа, но оно не должно повторятся

19.08.2015, 08:27. Показов 812. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
мне нужно занесение в таблицу рандомного числа, но оно не должно повторятся. То есть если в базе есть такое число, перерандомить.
Я могу сделать так, но я в циклах плохо разбираюсь и буду нагружать базу левыми запросами.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2015, 08:27
Ответы с готовыми решениями:

Как использовать тип bool, чтобы при первом появлении рандомного числа в Label1, оно не суммировалось
Подскажите пожалуйста, как использовать тип bool ,чтобы при первом появлении рандомного числа в label1, оно не суммировалось с первого раза...

Создать массив 5 на 5 в котором числа будут от 1 до 12 и повторятся по 2 раза
Помогите создать массив 5 на 5 в котором числа будут от 1 до 12 и повторятся по 2 раза помогите плиз заранее спасибо!

Приложение уровня Junior, какое оно должно быть?
Здравствуйте, существует много тем, про то, что должен знать начинающий программист. Мой вопрос несколько иной, покажите примеры или дайте...

5
6 / 6 / 1
Регистрация: 06.05.2014
Сообщений: 265
19.08.2015, 08:59
CyberUser_,

Не знаю правильный ли это вариант, но я себе это представляю так :

Выбрать с бд записи с этими числами для проверки. Создать переменную с числом с помощью rand() функции, и задать условие в котором будете проверять совподает ли созданая переменая с числами с бд. Если нет записываете её, если да генерируете опять число.

Возможно я велосипед изобретаю ))

в цикле переберать очень просто:

PHP
1
2
3
4
5
6
7
8
while($row = mysql_fetch_assoc($res)) {
    $rand_int = rand(1, 1000);
    if($rand_int == $row['int']){
          $rand_int = rand(1, 1000);
    } else {
          $rand_int // можно делать insert 
    }
}
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
19.08.2015, 09:24
CyberUser_, new-dev,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
while(true)
{
    $rand_int = rand(1, 1000);
    $query = "SELECT int FROM table WHERE int = $rand_int";
    $result = mysql_query($query) or die (mysql_error());
    if (!mysql_num_rows($result))
    {
        $query = "INSERT INTO table SET int = $rand_int";
        mysql_query($query) or die(mysql_error());
        break;
    }
}
1
6 / 6 / 1
Регистрация: 06.05.2014
Сообщений: 265
19.08.2015, 09:34
Kerry_Jr, ну да можно же искать по сгенерированому числу )
0
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 17
19.08.2015, 20:19  [ТС]
а нельзя выгрузить сначала все числа,
а потом подбирать, чтобы не нагружать
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2015, 00:07
Здесь как повезет, не всегда это будет "меньше весить", нежели выполнение нескольких запросов. Правда, имхо, лучше использовать SELECT COUNT и mt_rand.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
while(true)
{
    $rand_int = mt_rand(1, 1000);
    $query = "SELECT COUNT(1) FROM `table` WHERE `int` = $rand_int";
    $result = mysql_query($query) or die (mysql_error());
    if (!mysql_fetch_array($result, MYSQL_NUM))
    {
        $query = "INSERT INTO `table` SET `int` = $rand_int";
        mysql_query($query) or die(mysql_error());
        break;
    }
}
Как еще один вариант, можно воспользоваться UNIQUE-индексом и запросом INSERT IGNORE
PHP
1
2
3
4
5
6
7
8
while(true)
{
    $rand_int = mt_rand(1, 1000);
    $query = "INSERT IGNORE INTO `table` SET `int` = $rand_int";
    mysql_query($query) or die (mysql_error());
    if (1 === mysql_affected_rows())
        break;
}
Ну и, конечно, вариант с выбором всех записей..
PHP
1
2
3
4
5
6
7
8
$query = "SELECT `int` FROM `table`";
$result = mysql_query($query) or die (mysql_error());
while($row = mysql_fetch_array($result, MYSQL_NUM))
    $ints[] = (int) $result[0];
while(in_array(($rand_int = mt_rand(1, 1000)), $ints, true))
    ;
$query = "INSERT INTO `table` SET `int` = $rand_int";
mysql_query($query) or die(mysql_error());
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2015, 00:07
Помогаю со студенческими работами здесь

При копирование должно появляться окно но оно не появляется
Ребят нужна помощь при копирование в делфи должно появляться окно но оно не появляется что делать? Текст программы Program pr1; const...

При нажатие на динамическое изображение оно должно меняться на другое
Доброе время суток ! У меня возникла такая проблема: не могу с своем скрипте реализовать функцию в которой при нажатие на...

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

Автоматическое занесение данных в таблицу
Мне нужно чтобы первого числа каждого месяца в базу заносились данные автоматически как это реализовать?

Занесение данных в таблицу из полей
Подскажите пожалуйста, как сделать так, что бы данные вводились в поля отмеченные красным, а затем при нажатии на кнопку Add new,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru