- История на поръчките
1234
WT форуми -> PHP MySQL ASP.NET -> История на поръчките
Създайте нова тема Напишете отговор 
Автор Съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 22/08/2017 4:59 pm      Отговорете с цитат


Revelation написа:
Най-лесно може да стане, като си извеждаш списък с потребителите. И при избиране на определен потребител да вадиш данните само за него по същия начин.
Не мисля, че е добра идея да вадиш абсолютно всички поръчки, на всички потребители, на един път.


Това няма да ми свърши работа, защото поръчките трябва да бъдат изпълнени. В смисъл ако има 1000 потребители не може да се преглеждат всеки ден един по един за да се види дали са направили поръчка.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Турист
Турист

Регистриран на: 24/03/2013 3:23 pm

Support: 40
Bonus: 80
Мнения: 563
Мнение 22/08/2017 5:02 pm      Отговорете с цитат


teroristd написа:
Revelation написа:
Най-лесно може да стане, като си извеждаш списък с потребителите. И при избиране на определен потребител да вадиш данните само за него по същия начин.
Не мисля, че е добра идея да вадиш абсолютно всички поръчки, на всички потребители, на един път.


Това няма да ми свърши работа, защото поръчките трябва да бъдат изпълнени. В смисъл ако има 1000 потребители не може да се преглеждат всеки ден един по един за да се види дали са направили поръчка.


Промених си мнението с решението, което търсиш.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Турист
Турист

Регистриран на: 24/03/2013 3:23 pm

Support: 40
Bonus: 80
Мнения: 563
Мнение 22/08/2017 5:06 pm      Отговорете с цитат


Наново промених кода, заради крайния резултат(нулиране на брояча на поръчките за определен потребител).

PHP code:

$lastId = $result[0]['order_id']-1;
$lastUser = "";
$i = 1;
foreach ( $result as $row ) {
if ( $row['name'] != $lastUser ) {
printf("%s\n", $row['name']);
$lastUser = $row['name'];
$i = 1;
}
if ($row['order_id'] > $lastId ) {
printf("\tПоръчка #%d\n", $i++);
$lastId = $row['order_id'];
} else if ( $row['order_id'] < $lastId ) {
printf("\tПоръчка #%d\n", $i++);
$lastId = $row['order_id'];
}
printf("\t\tПредмет: %s\n", $row['product']);
}


Резултат:
PHP code:

Иван
Поръчка #1
Предмет: дънки
Предмет: блуза
Поръчка #2
Предмет: яке
Поръчка #3
Предмет: жилетка
Петкан
Поръчка #1
Предмет: блуза
Предмет: риза
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 22/08/2017 7:00 pm      Отговорете с цитат


А каква е заявката, че при мен нещо не излиза номера на поръчката на Петкан. А ако добавя втора поръчка на Иван излиза така.

Резултат:
PHP code:

Иван
Поръчка #1
Предмет: дънки
Петкан
Предмет: блуза
Иван
Поръчка #2
Предмет: яке
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 145
Bonus: 289
Мнения: 1338
Мнение 22/08/2017 9:09 pm      Отговорете с цитат


teroristd написа:
А каква е заявката, че при мен нещо не излиза номера на поръчката на Петкан. А ако добавя втора поръчка на Иван излиза така.

Резултат:
PHP code:

Иван
Поръчка #1
Предмет: дънки
Петкан
Предмет: блуза
Иван
Поръчка #2
Предмет: яке

Еми.. просто сортирай по човек?

ORDER BY user_id примерно?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Турист
Турист

Регистриран на: 24/03/2013 3:23 pm

Support: 40
Bonus: 80
Мнения: 563
Мнение 23/08/2017 1:27 am      Отговорете с цитат


SQL code:

SELECT * FROM orders ORDER BY name, order_id


По този начин сортирай да нямаш проблем.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 23/08/2017 7:02 am      Отговорете с цитат


Нещо не е наред. Получавам същият резултат.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Турист
Турист

Регистриран на: 24/03/2013 3:23 pm

Support: 40
Bonus: 80
Мнения: 563
Мнение 23/08/2017 10:48 am      Отговорете с цитат


http://prikachi.com/images/899/9167899Z.png

