Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

 

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

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

 

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

 

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

Надіслати
Поділитися на інших сайтах


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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.