Ir para conteúdo
Entre para seguir isso  
Anderson Hito

Filtro de array vindo do banco

Recommended Posts

Boa noite galera, preciso de uma ajuda.

 

Estou efetuando uma pesquisa no banco de dados mysql, essa pesquisa me retorna o menor valor de cada coluna, até ai sem problemas.

O problema é que estou amarrado a mostrar 6 linhas da consulta.

Preciso que me ajudem a mostrar o resultado de acordo com a quantidade cadastrada no banco.

 

Abaixo segue o código:

 

<?php require_once('../Connections/compras_empresa.php'); ?>
<?php
mysql_select_db($database_compras_empresa, $compras_empresa);
$sql='SELECT proposta_valorunitario FROM propostas WHERE proposta_referencia=259';
$res = mysql_query($sql,$compras_empresa);
$num_rows = mysql_num_rows($res);
echo "encontrado".$num_rows. " - "."linhas <br />";
$i = 0;
while($escrever = mysql_fetch_array($res)){
$listaqtd = $escrever['proposta_valorunitario'];
$resultadoqtdteste = explode ("#", $listaqtd);
$array_1[$i] = $resultadoqtdteste[0];
$array_2[$i] = $resultadoqtdteste[1];
$array_3[$i] = $resultadoqtdteste[2];
$array_4[$i] = $resultadoqtdteste[3];
$array_5[$i] = $resultadoqtdteste[4];
$array_6[$i] = $resultadoqtdteste[5];
$i++;
}
sort($array_1);
sort($array_2);
sort($array_3);
sort($array_4);
sort($array_5);
sort($array_6);
echo $array_1[0]."<br>";
echo $array_2[0]."<br>";
echo $array_3[0]."<br>";
echo $array_4[0]."<br>";
echo $array_5[0]."<br>";
echo $array_6[0]."<br>";
?>
Me ajudem !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que ajuda isso...

while(...){
  [...]
 
   $listaqtd = $escrever['proposta_valorunitario'];
   $resultadoqtdteste = explode("#",$listaqtd);
   foreach($resultadoqtdteste as $ch=>$vl){
      $array[$i] = $vl;
      sort($array[$i]);
   }
   
 
$i++;
}
  foreach($array as $ch=>$valor){
     echo $array[$ch]."<br>";   
   } 

Testa e reporta algum erro... não testei

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro.

Warning: sort() expects parameter 1 to be array, string given in [/size]/home/sevidora/public_html/compras/login/teste.php on line [/size]16

 

 

Será que ajuda isso...

while(...){  [...]    $listaqtd = $escrever['proposta_valorunitario'];   $resultadoqtdteste = explode("#",$listaqtd);   foreach($resultadoqtdteste as $ch=>$vl){      $array[$i] = $vl;      sort($array[$i]);   }    $i++;}  foreach($array as $ch=>$valor){     echo $array[$ch]."<br>";      } 

Testa e reporta algum erro... não testei

http://servidorinformatica.com.br/compras/images/banco.jpg

 

o filtro deve ser desta maneira.

Compartilhar este post


Link para o post
Compartilhar em outros sites
while(...){
  [...]
 
   $listaqtd = $escrever['proposta_valorunitario'];
   $resultadoqtdteste = explode("#",$listaqtd);
   foreach($resultadoqtdteste as $ch=>$vl){
      $array[$i][$ch] = $vl;
      sort($array[$i]);
   }
   
 
$i++;
}
  foreach($array as $ch=>$valor){
     echo $valor[$ch][0]."<br>";   
   } 

Anderson.... ainda não testei pq estou confuso em como criar um array teste para rodar no foreach... mas tenta assim.. e vamo ver no que dá

Compartilhar este post


Link para o post
Compartilhar em outros sites
while(...){
  [...]
 
   $listaqtd = $escrever['proposta_valorunitario'];
   $resultadoqtdteste = explode("#",$listaqtd);
   foreach($resultadoqtdteste as $ch=>$vl){
      $array[$i][$ch] = $vl;
      sort($array[$i]);
   }
   
 
$i++;
}
  foreach($array as $ch=>$valor){
     echo $valor[$ch][0]."<br>";   
   } 

