Jump to content

Archived

This topic is now archived and is closed to further replies.

asacap1000

Foreach com mais varias variáveis

Recommended Posts

Galera tudo blz?

 

Preciso de uma força, estou com um formulário a qual envia para o banco numeros de documentos, acompanhados de volume, status e numero de container.

 

O cadastro está ocorrendo quase que normalmente, porém me deparei com uma situação. Na consulta destes documentos existem alguns que se repetem alternando apenas o numero do container. mas na hora de gravar ele pega e grava apenas um numero de container repetindo as linhas.

Deixa eu dar os exemplos que fica mais fácil.

 

$tb_doc = '1234567'

$volume = '1'

$tb_status = 'liberado'

$tb_Container = '123', '145', '198'

 

Na hora de gravar ele apenas captura o container 198 e grava três linhas.

 

O foreach que estou utilizando.

foreach($_POST['tb_doc'] as $indice => $valor){
            $volume   = $_POST['volume'.$valor];
            $container  = $_POST['container'.$valor];
            $status   = $_POST['status'.$valor];
            $inserir = "INSERT INTO documentos 
            (tb_data,tb_prot,tb_doc,tb_vol,tb_status,tb_cont) VALUE ('".$data."','".$protocolo."','".$valor."', '".$volume."', '".$status."', '".$container."')" 
            or die(mysql_error());
            mysql_query($inserir) or die(mysql_error());

Será que tenho que criar um foreach para o container tbm? Se sim como eu coloco?

 

Agradeço ai quem puder me ajudar.

Share this post


Link to post
Share on other sites

Dá um print_r no post['tb_doc']. Veja se não está retornando 2 linhas vazias.

Outra coisa, se esse $tbContainer é uma string do jeito que você postou, acho que está errado. Tente transformar em um array, pra poder manipular mais coerentemente.

 

$tb_Container = array('123', '145', '198');

 

Aí lá em $container, dê um implode pra unir todos os índices, separando por vírgulas.

Share this post


Link to post
Share on other sites

Dá um print_r no post['tb_doc']. Veja se não está retornando 2 linhas vazias.

Outra coisa, se esse $tbContainer é uma string do jeito que você postou, acho que está errado. Tente transformar em um array, pra poder manipular mais coerentemente.

 

$tb_Container = array('123', '145', '198');

 

Aí lá em $container, dê um implode pra unir todos os índices, separando por vírgulas.

Dei um print ele retornou apenas um container.

 

No caso do array eu faria desta forma?

 

$container = array($_POST['container'.$valor]);

 

$arquivo = implode(',', $container);

Share this post


Link to post
Share on other sites

Galera estou apanhando com esse esquema, fiz o que Maykel orientou mas não foi.

 

Vou postar o código todo se puderem me dar uma força aí...

 

Primeiro o form:

 <fieldset><legend><strong>SELECIONE OS DOCUMENTOS QUE DESEJA PRÉ-AGENDAR</strong></legend>
<?php ociexecute($stmu);
while (($row = oci_fetch_array($stmu, OCI_ASSOC)) != false) { 
 
$documento = oci_result($stmu,1) ;
$container = oci_result($stmu,2) ;
$volume    = oci_result($stmu,3) ;
$status    = oci_result($stmu,4) ;
$tb_modal  = oci_result($stmu,5) ;

//echo "$container<br>";
?>
 
<th><td>
<div class="divCheckbox">

<input name="tb_doc[]" type="checkbox" id="idT" value="<?php echo $documento ?>"/>
<?php echo $documento ?>
<input type="hidden" name="volume<?php echo $documento ?>" value="<?php echo $volume ?>" />
<input type="hidden" name="status<?php echo $documento ?>" value="<?php echo $status ?>" />
<input type="hidden" name="container<?php echo $documento ?>" value="<?php echo $container ?>" />
<input type="hidden" name="modalidade<?php echo $documento ?>" value="<?php echo $tb_modal ?>" />
<?php echo "VOL: ".$volume.""; ?>
<?php echo $container; ?>
</div>
<?php }}  ?>  <p> </td></th></label></fieldset>
  
<hr>
<input type="image" src="ico_criar.png" value="Incluir Documentos" onClick="return valida()" />
</form>

<?php };?>

