Перейти к содержанию
JokerZero

Автоматическое заполнение поля модель и переделывание его в артикул

Рекомендуемые сообщения

Добрый вечер, уже какой день бьюсь над переделыванием поле модель в артикул.

 

Хочу сделать чтобы поле модель при добавлении товара заполнялось автоматически рандомным четырехзначным числом.

1) Это идея у меня получилась! Но тут возникает другая проблема хоть это и 4 числа все же они могут сгенерироваться опять и он добавит его в это поле,  что из этого следует при поиске продукта по его артикулу может попасться несколько товаров, по этому я хочу сделать проверку из БД рандомного числа и создания нового.

2) И проверка рандомного чилса у меня не совсем вышла, точнее не выходить вытащить весь столбик из БД и сравнить его с рандомным числом.

$result = mysql_query("SELECT model FROM oc_product") ;
$myrow = mysql_fetch_array ($result);

do {

echo "Артикулы в БД - " . $myrow['model'] . "<br>";
	
}

while ($myrow = mysql_fetch_array ($result));

echo "<br><br>------------------<br><br>";

$random = rand (1000,9999);

while ($myrow == $random)
{
	$random = rand (1000,9999);	
}

echo "Число из рандома - " . $random;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ух....

$random = rand (1000,9999); // получаем случайное число
$result = mysql_query("SELECT model FROM oc_product WHERE  model = $random ") ;

Дальше догадаетесь сами или подсказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ух....

$random = rand (1000,9999); // получаем случайное число
$result = mysql_query("SELECT model FROM oc_product WHERE  model = $random ") ;

Дальше догадаетесь сами или подсказать?

 

завтра попробую догадаться))) но думаю скорее всего придется подсказать потому что я очень плохо разбираюсь в пхп....   и меня очень смущает вот эта команда 

  1. $myrow = mysql_fetch_array ($result);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ух....

$random = rand (1000,9999); // получаем случайное число
$result = mysql_query("SELECT model FROM oc_product WHERE  model = $random ") ;

Дальше догадаетесь сами или подсказать?

		$random = rand (1,3); // получаем случайное число
		$result = mysql_query("SELECT model FROM oc_product WHERE  model = '$random'") ;
		$myrow = mysql_fetch_array ($result);
 
		while ($myrow == $random)
		{
		$random = rand (4,6);	
		}
		$this->data['model'] = $random;

сделал вот так вот, но не работает он все равно добавляет тоже число

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пора познакомиться с функцией

mysql_num_rows

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пора познакомиться с функцией

mysql_num_rows

 

хорошо сегодня почитаю!) просто я искал как да что и кроме той функции что вытаскивает одну строчку ничего дельного для себя не нашел...

 

А сама логика кода у меня правильная?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

стоп, а разве ошибка не в синтаксисе?

$result = mysql_query("SELECT model FROM oc_product WHERE model = '.$random.'") ;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
James026, Это не существенно -

Получаем  случайное значение, до тех пор пока количество записей не ноль

 

Далее также непонятно, потому что 

$random = rand (1000,9999) -  и че товара будет чуть меньше 9000?

 

а еще существует mt_rand()

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

James026, Это не существенно -

Получаем  случайное значение, до тех пор пока количество записей не ноль

 

Далее также непонятно, потому что 

$random = rand (1000,9999) -  и че товара будет чуть меньше 9000?

 

а еще существует mt_rand()

 

 

да товара будет меньше чем 9000. 

		$random = rand (1,8);
		/*$result = mysql_query("SELECT * FROM oc_product WHERE model=2");*/
		$result = mysql_query("SELECT model FROM oc_product WHERE model = '.$random.'") ;
		$myrow = mysql_fetch_array($result);
		$a = $myrow['model'];
		if ($a == NULL)
		{
		echo "<br>Переменная равна 0<br>";
		}
		while ($myrow == $random)
		{
		$random = rand (9,11);	
		}

Попробовал такой код в отдельном файле мне выводится что переменная = 0 

 

 

 

Получаем  случайное значение, до тех пор пока количество записей не ноль

вот этого я  не понял. это адресовано мне?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

вот этого я  не понял. это адресовано мне?

Да, конечно

DO {
$random = rand (1000,9999); // получаем случайное число
$result = mysql_query("SELECT model FROM oc_product WHERE  model = $random ") ;
} WHILE  mysql_num_rows() == 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Да, конечно

DO {
$random = rand (1000,9999); // получаем случайное число
$result = mysql_query("SELECT model FROM oc_product WHERE  model = $random ") ;
} WHILE  mysql_num_rows() == 0

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я СПЕЦИАЛЬНО не написал правильный код

 

Ты ведь хочешь самостоятельно разобраться? КниЖки в руки.

 

Я даже словами описал алгоритм анализа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я СПЕЦИАЛЬНО не написал правильный код

 

