Прошу помочь составить алгоритм действий

P
На сайте с 06.01.2009
Offline
592
939

Здравствуйте.

Есть список товаров $id...

[ATTACH]146882[/ATTACH]

Нужно пройдя по всем товарам найти минимальную цену.

1. вписать в поле minzena минимальную цену

2. вписать в поле kakoepole название поля из которого взята эта цена

Что то не могу воткнуть, как это грамотно сделать.

Начал делать так

получаю данные из таблицы и в цикле по каждому id пишу в массив все цены, исключая только цену=0

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$id = $row['id'];
$zena1= $row['zena1'];
$zena2= $row['zena2'];
$zena3= $row['zena3'];
$zena4= $row['zena4'];
$zena5= $row['zena5'];

if (цена больше 0 ) $mass[$id]['zena1'] = $zena1;
if (цена больше 0 ) $mass[$id]['zena2'] = $zena2;
if (цена больше 0 ) $mass[$id]['zena3'] = $zena3;
if (цена больше 0 ) $mass[$id]['zena4'] = $zena4;
if (цена больше 0 ) $mass[$id]['zena5'] = $zena5;

// минимальная цена
$minimale = min($mass[$id]);
// а как получить название поля, что то я туплю? спасибо
}
jpg 146882.jpg
D
На сайте с 14.01.2007
Offline
153
#1

что-то типа того:


while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$min = 10000000000;
$imya = "";
foreach(["zena1", "zena2", "zena3", "zena4", "zena5",] as $zena_imya){
if ($row[$zena_imya] < $min){
$min = $row[$zena_imya];
$imya = $zena_imya;
}
}
}
P
На сайте с 06.01.2009
Offline
592
#2
Dinozavr:
что-то типа того:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$min = 10000000000;
$imya = "";
foreach(["zena1", "zena2", "zena3", "zena4", "zena5",] as $zena_imya){
if ($row[$zena_imya] < $min){
$min = $row[$zena_imya];
$imya = $zena_imya;
}
}
}

Dinozavr, спасибо, но что то не пашет.

Упростил,


$id = 4242;

$mass[$id]['zena1'] = 40;
$mass[$id]['zena2'] = 35;
$mass[$id]['zena3'] = 31;

$min = 10000000000;
$imya = "";
foreach(["zena1", "zena2", "zena3"] as $zena_imya){
if ($mass[$id][$zena_imya] < $min){
$min = $mass[$id][$zena_imya];
$imya = $zena_imya;
}
}
echo "<br>мин.цена=$min//$imya";

тоже не пашет

Но принцип ясен, сделал. Не работала эта строка

foreach(["zena1", "zena2", "zena3"] as $zena_imya){

W
На сайте с 09.04.2013
Offline
46
#3


$id = 4242;
$mass[$id]['zena1'] = 40;
$mass[$id]['zena2'] = 35;
$mass[$id]['zena3'] = 31;
$minzena=min($mass[$id]);
$kakoepole=array_keys($mass[$id], $minzena);
echo $minzena.PHP_EOL;
echo $kakoepole[0].PHP_EOL;
G2
На сайте с 27.10.2009
Offline
62
#4

С этой таблицей еще какие-нибудь действия производятся? По хорошему ее нормализовать надо, и опосля делать запрос на минимальную цену.

КакМаршрутник (http://goo.gl/forms/hMgaH0s9E5) — как маршрутник, но работает.
P
На сайте с 06.01.2009
Offline
592
#5
ghost28:
С этой таблицей еще какие-нибудь действия производятся? По хорошему ее нормализовать надо, и опосля делать запрос на минимальную цену.

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

VHS
На сайте с 28.09.2007
Offline
142
VHS
#6

Это значит сделать таблицу вида

id | typeZena | valueZena

и не иметь себе мозги.

G2
На сайте с 27.10.2009
Offline
62
#7
postavkin:
Таблица специально создана для того, чтобы прописать на товары цены при разных условиях покупки. А что значит нормализовать?

Нормализация - приведение данных к "правильной" структуре.

Дано: товар, несколько вариантов цен.

Пример реализации:

* таблица товаров (goods: id, name)

* таблица опций (options: id, name)

* таблица цен (prices: id, goods_id, options_id, price) - где goods_id и options_id - внешние ключи указывающие на товар и условия покупки соответственно.

После чего выборка минимальной цены для товара делается средствами SQL

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий