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

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

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


Не се получава така.

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

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

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

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


Да, защото проверките минават още при първата итерация, когато още нямаш поръчки. Тук:

PHP code:
$i = 1;
$lastId = 0;
$lastUser = ''; // тази ст-ст е различна от $row[first_name] при първата итерация, затова по-надолу:

$price = 0;

foreach ($result as $row)
{
if ($row['first_name'] != $lastUser) // при първата итерация това минава

Можеш да сложиш проверки при принтването на цената

PHP code:
if(!empty($lastUser) echo 'Цена';

за да не излизат нулите.

Също, след края на цикъла не се принтват, защото не се triggerва промяна в името на юзера - просто цикълът излиза и няма кой да принте. Можеш ръчно да добавиш echo 'цена' след цикъла.

Като цяло това почва да става малко грозно... И всъщност тук си проличава къде дизайнът не е добър - почва да се повтаря код и да се правят допълнителни проверки по странни места, за да се "поправи", но всъщност така само се замазва положението. Ако впоследствие добавиш още таблици и детайли по поръчките, тези неща ще продължават да се натрупват и ще/може да стане каша. Така че ти препоръчвам отрано да премислиш дали наистина искаш да продължаваш така.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

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

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


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

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

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


anonimen написа:
Да, защото проверките минават още при първата итерация, когато още нямаш поръчки. Тук:

PHP code:
$i = 1;
$lastId = 0;
$lastUser = ''; // тази ст-ст е различна от $row[first_name] при първата итерация, затова по-надолу:

$price = 0;

foreach ($result as $row)
{
if ($row['first_name'] != $lastUser) // при първата итерация това минава

Можеш да сложиш проверки при принтването на цената

PHP code:
if(!empty($lastUser) echo 'Цена';

за да не излизат нулите.

Също, след края на цикъла не се принтват, защото не се triggerва промяна в името на юзера - просто цикълът излиза и няма кой да принте. Можеш ръчно да добавиш echo 'цена' след цикъла.

Като цяло това почва да става малко грозно... И всъщност тук си проличава къде дизайнът не е добър - почва да се повтаря код и да се правят допълнителни проверки по странни места, за да се "поправи", но всъщност така само се замазва положението. Ако впоследствие добавиш още таблици и детайли по поръчките, тези неща ще продължават да се натрупват и ще/може да стане каша. Така че ти препоръчвам отрано да премислиш дали наистина искаш да продължаваш така.


Мазалото ще става огромно. Да не говорим, че ако по този начин продължава да генерира view. Кода ще е нечетим, заявките ще се усложняват и накрая ще реши да го пренапише отначало, защото за да го поправи ще му отнеме повече време.

@teroristd не знам дали @raiden ти е изпратил това, за което говореше, но ако е - прочети.
Аз ти дадох прост пример за 3 таблици. Върни се в началото и виж. Но със сигурност ще трябва да прочетеш повече за базата данни.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

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

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


Имам ги трите таблици users, items(при мен се казва offer), orders.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
raiden
Активен
Активен

Регистриран на: 08/12/2006 10:13 am

Support: 181
Bonus: 448
Мнения: 2136
Мнение 23/08/2017 8:45 pm      Отговорете с цитат


Тази тема се превърна в страхотен пример за това как изначално погрешната структура на базата данни всъщност може да се накара да заработи, може да се излъже да се извлече още нещо от нея, и още нещо, но с усложняването на заявките нещата стават все по-мъчителни. И понеже не искам мнението ми да се приема като заяждане искам да предложа нещо ако @teroristd е съгласен да си даде структурата на БД и данните, може би в нова тема в друг раздел.
Искам да покажа и поправя грешките в структурата с минимални промени спрямо оригинала колкото да се нормализира, да трансформирам данните в коректния вид и да напиша по 1 клас за всяка същност + примерно използване на функциите за извеждане на резултатите които се търсят.
@teroristd, не ме разбирай погрешно не ти казвам да приемеш моя начин. Но ако все пак си съгласен да дадеш 1 dump + какво искаш да покажеш на екрана, искам да използвам възможността да покажа къде е проблема и как се прави нормализация като ползвам твоя реален пример за начална точка.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

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

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


raiden написа:
Тази тема се превърна в страхотен пример за това как изначално погрешната структура на базата данни всъщност може да се накара да заработи, може да се излъже да се извлече още нещо от нея, и още нещо, но с усложняването на заявките нещата стават все по-мъчителни. И понеже не искам мнението ми да се приема като заяждане искам да предложа нещо ако @teroristd е съгласен да си даде структурата на БД и данните, може би в нова тема в друг раздел.
Искам да покажа и поправя грешките в структурата с минимални промени спрямо оригинала колкото да се нормализира, да трансформирам данните в коректния вид и да напиша по 1 клас за всяка същност + примерно използване на функциите за извеждане на резултатите които се търсят.
@teroristd, не ме разбирай погрешно не ти казвам да приемеш моя начин. Но ако все пак си съгласен да дадеш 1 dump + какво искаш да покажеш на екрана, искам да използвам възможността да покажа къде е проблема и как се прави нормализация като ползвам твоя реален пример за начална точка.


Благодаря, ще се радвам да видя как се прави. Как да покажа структурата на базите? Може би със снимки? Утре ще ги пусна в нова тема, като същевременно ще обясня какво искам да постигна.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
raiden
Активен
Активен

Регистриран на: 08/12/2006 10:13 am

Support: 181
Bonus: 448
Мнения: 2136
Мнение 23/08/2017 10:01 pm      Отговорете с цитат


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

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

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


Благодаря за съдействието.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
1234
Страница 4 от 4


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