Ir para conteúdo
Entre para seguir isso  
asacap1000

Dois selects com foreach entre eles

Recommended Posts

Galera bom dia e ótimo feriado pra todos aí!!!!.

 

Estou com um problema aqui e não estou saindo do lugar.

 

Tenho um select que busca informações no banco de dados Oracle. Beleza trago os resultados dos motoristas que ainda estão na empresa para coleta.

Deste resultado tenho que fazer um select no banco Mysql e buscar os documentos de entrada destes motoristas e deixá-los disponibilizados.

 

Tentei utilizar o foreach no resultado da primeira consulta e o IN no select da segunda, mas percebi que ele está consultando apenas o ultimo resultado da primeira.

eu fiz da seguinte forma.

$connect = oci_connect("user","senha","oracle");  
   $stmu = ociparse($connect,"select nome_motor from entrada where status < '90'");  

 ociexecute($stmu);

while (($row = oci_fetch_array($stmu, OCI_BOTH)) != false) {; 
 	$motor = array(OCIResult ($stmu ,1));
	
	foreach ($motor as $motorista) 
	$motorista = strtoupper($motorista);
	{
$result = mysqli_query($con,"SELECT * FROM ordem
 WHERE nome_motor in ($motorista) and datacoleta = (SELECT date_format(curdate(), '%d/%m/%Y'))LIMIT 15");
}}

<form method="GET" action="#">
PROTOCOLO:<select name="id" size="1" id="id">
<option value="">Selecione</option> <?
 while($row = mysqli_fetch_array($result))
 
  { 
  echo "<option value='" . $row['id'] . "'>" . $row['id'] . "</option>";
  }
  echo "</select>";   ?>
</select><p>

MOTORISTA:		<select name="cidades" id="cidades" disabled="disabled"  contenteditable="false" ></select><p>
TRANSPORTADORA: <select name="transporte" id="transporte" disabled="disabled"  contenteditable="false" ></select><p>
CLIENTE:		<select name="cliente" id="cliente" disabled="disabled"  contenteditable="false" ></select><p>
DOCUMENTOS:		<select name="documento" value"documento" id="documento"></select><p>
<hr>
<input type="submit" value="ABRIR">
</form>

Será que estou errando na posição das chaves ou tem que ser de outra forma?

Se puderem me dar uma ajuda antes do carnaval KKKKKK vou poder viajar huahsuahsuhaushau

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

$motor = array();
$contar = 0;

while (($row = oci_fetch_array($stmu, OCI_BOTH)) != false) { 
 	$motor[$contar] = OCIResult ($stmu, 1);
	$contar++;
}

foreach ($motor as $motorista) {
	$motorista = strtoupper($motorista);
	$result = mysqli_query($con,"SELECT * FROM ordem
	WHERE nome_motor in ($motorista) and datacoleta = (SELECT date_format(curdate(), '%d/%m/%Y'))LIMIT 15");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Tente assim:

 

 

$motor = array();
$contar = 0;

while (($row = oci_fetch_array($stmu, OCI_BOTH)) != false) { 
 	$motor[$contar] = OCIResult ($stmu, 1);
	$contar++;
}

foreach ($motor as $motorista) {
	$motorista = strtoupper($motorista);
	$result = mysqli_query($con,"SELECT * FROM ordem
	WHERE nome_motor in ($motorista) and datacoleta = (SELECT date_format(curdate(), '%d/%m/%Y'))LIMIT 15");
}

Show de bola estou quase lá, coloquei mais algumas regras agora e aspas simples e virgula mas ainda não retira a ultima virgula.

$cond =   ''.$motorista.',';//coloquei uma virgula em cada posição


#tamanho da variável "$cond"

$size = strlen($cond);

#Retiro a vírgula que ficou no final da string e teremos a condição completa
	$condicao = substr($cond,0,$size-1);


Mas ainda sim ele não tira a ultima virgula

'ADRIANO DE CAMPOS','AMARILDO SEVERINO','ELIEL DE OLIVEIRA SOARES','EVANDRO CESAR SCOTTO','GILVAN COSTA SILVA','JULIO CESAR CALGAROTTO','LEANDRO RIBEIRO DA COSTA','PAULO CESAR DOMINGUES PAGGI',

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Faça assim:

$cond =   ''.$motorista.',';//coloquei uma virgula em cada posição
$cond = trim($cond, ',');

Boa tarde Alex!

Neste esquema eu retiro o que coloquei e adiciono apenas no processo que você postou ou coloco junto?

 

Pois coloquei e ele retirou todas as virgulas deixando apenas as aspas.

 

Ah as aspas estou adicionado no proprio select veja abaixo.

 

SELECT DISTINCT (''''|| D.NAME ||'''')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste aqui e funcionou perfeitamente:

$motorista = "'ADRIANO DE CAMPOS','AMARILDO SEVERINO','ELIEL DE OLIVEIRA SOARES','EVANDRO CESAR SCOTTO',";
$motorista = trim($motorista, ',');
echo $motorista;
// Saida: 'ADRIANO DE CAMPOS','AMARILDO SEVERINO','ELIEL DE OLIVEIRA SOARES','EVANDRO CESAR SCOTTO'
  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Fiz um teste aqui e funcionou perfeitamente:

$motorista = "'ADRIANO DE CAMPOS','AMARILDO SEVERINO','ELIEL DE OLIVEIRA SOARES','EVANDRO CESAR SCOTTO',";
$motorista = trim($motorista, ',');
echo $motorista;
// Saida: 'ADRIANO DE CAMPOS','AMARILDO SEVERINO','ELIEL DE OLIVEIRA SOARES','EVANDRO CESAR SCOTTO'

Valewww deu certo!!!

Fiz algumas alterações aqui agora e foi.

 

Fiz o seguinte no primeiro select coloquei desta forma

LISTAGG (adi.motor,''',''')WITHIN GROUP (ORDER BY adi.motor)over () prod

ociexecute($stmu);

$motor = array();
$contar = 0;

while (($row = oci_fetch_array($stmu, OCI_BOTH)) != false) { 
 	$motor[$contar] = OCIResult ($stmu, 1);
	$contar++;
}

foreach ($motor as $motorista1) {

$result = mysqli_query($con,"SELECT *
  FROM ordem
 WHERE nome_motor in ('$motorista1') and datacoleta = (SELECT date_format(curdate(), '%d/%m/%Y'))");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por sadamkim
      Pessoal,  me deparei com um problema.
      Tenho uma Tabela, onde fica armazenada as transações dos clientes.
      Cada transação tem vários registros com o campo STATUS.
       
      Preciso fazer um MAX, para pegar a ultima transação por data, e assim saber qual foi o status da mesma.
      Mas ao utilizar o MAX e selecionar o campo STATUS ele me traz todos os registro, porque o mesmo não pode agrupar por status, por conter valores diferentes.
      É possível criar alguma forma de selecionar no meu caso a ultima transação por data (MAX) e trazer o campo status?
      Seja com alguma procedure, ou outra função do ORACLE.


    • Por allencar.limma
      Tento incluir as informações de um formulário no banco de dados e não consigo. conforme código abaixo.
      <? /*Incluir as informações no formulario */ include "config.php"; $nome = trim($_POST['nome']); $masp = trim($_POST['masp']); $cpf = trim($_POST['cpf']); $telefone = trim($_POST['telefone']); $email = trim($_POST['email']); $endereco = trim($_POST['endereco']); $data_nascimento = trim($_POST['data_nascimento']); $unidade_lotacao = trim($_POST['unidade_lotacao']); /* Vamos checar algum erro nos campos */ if ((!$nome) || (!$masp) || (!$cpf) || (!$telefone) || (!$email) || (!$endereco) || (!$data_nascimento) || (!$unidade_lotacao)){ echo "ERRO: <br /><br />"; if (!$nome){ echo "Nome Completo é requerido.<br />"; } if (!$masp){ echo "Masp é requerido.<br />"; } if (!$cpf){ echo "CPF é requerido.<br /)>"; } if (!$telefone){ echo "Telefone é requerido.<br />"; } if (!$email){ echo "Email é requerido.<br />"; } if (!$endereco){ echo "Endereço é requerido.<br />"; } if (!$data_nascimento){ echo "Data de Nascimento é requerido.<br />"; } if (!$unidade_lotacao){ echo "Unidade de Lotação é requerido.<br>"; } echo "Preencha os campos abaixo: <br />"; include "formulario_cadastro.php"; }else { /* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */ $sql_email_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'" ); $sql_masp_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE masp='{$masp}'" ); $sql_cpf_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE cpf='{$cpf}'" ); $eReg = mysql_fetch_array($sql_email_check); $uReg = mysql_fetch_array($sql_masp_check); $uReg = mysql_fetch_array($sql_cpf_check); $email_check = $eReg[0]; $masp_check = $uReg[0]; $cpf_check = $uReg[0]; if (($email_check > 0) || ($masp_check > 0) || ($cpf_check > 0)){ echo "<strong>ERRO</strong>: <br /><br />"; if ($email_check > 0){ echo "Este email já está sendo utilizado.<br /><br />"; unset($email); } if ($masp_check > 0){ echo "Este Masp já está sendo utilizado.<br /><br />"; unset($masp); } if ($cpf_check > 0){ echo "Este CPF já está sendo utilizado.<br /><br />"; unset($cpf); } include "formulario_cadastro.php"; }else{ /* Se passarmos por esta verificação ilesos é hora de finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de forma randômica*/ function makeRandomPassword(){ $salt = "abchefghjkmnpqrstuvwxyz0123456789"; srand((double)microtime()*1000000); $i = 0; while ($i <= 7){ $num = rand() % 33; $tmp = substr($salt, $num, 1); $pass = $pass . $tmp; $i++; } return $pass; } $senha_randomica = makeRandomPassword(); $senha = md5($senha_randomica); // Inserindo os dados no banco de dados //$cpf = htmlspecialchars($cpf); ***RETIRADO PELO FATO DE NÃO ESTA SENDO USADO $sql = mysql_query( "INSERT INTO usuarios (none, masp, cpf, telefone, email, endereco, data_nascimento, unidade_lotacao) VALUES ('$nome', '$masp', '$cpf', '$telefone', '$email', '$endereco', '$data_nascimento', '$unidade_lotacao', now())") or die( mysql_error() ); if (!$sql){ echo "Ocorreu um erro ao criar sua conta, entre em contato."; }else{ $usuario_id = mysql_insert_id(); // Enviar um email ao usuário para confirmação e ativar o cadastro! $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "From: RCI - <rci@rcionline.com.br>"; $subject = "Confirmação de cadastro - www.rcionline.com.br"; $mensagem = "Prezado {$nome} {$masp},<br /> Obrigado pelo seu cadastro em nosso site, <a href='http://www.rcionline.com.br'> http://www.rcionline.com.br</a>!<br /> <br /> Para confirmar seu cadastro e ativar sua conta em nosso site, podendo acessar à áreas exclusivas, por favor clique no link abaixo ou copie e cole na barra de endereço do seu navegador.<br /> <br /> <a href='http://www.rcionline.com.br/ativar.php?id={$usuario_id}&code={$senha}'> http://www.rcionline.com.br/ativar.php?id={$usuario_id}&code={$senha} </a> <br /> <br /> Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo efetuado o login com os seguintes dados abaixo:<br > <br /> <strong>Usuario</strong>: {$usuario_id}<br /> <strong>Senha</strong>: {$senha_randomica}<br /> <br /> Obrigado!<br /> <br /> Webmaster<br /> <br /> <br /> Esta é uma mensagem automática, por favor não responda!"; mail($email, $subject, $mensagem, $headers); echo "Foi enviado para seu email - ( ".$email." ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!"; } } } ?>  
    • Por GustavoJacob15
      tenho um case assim no meu fonte: 
      ---------------------------------------------------------
      CASE RA_DEMISSA
          WHEN '' THEN 'DESLIGADO'
          ELSE 'ATIVO'
      END AS SITUACAO
      ---------------------------------------------------------
       
      Preciso colocar no where para mostar um parametro com 'ativo' ou 'desligado' 
       
    • Por vinicius.david
      Gostaria que fosse possível encontrar produtos pela marca no Opencart 2.3.0.2. Quando a pessoa digitar no buscar a marca do produto, ele deveria mostrar todos os produtos que pertencem aquela marca. Em catalog/model/catalog/product.php já existe por padrão a função de procurar por fabricante: 

      if (!empty($data['filter_manufacturer_id'])) {                 $sql .= " AND p.manufacturer_id = '" . (int) $data['filter_manufacturer_id'] . "'";             }
      Mas ela não faz a função de procurar por marca. Alguém já encontrou alguma solução na internet para este caso?
    • Por manolegal
      Bom dia.
      Recebo em meu formulário um dado em forma de url.
      Extraio desta url o CNPJ da empresa. A seguir faço uma pesquisa para verificar se este CNPJ está em minha base de dados, sendo que se estiver trago dados da empresa para preenchimento do campo empresa do formulário.
      Estando a empresa no BD, consigo trazer os dados corretamente, porém estes dados não passados para o formulário para serem o valor inicial do campo empresa.
      $cnpj_numero = 12345678910; $Sql_cnpj = "SELECT id_empresa as id_empresa_bd_ext, upper(empresas.empresa) as fornecedor_bd_ext FROM empresas WHERE empresas.cnpj = '$cnpj_numero'"; $Resultado_cnpj = executa($Sql_cnpj); while ($linha_cnpj = pg_fetch_array($Resultado_cnpj)){ $empresa_bd_ext = $linha_cnpj["fornecedor_bd_ext"]; $forn_hid_bd_ext = $linha_cnpj["id_empresa_bd_ext"]; } echo "Fornecedor BD: $empresa_bd_ext - $forn_hid_bd_ext<br><hr>"; // Está mostrando dados corretamente // Definir valor a ser recebido pelo campo Empresa do Formulário if ($cnpj_numero != ""){ $empresa = $empresa_bd_ext; $forn_hid = $forn_hid_bd_ext; }else{ // Caso url não tenha trazido CNPJ, atribuo outro valor $empresa = $empresa_bd; $forn_hid = $forn_hid_bd; } O campo empresa do formulário não está recebendo o valor de $empresa. Considerando que exista um CNPJ, onde pode estar o problema?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.