Jump to content
Sign in to follow this  
JokerZero

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

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;

Share this post


Link to post
Share on other sites

Ух....

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

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

Share this post


Link to post
Share on other sites

Ух....

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

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

 

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

  1. $myrow = mysql_fetch_array ($result);

Share this post


Link to post
Share on other sites

Ух....

$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;

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

Share this post


Link to post
Share on other sites

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

mysql_num_rows

Share this post


Link to post
Share on other sites

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

mysql_num_rows

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
James026, Это не существенно -

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

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 

 

 

 

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

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

Share this post


Link to post
Share on other sites

 

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

Да, конечно

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

Share this post


Link to post
Share on other sites

 

Да, конечно

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

 

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

while true {

}

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

 

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

do {

} while false

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

 

 

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

while true {

}

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

 

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

do {

} while false

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

 

 

 

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

 

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

 

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Зачем Вам тащить всю выборку, если показанный запрос позволяет выбрать или 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 товаров он мне начал проставлять из второго рандома и он их уже не проверяет в базе получается а просто ставит. Делаю из этого вывод если все числа рандомные закончатся то он тупо повесит сайт.... верно?

Share this post


Link to post
Share on other sites

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

$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 товаров он мне начал проставлять из второго рандома и он их уже не проверяет в базе получается а просто ставит. Делаю из этого вывод если все числа рандомные закончатся то он тупо повесит сайт.... верно?

 

Share this post


Link to post
Share on other sites
Делаю из этого вывод если все числа рандомные закончатся то он тупо повесит сайт.... верно?

 

Верно

 

 

Пля.. ППЦ

 

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

Я говорю о mysql_num_rows

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

 

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

Share this post


Link to post
Share on other sites

Верно

 

 

Пля.. ППЦ

 

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

Я говорю о mysql_num_rows

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

 

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

 

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.