Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PeeWee

Fazer busca em um array

Recommended Posts

Preciso fazer uma busca de modo que me traga o registro que nao consta na tabela, parece estranho e é, pois na verdade foi meio que uma gambiarra que coloquei no código pois preciso que me exiba o profissional que nao está ocupado no momento, acho que fui claro.

 

NESTE TRECHO FAÇO O SELECT DE MODO QUE ME TRAGA OS PROFISSIONAIS QUE JA ESTAO AGENDADOS

$text = mysqli_query($conn, "SELECT a.id_prof_escolhido, u.niveis_acesso_id FROM agendamento AS a JOIN usuarios AS u ON u.id = a.id_prof_escolhido WHERE dia = '$diaAgendado' AND hora_inicio = '$hora1' GROUP BY a.id_prof_escolhido ");
$text2 = mysqli_fetch_array($text);

 

AQUI É O MESMO CÓDIGO SÓ QUE ME TRAZ DE FORMA DECRESCENTE, fiz dessa forma pois só com o código acima ele só enxergava o primeiro registro

 $gambiarra = mysqli_query($conn, "SELECT a.id_prof_escolhido, u.niveis_acesso_id FROM agendamento AS a JOIN usuarios AS u ON u.id = a.id_prof_escolhido WHERE dia = '$diaAgendado' AND hora_inicio = '$hora1' GROUP BY a.id_prof_escolhido DESC ");

 $gambiarra2 = mysqli_fetch_array($gambiarra);

 

O PROBLEMA AGORA É QUE ELE SÓ ENXERGA O PRIMEIRO E O ULTIMO, E NAO OS INTERMEDIARIOS

 

$nome = mysqli_query($conn, "SELECT id, nome, niveis_acesso_id, foto FROM usuarios WHERE id NOT IN('$text2[0]', '$gambiarra2[0]') AND niveis_acesso_id = '$escolhido' ");

 

AQUI FAÇO O SELECT DE MODO QUE NAO ME TRAGA QUEM JA ESTÁ SELECIONADO ACIMA, COM BASE EM UMA OUTRA TABELA.

 

GOSTARIA QUE ESTE NOT IN ME TROUXESSE QUEM ESTÁ DISPONIVEL, MAS QUE NAO CONSTE DOS SELECTS ANTERIORES, NAO SEI SE CONSEGUI SER CLARO. 

 

ESPERO UMA SUGESTAO DOS COLÉGAS POIS TALVEZ SEJA ALGO SIMPLES MAS NAO SEI O QUE FAZER, PENSEI EM BETWEEN MAS TBÉM NAO VAI DAR CERTO. BOM.. ESPERO SUGESTOES.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente  assim:
$text = mysqli_query($conn, "SELECT a.id_prof_escolhido, u.niveis_acesso_id FROM agendamento AS a JOIN usuarios AS u ON u.id = a.id_prof_escolhido WHERE dia = '$diaAgendado' AND hora_inicio = '$hora1' GROUP BY a.id_prof_escolhido ");


$dados = mysqli_fetch_all($text,MYSQLI_ASSOC);

echo '<pre>';
print_r($dados);
echo '</pre>';
die();

 

E diga  o que aparece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei um LIMIT 10 OFFSET 1 e deu certo, talvez apresente outros problemas irei popular o BD e fazer mais uns testes, se nao der certo vou tentar a solução que você sugeriu, em breve informou o que ocorreu. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom testei com OFFSET deu problema, o que eu preciso é, tenho duas tabelas, a usuarios e a agendamentos, preciso exibir os usuarios que NÃO estão agendados. Tentei o seu código e simplesmente sumiu tudo, inclusive testei isoladamente e a página ficou em branco, pode dar mais alguma sugestao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
No início do seu arquivo .php, ative a exibição de erros assim:

<?php
    ini_set("display_errors", 1);
    error_reporting(E_ALL);

 

Execute novamente o script com o fetch_all e veja se aparece alguma mensagem de erro no browser

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste isoladamente e exibiu o erro :   Fatal error: Call to undefined function mysqli_fetch_all() in /home/storage/f/7a/43/.....

 

 

excluir.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Segundo o manual, pra usar o fetch_all do mysqli você precisa usar no mínimo o php 5.3:
http://php.net/manual/pt_BR/mysqli-result.fetch-all.php

mysqli_fetch_all

(PHP 5 >= 5.3.0, PHP 7)

mysqli_result::fetch_all -- mysqli_fetch_allFetches all result rows as an associative array, a numeric array, or both

Se não puder usar uma versão mais nova do php, faça o procedimento de iteração usando um while:


while ($row mysqli_fetch_assoc($text)) {
       
$dados[] = $row;
}

echo '<pre>';
print_r($dados);
echo '</pre>';
die();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste pegando apenas uma tabela e deu certo, acho que por ser um JOIN nao é possivel fazer.  Ficou mostrando vazio. 

excluir2.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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