Ты ведь хочешь самостоятельно разобраться? КниЖки в руки.

 

Я даже словами описал алгоритм анализа

 

 

ну хорошо почитаю сегодня попоже))) ну просто я быстренько пробовал днем в WHILE  mysql_num_rows($result == 0);   сделать не получилось сайт завис вроде как мне помнится)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, что и завис...

Выход из цикла do-while происходит при истинности логического выражения в условии.

 

Т.е. генерация случайных чисел должна происходить пока результат выборки не Станет равным 0.

 

т.е Цикл с предусловием

while true {

}

бесконечный цикл

 

Цикл с пост условием

do {

} while false

бесконечный цикл

 

 

 

Разница в этих двух циклах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, что и завис...

Выход из цикла do-while происходит при истинности логического выражения в условии.

 

Т.е. генерация случайных чисел должна происходить пока результат выборки не Станет равным 0.

 

т.е Цикл с предусловием

while true {

}

бесконечный цикл

 

Цикл с пост условием

do {

} while false

бесконечный цикл

 

 

 

Разница в этих двух циклах

 

 

эм я конечно плохо разбираюсь очень в php и надеюсь что это только пока что, но как четырехзначное число может быть равно 0??? если он это число сравнивает с другими четырехзначными которые уже есть в БД. его мне кажется как максимум можно приравнять к follese что мол нету такого числа в БД 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а где я сравниваю четырехзначное число

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а где я сравниваю четырехзначное число

а ну да немного не то подумал) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а где я сравниваю четырехзначное число

 

mysql_num_rows — Возвращает количество рядов результата запроса

эм я что то не то прочитал? или я вообще не понимаю зачем мне туда количество рядом...

Мне нужно всего лишь вытащить все значения из поля model и занести их как тов массив чтоб потом тупо проверить рандомное число и числа в этом массиве на равенство или не равенство. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем Вам тащить всю выборку, если показанный запрос позволяет выбрать или 1 или 0

 

и "фетчить" ничего не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем Вам тащить всю выборку, если показанный запрос позволяет выбрать или 1 или 0

 

и "фетчить" ничего не надо.

 

 

в смысле 1 или 0 он позволяет выбрать.... я не понимаю я прочитал что он выводит количество рядов....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно... количество строк (рядов)

 

Если 0 - то строк не найдено, если больше 0,  т.е. хотя бы одна строка, то  нужно случайное число перегенерировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем Вам тащить всю выборку, если показанный запрос позволяет выбрать или 1 или 0

 

и "фетчить" ничего не надо.

 

 

я это сделал! вроде бы))) но есть небольшая так сказать не доработка....

$random = rand (1,5); // получаем случайное число
$result = mysql_query("SELECT * FROM oc_product WHERE model = $random") ;
$myrow = mysql_fetch_array ($result);
$a = $myrow['model'];
while ( $a == $random )
{
	$random = rand (9,12);
}

как бы мне сделать чтоб если у него закончились рандомные числа он это сообщил так сказать ну или что то сделал) просто допустим щас он мне после того как я создал 5 товаров он мне начал проставлять из второго рандома и он их уже не проверяет в базе получается а просто ставит. Делаю из этого вывод если все числа рандомные закончатся то он тупо повесит сайт.... верно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я это сделал! вроде бы))) но есть небольшая так сказать не доработка....

$random = rand (1,5); // получаем случайное число
$result = mysql_query("SELECT * FROM oc_product WHERE model = $random") ;
$myrow = mysql_fetch_array ($result);
$a = $myrow['model'];
while ( $a == $random )
{
	$random = rand (9,12);
}

как бы мне сделать чтоб если у него закончились рандомные числа он это сообщил так сказать ну или что то сделал) просто допустим щас он мне после того как я создал 5 товаров он мне начал проставлять из второго рандома и он их уже не проверяет в базе получается а просто ставит. Делаю из этого вывод если все числа рандомные закончатся то он тупо повесит сайт.... верно?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Делаю из этого вывод если все числа рандомные закончатся то он тупо повесит сайт.... верно?

 

Верно

 

 

Пля.. ППЦ

 

Я тут талдычу о цикле с постусловием, а мне лепят горбатого с предусловием...

Я говорю о mysql_num_rows

А меня пичкают mysql_fetch_array

 

Так еще и не правильно применяя.  :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Верно

 

 

Пля.. ППЦ

 

Я тут талдычу о цикле с постусловием, а мне лепят горбатого с предусловием...

Я говорю о mysql_num_rows

А меня пичкают mysql_fetch_array

 

Так еще и не правильно применяя.  :(

 

 

хахах ну прости  :-D   зато у меня работает же  :-D  :-D  :-D  ладно сейчас подумаю как с той твоей функцией сделать.... но я что то не понимаю... она мне вообще ничего не выводила...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.