Anderson.... ainda não testei pq estou confuso em como criar um array teste para rodar no foreach... mas tenta assim.. e vamo ver no que dá

 

Segue o link para visualizar online.

 

http://servidorinformatica.com.br/compras/login/teste.php

 

Não está filtrando corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte....

 

 

Debuga o array...

 

 

comenta o foreach e poe isso aqui..

echo "<pre>";
var_dump($array);
echo "</pre>";

E poe o resultado aqui... vamos analisá-lo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte....

 

 

Debuga o array...

 

 

comenta o foreach e poe isso aqui..

echo "<pre>";
var_dump($array);
echo "</pre>";

E poe o resultado aqui... vamos analisá-lo

Vamos lá:

$listaqtd = $escrever['proposta_valorunitario'];
$resultadoqtdteste = explode("#",$listaqtd);
foreach($resultadoqtdteste as $ch=>$vl){
$array[$i][$ch] = $vl;
sort($array[$i]);
echo "<pre>";
var_dump($array);
echo "</pre>";
}
$i++;
}
//foreach($array as $ch=>$valor){
// echo $valor[$ch][0]."<br>";
// }
Resultado;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok.. se eh para exibir o menor valor... vamos usar o asort();

 

http://php.net/manual/pt_BR/array.sorting.php <<< Manual

   $listaqtd = $escrever['proposta_valorunitario'];
   $resultadoqtdteste = explode("#",$listaqtd);
   foreach($resultadoqtdteste as $ch=>$vl){
      $array[$i][$ch] = $vl;
   }
   
   asort($array[$i]);

$i++;
}
  foreach($array as $ch=>$valor){
     echo $valor[0]."<br>";   
   }

Tirei o ordenamento de dentro do foreach... mas fui eu mesmo quem pus.. foi mals...

 

E exibi a primeira posição do array... eu tinha erra ai tb...,

 

 

Vamos ver agora

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok.. se eh para exibir o menor valor... vamos usar o asort();

 

http://php.net/manual/pt_BR/array.sorting.php <<< Manual

   $listaqtd = $escrever['proposta_valorunitario'];
   $resultadoqtdteste = explode("#",$listaqtd);
   foreach($resultadoqtdteste as $ch=>$vl){
      $array[$i][$ch] = $vl;
   }
   
   asort($array[$i]);

$i++;
}
  foreach($array as $ch=>$valor){
     echo $valor[0]."<br>";   
   }

Tirei o ordenamento de dentro do foreach... mas fui eu mesmo quem pus.. foi mals...

 

E exibi a primeira posição do array... eu tinha erra ai tb...,

 

 

Vamos ver agora

Ainda não está ordenando conforme a imagem.

 

http://servidorinformatica.com.br/compras/login/teste.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha... ele tá certo... da perspectiva do codigo... porque se vc olhar bem...

 

 

id_tabela | Valores

 

54 | 4.60#6.00#10.50#1.50#10.00#2.68

 

[...]

 

 

Quem eh o menor valor de 54 ? Eh 1.50... e ele tá retornando isso... nao eh naum?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha... ele tá certo... da perspectiva do codigo... porque se você olhar bem...

 

 

id_tabela | Valores

 

54 | 4.60#6.00#10.50#1.50#10.00#2.68

 

[...]

 

 

Quem eh o menor valor de 54 ? Eh 1.50... e ele tá retornando isso... nao eh naum?

Na verdade ele estasomente mostrando a coluna [0]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao Cara... ta certo.... eu acho que vc deve esta querendo outro resultado... mas o produto do codigo ta correto...

 

 

id_tabela | Valores

54 | 4.60#6.00#10.50#1.50#10.00#2.68

Observe os menores valores de registro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa não é para ordenar a linha. Mas sim como coluna igual da imagem:

 

http://servidorinformatica.com.br/compras/login/teste.php

Então na lógica vai ser assim:

 

encontrou 6 linhas então:

na 1° linha que é a 54 eu tenho 6 valores:

na 2° linha que é a 58 eu tenho 6 valores:

na 3° linha que é a 65 eu tenho 6 valores:

na 4° linha que é a 73 eu tenho 6 valores:

na 5° linha que é a 53 eu tenho 6 valores:

na 6° linha que é a 53 eu tenho 6 valores:

 

Até ai beleza. Agora eu preciso fazer o seguinte:

Pegar o primeiro valor da linha 1,2,3,4,5,6 e comparar qual o menor.

Pegar o segundo valor da linha 1,2,3,4,5,6 e comparar qual o menor.

Pegar o terceiro valor da linha 1,2,3,4,5,6 e comparar qual o menor.

Pegar o quarto valor da linha 1,2,3,4,5,6 e comparar qual o menor.

Pegar o quinto valor da linha 1,2,3,4,5,6 e comparar qual o menor.

Pegar o sexto valor da linha 1,2,3,4,5,6 e comparar qual o menor.

 

O resultado seria igual o da imagem.

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 lendadomato
      Pessoal,
       
      tenho uma aplicação que funcionava há muitos anos sem problemas, mas percebi que o meu servidor atualizou o PHP 5
      para PHP 7 sem me comunicar. Tenho uma função que contém alguns arrays e essa função parou de funcionar após a atualização.
      Gostaria saber se esse conjunto de arrays funciona dessa forma no PHP 7:
      $msg = array ( 'title' => 'Novo pedido', 'body' => $endereco, 'sound' => 'default' ); $fields = array ( 'to' => $tokenempresa, 'notification' => $msg ); $headers = array ( 'Authorization: key=' . API_ACCESS_KEY, 'Content-Type: application/json' ); Não entendo muito de PHP e não sei se esse código está correto.
       
    • Por gersonab
      há tempos utilizo para cadastrar data no BD a instrução :
      implode('-',array_reverse(explode('/',$data)))
      com isso no input posso colocar 09/02/2019 e no banco de dados grava 2019-02-09 , até ai sem problemas, porém ao atualizar um sistema para pdo, estou com problema no insert dinâmico, onde posso fazer 1 ou mais inserts, da forma abaixo cadastro quantos eu quiser :
      $sql = "INSERT INTO cantos ( id_t, id_c, data, ca, cant, po, des) VALUES (:id_t, :id_c, :data, :ca, :cant, :po, :des)";              $stmt = $pdo->prepare($sql);             foreach($_POST['idp'] as $indice => $valor) {             $stmt->bindParam(':id_t', $_POST['id_tor'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':id_c', $_POST['idp'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':data', $_POST['data'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':ca', $_POST["ca"][$indice], PDO::PARAM_STR);             $stmt->bindParam(':cant', $_POST['cant'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':po', $_POST['po'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':des', $_POST['des'][$indice], PDO::PARAM_STR);                              if ($stmt->execute()){                     echo "Cadastrado com sucesso.";             }
      no entento a data vai no formato do input 09/02/2019.
      caso utilize :
      $stmt->bindParam(':data', implode('-',array_reverse(explode('/',$_POST['data'][$indice]))), PDO::PARAM_STR);
      tenho o erro Strict standards: "Only variables should be passed by reference in "que significa "Apenas as variáveis podem ser passadas por referência"
      qual a melhor forma de se fazer neste caso ?
    • Por WictorP
      Olá, tudo bem? Eu espero que esteja!
       
      Estou com um pequeno problema em uma medida de segurança que estou fazendo, acho que vocês podem me ajudar.
       
      Estou tentando criar uma defesa global de todos os valores obtidos através de formulários, ao qual o usuário irá preencher, ou seja, uma pequena defesa contra SQLInjection.
      Sei que isto está longe de resolver o problema, mas acho que é só o que precisa para um projeto de pequeno porte.
      Para esta segurança eu pego tudo que vem por $_POST e passo na função addslashes e verifico se é uma string. Este método funciona, porém tem um defeito.
      Eu também trabalho com envio de Arrays no formulário, e para que a função addslashes funcione, todas as variáveis passadas pelo $_POST deve ser uma string (basicamente todo conteúdo não array de um formulário pode ser tratado como string, até as que contém só números).
       
      Tentei fazer uma verificação nesta função, que caso seja array, ele não faz essa adesão do addslashes e passa o array cru que será tratado mais pra frente na página que o requisitar, porém, não consigo fazer esta verificação com o is_array(), o IF passa como se fosse outra coisa e trata como se fosse string normal.
       
      Segue o código:

              $formulario = $_POST;         foreach($formulario AS $key => $valor) {             if(is_array($_POST[$key])) {                 $_POST[$key] = $_POST[$key];             }else {                 $_POST[$key] = filter_var(addslashes($_POST[$key]), FILTER_SANITIZE_STRING);             }         }
       
      Espero que possam me dar uma luz referente à isto.
      Grato, Wictor Pamplona.
    • Por maruanbredoff
      Boa tarde pessoal,
      Estou com quebrando a cabeça com uma situação no meu sistema.
      No sistema eu tenho uma tabela tratamento, clientes, dentista e procedimento. 
      Dentro do sistema tenho uma tela onde a pessoa vai cadastrar o tratamento para o paciente e nessa tela a pessoa escolhe quais os procedimento, e qual o dentista que vai realizar.
      O campo idprocedimento é um array pois o mesmo tratamento pode ter varios procedimentos.
       
      O meu problema está em apresentar esses dados do array na tabela. o Select é esse a seguir
       
      SELECT t.idtratamento,t.idprocedimento,c.idcliente,c.nome as cliente,d.iddentista,d.nome as dentista,p.descricao as procedimento,t.idtratamento,t.datainicio,t.obs,t.status_tratamento
      FROM tratamento t
      INNER JOIN clientes c ON t.idcliente = c.idcliente
      INNER JOIN dentista d ON d.iddentista = t.iddentista
      INNER JOIN procedimento p ON p.idprocedimento = t.idprocedimento
      where t.idcliente = 1 and p.idprocedimento in (t.idprocedimento)
       
      Com esse select o retorno é o seguinte:
      idtratamento idprocedimento cliente iddentista dentista procedimento   76 260 Paciente teste 1 Dentista Teste Aparelho extra-bucal 77 31,5,6 Paciente teste 1 Dentista Teste Alveoloplastia   
      Como podem ver, o campo idprocedimento está caindo junto no array, eu queria separar e em vez de 1 linha na tabela aparecesse 3 linhas com esses procedimentos separados. Alguem pode me ajudar?
    • Por sheepziiin
      Boa tarde colegas !
      Estou quebrando a cabeça com um job para tratamento de logradouros. Segue o raciocínio:  
      Tenho uma lista com todos os endereços do estado de São Paulo, onde os mesmos são extraídos da seguinte forma:
       
      Exemplo:
      AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A AL-ANAPURUS/EDI:BOULEVARD/BLC:A-777-AP - Apartamento: 131 AL-ARAPANES/EDI:CDOE,6-5ºANDAR-309-AP - Apartamento: 42 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 102 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 42 AL-ARAPANES/EDI:PARC BRUMENADI-982-AP - Apartamento: 191 AL-BARROS/EDI:PERVAL-186-AP - Apartamento: 1601 AL-BARROS/EDI:PERVAL-186-BL - Blocos: B AP - Apartamento: 1302 AL-CAETANO,S/CDM:ED. GIARDINO_CDOE_1_ANDAR_11 A 13-165-AP - Apartamento: 63 AL-CAETANO,S/EDI:ESPLENDOR-1234-AP - Apartamento: 71 AL-CAETANO,S/EDI:MAGENTA I_CDOE_1_ANDAR_7 A 10-2575-AP - Apartamento: 94 AL-CALCUTA-195-AP - Apartamento: 02 AL-CAMPESTRE-728-CS - Casa: 1 AL-CASA BRANCA/CDM:BRISTOL-851-CJ - Conjunto: 11 AN - Andar: 01 AL-CASA BRANCA/CDM:SAINT SIMON-667-AP - Apartamento: 11
      Notem que os casos "não tem um padrão" (até tem por tipo de residencia). Utilizei inúmeras postagens aqui do fórum e consegui solucionar os casos para residencias (padrão TIPO_LOG;LOG;COMPL;NUM), no entanto as formulas e soluções aqui indicadas por vocês "param" na primeira sequencia numérica, entretanto para a maioria dos casos, o texto continua com letras, números e caracteres.
       
      Segue o padrão final que preciso chegar.
      Exemplo: AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A
      Resultado Tratado: AFONSO SCHMIDT 555
       
      Desde de já muito obrigado pelos retornos que certamente virão.
×

Informação importante

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