Agora o que recebe o form...

 foreach($_POST['tb_doc'] as $indice => $valor){
            $volume= $_POST['volume'.$valor];
	    $container = $_POST['container'.$valor];
	    $tb_modal = $_POST['modalidade'];
	    $status= $_POST['status'.$valor];

            $inserir    = "INSERT INTO documentos 
            (tb_data,tb_prot,tb_doc,tb_vol,tb_status,tb_cont, tb_modal) 
            VALUE ('".$data."','".$protocolo."','".$valor."', '".$volume."', '".$status."', '".$container."','".$tb_modal."')" 
            or die(mysql_error());
            mysql_query($inserir) or die(mysql_error());
			

Share this post


Link to post
Share on other sites

  • Similar Content

    • By ment0r
      Boa tarde a todos.

      Estou iniciando um estudo com o banco MySQL (trabalho co PostgreSQL e Firebird) para futuros trabalhos. Bom, me deparei com um problema chato: caracteres especiais.
      Um exemplo: T�tulo.
      Não consigo exibir no meu site tais caracteres. O banco tem Charset/Collation: utf8/utf8_bin como configuração.
      Já usei o utf_encode e utf_decode - não resolveu.

      Alguém sabe o que mais posso fazer?
      Desde já, muito obrigado.
    • By asacap1000
      Galera salve salve!!
      Estou com um projeto em que são armazenados vídeos, porém seguindo os requisitos exigidos, para visualizar e baixar esses vídeos eles tem que aparecer com numero de cadastro do usuário que está acessando no centro do video como uma marca d'agua.
       
      Para simplesmente aparecer na tela eu consigo fazer uma camada superior com css e apresentar os dados do usuário mas para baixar o vídeo ele já faz sem a marca.
       
      Vocês conhecem algum recurso pra adicionar essa marca? ela não pode ficar no arquivo original pois outros usuário poderão baixar com sua identificação na tela.
       
      Se alguem puder me dar um norte ajudaria muito
    • By marcelo.ourico
      Estou precisando fazer o envio de um XML via webservice. Estou utilizando PHP 7.4 e nuSoap.

      Porém esse XML de envio possui várias tags com hífen. Por exemplo <tag-name></tag-name>.
       
      Esse hífen tem sido um problema, principalmente por que eu não posso enviar o XML como string. Apenas como objeto. Então imaginem isso:
       
      $objeto = simplexml_load_string($string_xml);  
      Se simplesmente eu tentar resgatar o valor da TAG já dá erro...
       
      $campo1= $objeto->tag-name;
      O erro ocorre em função de que o hífen é um caractere reservado do PHP... Então como resolver?

      Independente disso, quando eu tento fazer o envio via nuSoap, também recebo erro abaixo:
      wsdl->getTypeDef('tag-name', 'http://xyz.abr...')
      wsdl->serializeType('tag-name', 'tag-name', Object(SimpleXMLElement), '

      Alguém já passou por isso? Sabe como resolver? Pode dar uma dica?
    • By Caio Vargas
      fala pessoal eu aqui de novo kkk
       
      consegui achar um tutorial de como criar o calendario fiz algumas modificaçoes 
       
      porem agora eu quero fazer o seguinte quero definir os dias que os serviços seram apresentados nos dias
       
      tipo tenho segunda terça quarta quinta sexta sabado e domingo ai esses dias seram inseridos no banco 
       
      como posso fazer uma verificação no codigo
       
      <?php // What is the first day of the month in question? function build_calendar($month, $year) { $Read = new Read; $Read->FullRead("SELECT * FROM " . DB_AGENDAMENTO . " WHERE MONTH(date) =:month AND YEAR(date)=:year","month={$month}&year={$year}"); $bookings = array(); if($Read->getResult()): if($Read->getRowCount() > 0): while($row = $Read->getResult()): $bookings[] = $row['date']; endwhile; endif; endif; // Create array containing abbreviations of days of week. // $daysOfWeek = array('Sunday', 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); // Qual é o primeiro dia do mês em questão? $firstDayOfMonth = mktime(0,0,0,$month,1,$year); // Quantos dias este mês contém? $numberDays = date('t',$firstDayOfMonth); // Recuperar algumas informações sobre o primeiro dia do // mês em questão. $dateComponents = getdate($firstDayOfMonth); // What is the name of the month in question? $monthName = $dateComponents['month']; // What is the index value (0-6) of the first day of the // month in question. $dayOfWeek = $dateComponents['wday']; // Create the table tag opener and day headers $datetoday = date('Y-m-d'); $calendar = "<table class='table table-bordered'>"; $calendar .= "<center><h2>$monthName $year</h2>"; // se a data month < que a data atual então o botão sera desativado if($month <=> date('m')): $calendar.= "<a class='btn btn-xs btn-primary' href=". BASE ."/index/month/".date('m', mktime(0, 0, 0, $month-1, 1, $year))."/year/".date('Y', mktime(0, 0, 0, $month-1, 1, $year)).">Previous Month</a> "; else: $calendar.= "<a class='btn btn-xs btn-primary'>Previous Month</a>"; endif; $calendar.= " <a href=". BASE ." class='btn btn-xs btn-primary' data-month='".date('m')."' data-year='".date('Y')."'>Current Month</a> "; $calendar.= "<a href='". BASE ."/index/month/".date('m', mktime(0, 0, 0, $month+1, 1, $year))."/year/".date('Y', mktime(0, 0, 0, $month + 1, 1, $year))."' class='btn btn-xs btn-primary'>Next Month</a></center><br>"; $calendar .= "<tr>"; // Create the calendar headers foreach(getSemana() as $day): $calendar .= "<th class='header'>$day</th>"; endforeach; // Cria o resto do calendário // Inicia o contador de dias, começando com o 1º. $currentDay = 1; $calendar .= "</tr><tr>"; // A variável $dayOfWeek é usada para // assegura que o calendário // display consiste em exatamente 7 colunas. if($dayOfWeek > 0): for($k = 0; $k < $dayOfWeek; $k++): $calendar .= "<td class='empty'></td>"; endfor; endif; $month = str_pad($month, 2, "0", STR_PAD_LEFT); while ($currentDay <= $numberDays): //Sétima coluna (sábado) atingida. Inicie uma nova linha. if ($dayOfWeek == 7): $dayOfWeek = 0; $calendar .= "</tr><tr>"; endif; $currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT); $date = "$year-$month-$currentDayRel"; //volta para a data atual $dayname = strtolower(date('l', strtotime($date))); $eventNum = 0; $appointment_date = date('Y-m-d', strtotime($appointment_date . ' +1 day')); $day_id = date('w',strtotime($appointment_date)); // var_dump($day_id); $today = $date == date('Y-m-d') ? "today" : ""; if($date < date('Y-m-d')): $calendar.="<td><h4>$currentDay</h4> <button class='btn-danger-no '></button>"; else: $calendar.="<td class='$today'><h4>$currentDay</h4> <a href=".BASE."/book/date/".$date." class='btn btn-success btn-xs'>Book</a>"; endif; $calendar .="</td>"; //Increment counters $currentDay++; $dayOfWeek++; endwhile; //Complete the row of the last week in month, if necessary if ($dayOfWeek != 7): $remainingDays = 7 - $dayOfWeek; for($l=0; $l < $remainingDays; $l++): $calendar .= "<td class='empty'></td>"; endfor; endif; $calendar .= "</tr>"; $calendar .= "</table>"; return $calendar; }  
    • By joeythai
      Boa tarde pessoal,
       
      Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens:
      <code>
      public function getBillsUnpaid($date)
      {
      $results = [];
      $numberBills = $this->lotModel->select(DB::RAW("
      Lotes.ID AS Lote_ID,
      Compradores.ID as Comprador_ID,
      Compradores.CompradorWeb_ID,
      Compradores.NM as NM_Comprador,
      Lotes.Leilao_ID as Leilao_ID,
      Lotes.NU as NU_Lote,
      FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto,
      REPLACE(
      (CASE
      WHEN
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0
      THEN CONCAT(
      LTRIM(RTRIM(Compradores.NM_DDDCel)),'',
      LTRIM(RTRIM(Compradores.NM_Celular))
      )
      WHEN
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0
      THEN CONCAT(
      LTRIM(RTRIM(Compradores.NM_DDDTel)),'',
      LTRIM(RTRIM(Compradores.NM_Telefone))
      )
      ELSE ''
      END)
      ,'-', '') AS NM_Celular,
      Lotes.VL_Venda,
      ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca,
      ISNULL((
      SELECT SUM(VL_Cobertura)
      FROM LotesXPagamentos
      WHERE Lote_ID = lotes.ID
      AND Pagamento_ID IS NOT NULL
      ), 0) as VL_Pago,
      CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao
      "))
      ->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID')
      ->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID')
      ->where('Lotes.ST_Lote', 3)
      ->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01')
      ->whereRaw("
      ISNULL((
      SELECT SUM(VL_Cobertura)
      FROM LotesXPagamentos
      WHERE Lote_ID = Lotes.ID
      AND Pagamento_ID IS NOT NULL
      ), 0) = 0")
      ->orderBy('Lotes.NU')
      ->take(10)
      ->get();
      if(count($numberBills) > 0){
      foreach($numberBills as $bills){
      $results['CompradorWeb_ID'] = $bills->CompradorWeb_ID;
      $results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto;
      $results['VL_Cobranca'] = $bills->VL_Cobranca;
      $results['Lote_ID'] = $bills->Lote_ID;
      $results['Comprador_ID'] = $bills->Comprador_ID;
      $results['NM_Comprador'] = $bills->NM_Comprador;
      $results['NM_Descricao'] = $bills->NM_Descricao;
      $results['VL_Pago'] = $bills->VL_Pago;
      $results['NU_Lote'] = $bills->NU_Lote;
      $results['Leilao_ID'] = $bills->Leilao_ID;
      $phones = $this->getPhoneUsers($bills->CompradorWeb_ID);
      $results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular;
      return $results;
      }
      }
      }
      </code>
       
      Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.