php код за събиране

cmivanov

Registered
написах този код
Код:
$query = " SELECT * FROM sale WHERE userid='$uid' and status='1' ";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{ 
$proid = $row['pid'];




$query = " SELECT * FROM products WHERE id='$proid' ";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$profit = $row['profit'];


}
$profit++;
}
echo $profit;
значи имам 2 таблици едната е sale с поле pid което е цифра, другата е products в която има поле profit което пак е сума.
Искам всички цифри които се изведат от $row['profit']; да се саберат.
Как да променя кода ?
 
$proid = 0;
$query = " SELECT * FROM sale WHERE userid='$uid' and status='1' ";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$proid .= $row['pid'];




$query = " SELECT * FROM products WHERE id='$proid' ";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$profit .= $row['profit'] + $proid;


}
}
echo $profit;
Така :?
 
Първи вариант
Код:
$query = " SELECT * FROM sale WHERE userid='$uid' and status='1' "; 
$result = mysql_query($query) or die('Error, query failed'); 
while($row = mysql_fetch_array($result)) 
{ 
$proid = $row['pid'];
$query = " SELECT * FROM products WHERE id='$proid' "; 
$result = mysql_query($query) or die('Error, query failed'); 
while($row = mysql_fetch_array($result)) 
{ 
$profit += $row['profit']; 
}
} 
echo $profit;
Втори вариант
Код:
$query = " SELECT * FROM sale WHERE userid='$uid' and status='1' "; 
$result = mysql_query($query) or die('Error, query failed'); 
while($row = mysql_fetch_array($result)) 
{ 
$proid = $row['pid'];
$query = " SELECT SUM(`profit`) as `profit` FROM products WHERE id='$proid' "; 
$result = mysql_query($query) or die('Error, query failed'); 
$row = mysql_fetch_array($result);
} 
echo $row['profit'];
 
и по трите начина става едно и също. принтира ми последния резултат а не сабира всичките резултати :(
 
А ако дадеш точната структура на таблиците и връзката между тях, ми се вижда, че може и с една заявка да стане :)
 
create table
products(
id int(6) unsigned not null auto_increment,
name varchar(250),
description varchar(250),
price int(250),
profit int(250),
date varchar(250),
primary key(id)
)

create table
sale(
id int(6) unsigned not null auto_increment,
productid int(250),
userid int(250),
contact varchar(250),
description varchar(250),
status int(250),
date varchar(250),
primary key(id)
)
 
Което пак с нищо не помага. Кажи кой полета са ти връзките между таблиците, какво точно записваш в тях, какво искаш да се направи?
 
Ами като гледам май имаш грешка в имената на полетата
$query = " SELECT * FROM sale WHERE userid='$uid' and status='1' ";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$proid = $row['productid'];
$query = " SELECT SUM(`profit`) as `profit` FROM products WHERE id='$proid' ";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result);
}
echo $row['profit'];
 
в таблица sale в поле productid се записва цифра която е равна на id в таблица products.
В поле profit в таблица products се записва цифра.
В таблица sale има няколко записа. И аз искам тези няколко цифри от productid да се свържат с таблица products по средством id и всяка една стойност в profit да се сабере с останалите. това е.
 
да така е извинявам се.
с кода
Код:
$query = " SELECT * FROM sale WHERE userid='$uid' and status='1' "; 
$result = mysql_query($query) or die('Error, query failed'); 
while($row = mysql_fetch_array($result)) 
{ 
$proid = $row['productid']; 
$query = " SELECT * FROM products WHERE id='$proid' "; 
$result = mysql_query($query) or die('Error, query failed'); 
while($row = mysql_fetch_array($result)) 
{ 
$profit += $row['profit']; 
} 
} 
echo $profit;
подщи всичко е 6. сабира само последните 2 резултата. а не всичките :(
 
cmivanov каза:
да така е извинявам се.
с кода
Код:
$query = " SELECT * FROM sale WHERE userid='$uid' and status='1' "; 
$result = mysql_query($query) or die('Error, query failed'); 
while($row = mysql_fetch_array($result)) 
{ 
$proid = $row['productid']; 
$query = " SELECT * FROM products WHERE id='$proid' "; 
$result = mysql_query($query) or die('Error, query failed'); 
while($row = mysql_fetch_array($result)) 
{ 
$profit += $row['profit']; 
} 
} 
echo $profit;
подщи всичко е 6. сабира само последните 2 резултата. а не всичките :(
Тъй като не виждам да има LIMIT, най-вероятно само два записа отговарят на заявката. В първата заявка казваш, че искаш всички записи, на които userid е някакво ID и status да е 1, виж колко полета ти отговарят на условието :lol:
 

Back
Горе