Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, travei aqui e não consigo resolver, preciso da ajuda de vocês.
Abaixo tem o codigo que deveria cadastrar no banco de dados todos os id's vindo do array "accounts" pego por $_Post da página anterior.
A variável está vindo com os valores normais do array, qdo dou um echo nela aparecem todos os valores do checkbox selecionado, tudo certinho.
O problema está na rotina do foreach. Ele teria que pegar o primeiro valor (que é o valor do checkbox da página anterior e também o id do usuario na tabela) e dar um imput .
Quando eu seleciono somente um checkbox na página anterior ele faz o imput normalmente, mas quando eu seleciono mais que um valor ele não funciona, a rotina trava.
Onde estou errando??
Segue o codigo:
<?php
require 'boot.php';
$self='invoices'.EXT;
$act = _post('act');
$cid = $_POST["accounts"];
if ($act==''){
$act = _get('_cmd');
}
$rtxt = '';
/////////////////////////////////////
foreach($cid as $valores) {
/////////////////////////////////////
switch ($act){
case 'add':
$notes = _post('notes');
$amount = $_POST['amount'];
$sTotal='0';
$i = '0';
foreach ($amount as $samount){
$amount[$i]= $samount;
$sTotal += $samount;
$i++;
}
$tax = _post('tax');
$taxval = '0.00';
$taxname = '';
$fTotal = $sTotal;
if ($tax!='0'){
$dt = ORM::for_table('taxes')->find_one($tax);
$taxrate = $dt['rate'];
$taxname = $dt['name'];
$taxtype = $dt['type'];
if ($taxtype=='Excluded'){
$taxval = ($sTotal*$taxrate)/100;
$fTotal = $fTotal+$taxval;
}
else {
$taxval = ($sTotal*$taxrate)/100;
$sTotal = $fTotal-$taxval;
}
}
$vtoken = _raid(10);
$ptoken = _raid(10);
$d = ORM::for_table('invoices')->create();
$d->userid = $valores;
$d->created = date('Y-m-d');
$d->duedate = date('Y-m-d');
$d->subtotal = $sTotal;
$d->total = $fTotal;
$d->tax = $taxval;
$d->taxname = $taxname;
$d->vtoken = $vtoken;
$d->ptoken = $ptoken;
$d->status = 'Unpaid';
$d->save();
$invoiceid= $d->id();
$description = $_POST['description'];
$i='0';
foreach ($description as $item){
$d = ORM::for_table('invoiceitems')->create();
$d->invoiceid = $invoiceid;
$d->userid = $valores;
$d->description = $item;
$d->amount = $amount[$i];
$d->save();
$i++;
}
$rtxt = 'Fatura Salva Com Sucesso';
////////////essa chave abaixo é do foreach do array da página anterior////////////////////////
}
///////////////////////////////////////////
}
if ($rtxt==''){
r2($self,'e','Action not defined');
}
r2($self,'s',$rtxt);Não aparece erro, a tela fica branca no processamento.
Acho que não fiz o que vc me falou do comportamento do array.
O que eu teria que fazer? É que eu venho do c++ e estou tamando pau do php rsrs...
A rotina toda está funcionando, só que com um id por vez, quando utilizo dessa forma com o foreach ele trava.
eu teria que fazer igual eu fiz mais abaixo?
foreach ($description as $account)?
O foreach é um laço que percorre todo o array, mas se a variável fosse um array ele teria dado erro.
coloca um
var_dump($_POST["accounts"]);
em cima para ver como ele se comporta nos dois casos, de um checkbox selecionado ou vários
assim você pode ver melhor oq esta acontecendo
E quando você diz imput, quer dizer inserção do banco de dados?
Cara, você não vai acreditar.
O erro estava acontecendo porque o cache de memoria disponivel no apache, mais precisamente no php.init estava baixo e ele não estava processando.
Eu alterei o tamanho de 620kb para 2 mb e funcionou. Voltei para o tamanho default e deu erro.
Sim, qdo eu disse imput quis dizer add na tabela do mysql
Valeu mesmo pelo help e pela disponibilidade em querer me ajudar.
Fico muito grato,
Precisando estamos ai!
Abraços,
Thiago.
Qual o erro que aparece?
Você fez o resultado do $_POST["accounts"] se comportar como um array para o foreach?