При мен си е добре. Не знам ти какво точно правиш.

Нещо в базата да не се различава? Макар че аз я направих по твоята структура.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 23/08/2017 12:06 pm      Отговорете с цитат


Ето я моята таблица.

http://prikachi.com/images.php?images/949/9167949N.jpg

Мисля че разбрах, къде се чупи. При мен order_id не е като при теб. Фактически аз имам order_id 1 за Иван и order_id 1 за Петкан. Аз броя за всеки юзър отделно поръчките. Докато при теб за Петкан идва order_id 4 въпреки че му е първа поръчка.

Но всъщност по-големия проблем е че не мога да пресметна общата цена на отделната поръчка. По-принцип я смятам така, като counter ми е бройката, и си работи коректно.

PHP code:

$total_price=0;
$total_price += ($value['price'] * $value['counter']);
echo $total_price;


Обаче в нашия случай смята цената за всички поръчки.

Последната промяна е направена от teroristd на 23/08/2017 2:19 pm; мнението е било променяно общо 1 път
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 145
Bonus: 289
Мнения: 1338
Мнение 23/08/2017 1:29 pm      Отговорете с цитат


Това, че order_id се повтаря при различните юзъри, не би трябвало да е проблем при сортирането по име на потребител? Ако първо сортираш по email примерно, и след това по order_id, то тогава поръчките на всеки потребител ще са заедно, и output-а ще излиза правилно.

Относно другия проблем - ако изпълняваш онези три реда за всеки запис в orders, как ще смята общата цена на всички поръчки като трите реда са вътрешни за всяка итерация (т.е. всяка обработка на отделна поръчка - това няма достъп до останалите поръчки, => не може да сметне и общата стойност?)
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 23/08/2017 2:09 pm      Отговорете с цитат


anonimen написа:
Това, че order_id се повтаря при различните юзъри, не би трябвало да е проблем при сортирането по име на потребител? Ако първо сортираш по email примерно, и след това по order_id, то тогава поръчките на всеки потребител ще са заедно, и output-а ще излиза правилно.


Пробвал съм по email и по order_id, и по всякакви начини не става. Така или иначе го направих както @Revelation и си работи.

anonimen написа:
Относно другия проблем - ако изпълняваш онези три реда за всеки запис в orders, как ще смята общата цена на всички поръчки като трите реда са вътрешни за всяка итерация (т.е. всяка обработка на отделна поръчка - това няма достъп до останалите поръчки, => не може да сметне и общата стойност?)


Честно казано не те разбрах какво имаш предвид. Ето какво имам. Къде трябва да ги сложа за да смята правилно?
PHP code:

$i = 1;
$lastId = 0;
$lastUser = '';

foreach ($result as $row)
{
if ($row['first_name'] != $lastUser)
{
echo $row['first_name'] . '<br>';
$lastUser = $row['first_name'];
$i = 1;
}
if ($row['order_id'] > $lastId)
{
echo '<br> <a href="">Поръчка № ' . $i . '</a> <br>';
$lastId = $row['order_id'];
$i++;
}
echo '<br><img src="http://localhost/market/uploads/' . $row['image'] . '" width="120"/><br>';
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 145
Bonus: 289
Мнения: 1338
Мнение 23/08/2017 2:29 pm      Отговорете с цитат


Цитат:
$i = 1;
$lastId = 0;
$lastUser = '';

$price = 0;

foreach ($result as $row)
{
if ($row['first_name'] != $lastUser)
{
echo $row['first_name'] . '<br>';
$lastUser = $row['first_name'];
$i = 1;
echo $price; // цената на предишната поръчка. Print & reset - започва нов юзър
$price = 0;
}
if ($row['order_id'] > $lastId)
{
echo $price; // това е цената на предишната поръча
$price = 0; // нулираме - започва нова поръчка
echo '<br> <a href="">Поръчка № ' . $i . '</a> <br>';
$lastId = $row['order_id'];
$i++;
}
echo '<br><img src="http://localhost/market/uploads/' . $row['image'] . '" width="120"/><br>';
$price += $row['price']; // или както ти те казваше колоната
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
1234
Страница 3 от 4


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети