Как зациклить два значения из флажка с двумя запросами вставки

0

У меня есть флажок с двумя значениями, например

<input type="checkbox" name="analysis[]" value="'.$rows['name'].'_'.$rows['cost'].'">

Я хочу получить первое значение цикла (имя) с запросом на вставку и получить второе значение (стоимость) в одном var, чтобы вставить его в другой запрос на вставку.

я могу взорвать его

$analysis = explode("_", $_REQUEST['analysis']);
$name = $analysis[0];
$cost = $analysis[1];

но это осложнило для меня первое значение цикла и суммирование второго значения

мой полный PHP-код, чтобы понять, что я хочу

$allAnalysis = $_REQUEST['analysis_type'];
$totalCost = 0;
foreach($allAnalysis as $k=>$analysis)
{
$analysis = explode("_", $analysis);
//$name = $analysis[0];
$cost = $analysis[1];
$totalCost += $cost;
}

$payment_option =  $_REQUEST['payment_option'];

$amount_paid =  $_REQUEST['amount_paid'];
if (!$amount_paid){$amount_paid =  '0.00';}

$amount_remaining =  $analysis_cost - $amount_paid ;
if ($amount_remaining == '0'){$amount_remaining =  '0.00';}

$analysis_due = date('Y-m-d H:i:s', strtotime($_REQUEST['analysis_due']));

// analysis invoice number
$invoice_num = mysql_query(" SELECT max(invoice_id) FROM invoice ");
$invoice_num = mysql_fetch_array($invoice_num) + '1';
$invoice_num = 'H'.date('Y').date('m').str_pad($invoice_num,3,'0',STR_PAD_LEFT);

$invoice_insert = "INSERT INTO invoice (
                        invoice_id ,
                        analysis_cost ,
                        payment_option ,
                        amount_paid ,
                        amount_remaining ,
                        analysis_date ,
                        analysis_due ,
                        invoice_num ,
                        userid
                    ) VALUES ( 
                        NULL ,
                        '".$totalCost."' ,
                        '".$payment_option."' ,
                        '".$amount_paid."' ,
                        '".$amount_remaining."' ,
                        NOW() ,
                        '".$analysis_due."' ,
                        '".$invoice_num."' ,
                        '".$_SESSION['userid']."'
                    )";

if (mysql_query($invoice_insert) === TRUE) 
{
$invoice_id = " SELECT LAST_INSERT_ID() " ; 
foreach($allAnalysis as $k=>$analysis)
{
$analysis = explode("_", $analysis);
$analysis_type = $analysis[0];
$analysis_inser = "INSERT INTO analysis (
                        analysis_id ,
                        horse_id ,
                        analysis_type ,
                        invoice_id
                    ) VALUES ( 
                        NULL ,
                        '".$_GET['horse']."' ,
                        '".$analysis_type."' ,
                        '".$invoice_id."'
                    )";
}                       
}
  • 0
    Вы можете использовать функцию взрыва. php.net/manual/en/function.explode.php
  • 0
    Вы получаете ценность name и cost в value ? Я думаю, нет !!!
Показать ещё 4 комментария
Теги:
arrays
loops

1 ответ

0
Лучший ответ

Поскольку вы используете analysis[] массива analysis[] используйте любой цикл, например foreach

$allAnalysis = $_REQUEST['analysis'] ?? [];
$totalCost = 0;
foreach($allAnalysis as $k=>$analysis){
  $analysis = explode("_", $analysis);
  $name = $analysis[0];
  $cost = $analysis[1];
  $totalCost += $cost;
  //Your DB stuff
}
// Use $totalCost for another purpose

Еще один трюк, чтобы просто получить общую cost от вашего значения флажка

$arr = ["abc_111","abc_222","abc_333"];
$arrStr = explode(",",strrev(join(",",$arr)));
print_r(array_sum($arrStr));

Демо-версия

  • 0
    спасибо, сэр, так что я могу использовать «$ name» с запросом вставки в этом цикле, но как сумму «$ cost» в одной переменной, чтобы добавить его в другой запрос не в том же цикле
  • 0
    Вы должны использовать другую переменную, такую как totalCost чтобы получить сумму всех затрат
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню