yii2 как получить выбранное выпадающее значение

Я пытаюсь сделать приложение Yii2.

У меня есть столбец «customerID», «customerName» и «total» в MySQL.

Я хочу показать пользователю общую стоимость выбранных клиентов.

Например.

Customer 1 = 100
Customer 2 = 250
Customer 3 = 300
Customer 1 = 300
Customer 3 = 500

Так. Если пользователь выберет Клиента 3 в моем выпадающем списке
Я хочу показать пользователю 300+ 500 = 800.

Я могу видеть сумму общих столбцов для конкретного клиента.
Но я не могу получить сумму всех столбцов выбранного клиента

Как я могу это сделать?

Это мой код ниже.

<?php $form = ActiveForm::begin(); ?>
<?php $chosen = ""; ?>

<?= $form->field($model, 'customerName')->dropDownList(
ArrayHelper::map(Siparisler::find()
->all(),'customerName','customerName'),
[
'prompt'=>'Chose a Customer'
]

);



$var    = ArrayHelper::map(Siparisler::find()->where("(customerName = '$chosen' )")->all(),'total','total');

echo "<h3><br>"."Total"."<br><h3>";


$sum = 0;
foreach($var as $key=>$value)
{
$sum+= $value;
}
echo $sum;

?>

0

Решение

попробуй это. Это должно быть в действии вашего контроллера

public function actionTotal() {

//you've use $chosen for selected customer in drop down list
$chosen = Yii::$app->request->post('chosen', '');

// select all customer data based on $chosen
$customers = Siparisler::find()->where(['=', 'customerName', $chosen])
->all();

$sum = 0;
foreach($customers as $k=>$customer)
{
$sum += $customer->total;
}

return $this->render('total', [
'sum' => $sum,
'customers' => $customers,
]);
}

эти коды ниже должны быть на ваш взгляд

$form = ActiveForm::begin();

// i use yii\helpers\Html
Html::dropDownList('chosen', ArrayHelper::map(Siparisler::find()->all(), 'customerName', 'customerName'),
[
'prompt'=>'Chose a Customer'
]);
Html::submitButton('Submit');

ActiveForm::end();

echo "<h3><br>" . "Total" . "<br>" . $sum . "<h3>";
1

Другие решения

В дополнение к ответу Дэвида: суммирование по столбцу также может быть сделано в чистом SQL. Это может избавить вас от некоторой нежелательной сложности PHP (я стараюсь избегать ArrayHelper::map когда я смогу). Запрос для этого будет

SELECT
sum(total) as sumTotal
FROM customer
WHERE customerName = '<NAME>';

или в Yii2:

Siparisler::find()->where(['customerName' => $chosenName])->sum('total');
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector