Проблема с выводом массива

ppbinag

Новичок
Соединяюсь с БД
PHP:
<?php
$con = mysql_connect("localhost","root","");
if (!$con) {
  die('Could not connect: ' . mysql_error());
}
mysql_select_db("dream", $con);
Объявляю переменные
PHP:
$email = '[email protected]';
$ot = '1';
$do = '12';
$cat = 'cat9';
$sum = '0';
Делаю выборку из БД электронных адресов
PHP:
$quer = "SELECT email FROM `user`";
$result = mysql_query($quer);
while($row = mysql_fetch_array($result)) {
	echo $row['email'];
}
Этот код нужно выполнить для каждого выбранного значения электронного адреса выше (т.е. не для конкретного указанного в переменной а для $row['email'] ) :
PHP:
$query = "SELECT price, qty FROM `orders` WHERE email='$email' and prod_id BETWEEN $ot AND $do";
$resul = mysql_query($query);
while($raw = mysql_fetch_array($resul)) {
	$ras = $raw['price'] * $raw['qty'];
	$sum += $ras;
}
echo $sum;
    
$resultt = "UPDATE `stat` SET $cat='".$sum."' WHERE email='$email'";
$ress = mysql_query($resultt); 

 if ($ress == 'true') {
	echo "<h2>Данные обновлены!</h2>";
	}
else {
	echo "<h2>Данные не обновлены!</h2>";
	}
Насколько я понимаю надо значения $row['email'] поместить в массив, а потом пройтись по всему массиву и для каждого значения выполнить php код? Если я правильно рассуждаю то как, это реализовать?
 

ppbinag

Новичок
Взглянув на код, решил задачу:
PHP:
$quer = "SELECT email FROM `user`";
$result = mysql_query($quer);
while($row = mysql_fetch_array($result)) {
    echo $row['email'];
$email =  $row['email'];
$query = "SELECT price, qty FROM `orders` WHERE email='$email' and prod_id BETWEEN $ot AND $do";
$resul = mysql_query($query);
while($raw = mysql_fetch_array($resul)) {
    $ras = $raw['price'] * $raw['qty'];
    $sum += $ras;
}
echo $sum;
    
$resultt = "UPDATE `stat` SET $cat='".$sum."' WHERE email='$email'";
$ress = mysql_query($resultt); 

 if ($ress == 'true') {
    echo "<h2>Данные обновлены!</h2>";
    }
else {
    echo "<h2>Данные не обновлены!</h2>";
    }
}
Просто поместив код в цикл.
Но возник еще вопрос как выполнить код для одного емайла но с разными $ot, $do, $cat (9 разных значений)
PHP:
$query = "SELECT price, qty FROM `orders` WHERE email='$email' and prod_id BETWEEN $ot AND $do";
$resul = mysql_query($query);
while($raw = mysql_fetch_array($resul)) {
    $ras = $raw['price'] * $raw['qty'];
    $sum += $ras;
}
echo $sum;
    
$resultt = "UPDATE `stat` SET $cat='".$sum."' WHERE email='$email'";
$ress = mysql_query($resultt); 

 if ($ress == 'true') {
    echo "<h2>Данные обновлены!</h2>";
    }
else {
    echo "<h2>Данные не обновлены!</h2>";
    }
 

WMix

герр M:)ller
Партнер клуба
PHP:
update stat s, orders o
SET s.".$cat."=o.price * o.qty 
WHERE s.email=o.email AND 
     o.prod_id BETWEEN $ot AND $do;
не тестил, но идея... так тоже можно!
 

Фанат

oncle terrible
Команда форума
а откуда берутся эти $ot, $do, $cat и остальные 9 значений?

а, главное, для чего нужна таблица stat?
 

ppbinag

Новичок
а откуда берутся эти $ot, $do, $cat и остальные 9 значений?

а, главное, для чего нужна таблица stat?
$ot, $do, $cat я вбиваю вручную(как раз $cat принимает 9 различных значений, $ot принимает 9 различных значений, $do принимает 9 различных значений), таблица стат вообще используется для хранения значений используемых в построение графика Highcharts, из этой таблицы данные передаются в текстовом виде. $cat это название категорий.
 

Фанат

oncle terrible
Команда форума
а зачем передавать данные из таблицы стат, если можно передавать сразу из orders?
зачем по два раза перекладывать одни и те же данные?
тем более - по 20 раз их повторяя?
 

Фанат

oncle terrible
Команда форума
что значит - как?
ты же выбираешь нужные тебе данные из ордерс? вот их и передавай

если ты спрашиваешь, как передавать данные в Highcharts, то я впервые слышу об этой программе
 

ppbinag

Новичок
Как код оформить в функцию:
PHP:
$query = "SELECT price, qty FROM `orders` WHERE email='$email' and prod_id BETWEEN $ot AND $do";
$resul = mysql_query($query);
while($raw = mysql_fetch_array($resul)) {
    $ras = $raw['price'] * $raw['qty'];
    $sum += $ras;
}
echo $sum;
    
$resultt = "UPDATE `stat` SET $cat='".$sum."' WHERE email='$email'";
$ress = mysql_query($resultt); 

 if ($ress == 'true') {
    echo "<h2>Данные обновлены!</h2>";
    }
else {
    echo "<h2>Данные не обновлены!</h2>";
    }
и вызывать ее передавая значения $ot, $do, $cat ?
Попутно вопрос чем можно воспользоваться для построения графиков?
 

Фанат

oncle terrible
Команда форума
какой смысл вообще этих шаманских плясок?
график чего ты хочешь построить?
почему у всех $cat одно и то же значение? какой в этом смысл?
 

ppbinag

Новичок
график строится из суммы всех товаров заказанных пользователей по категориям товаров,( т.е для одного пользователя с определенным email в таблице у меня сохранены цена товара $raw['price'] и количество товара $raw['qty'], их произведение есть цена за количество одного вида товара, а мне надо сумму за все виду товаров).
Вот например мой график:
Соответственно покупатели Иванов, Петров, Сидоров
Иванов купил запчастей на Audi на сумму 973 руб
Петров купил запчастей на Audi на сумму 133 руб
Сидоров купил запчастей на Audi на сумму 31 руб
 

Вложения

  • 42,8 KB Просмотры: 3

ppbinag

Новичок
$cat принимает значения cat1, cat2,.. это название столбцов в таблице stat, в которых содержаться значения сумм товаров по категориям
 

Фанат

oncle terrible
Команда форума
у тебя же при подсчете категория никак не используется? то есть, сумму возвращает для всех?

кстати, а какой смысл в
PHP:
prod_id BETWEEN $ot AND $do
?
что за странная привязка к айди?
 

ppbinag

Новичок
каждая категория имеет 12 товаров,т.е cat1 это prod_id с 1 по 12, cat2 это prod_id с 13 по 24
 
Сверху