Ir para conteúdo
Fórum Script Brasil
  • 0

Retornando mais de uma linha do Banco de Dados utilizando função!


Hoopkins

Pergunta

Olá, minha problema é o seguitne:

Tenho uma função:

function funcao($cidade) {
global $bd;
$cCidade = 'SELECT * FROM cidades WHERE cidade_nome = "' .$cidade . '" ORDER BY data_biblioteca DESC LIMIT 4';
$qCidade = $bd->query($cCidade) or die($bd->error);
$lCidade = $qCidade->fetch_object();

$cidade_nome = $lCidade->cidade_nome;
$cidade_hab = $lCidade->ciadade_hab;

$html = "<p>$cidade_nome</p>";
$html .= "<p>$cidade_hab Habitantes</p>";

return $html;    
}
Chamo a função desta maneria:
echo funcao('Curitiba');
Obtenho o seguinte resultado:
<p>Curitiba</p>
<p>10 Habitantes</p>

Bom, tudo certo é exatamente isso que eu quero, exceto que gostaria de visualizar os últimos quatro registros que tenham cidade_nome = São Paulo, e não apenas 1.

Como isso pode ser feito utilizando função? É possível?

Imagino que tenha que ser feito com um foreach() fora da função, porém precisa de alguma modificação na função que eu não estou sabendo fazer.

Editado por Hoopkins
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Das duas uma ... o reperete a função ou faz o código repetir as instruções SQL ...

1- Repetir a função ....

echo funcao('Curitiba');
echo funcao('São Paulo');
echo funcao('Amazonas');
2- Para usar a função de forma multipla ... mande um array e depois lista ...
function funcao($cidade) {
 global $bd;
 $html = "";
 foreach ($cidade as $nome) {
  $qCidade = $bd->query("SELECT * FROM cidades WHERE cidade_nome='" .$cidade . "' ORDER BY data_biblioteca DESC LIMIT 4;") or die($bd->error);
  $lCidade = $qCidade->fetch_object();
  $html .= "<p>" . $lCidade->cidade_nome . "</p>";
  $html .= "<p>" . $lCidade->ciadade_hab . "</p>";
 }
 return $html;    
}

echo funcao(array('Curitiba', 'São Paulo', 'Amazonas'));
echo funcao(array('Curitiba'));

Link para o comentário
Compartilhar em outros sites

  • 0

SK15 tentei o que você disse porém ainda não obtive sucesso.

A solução que busco é a segunda que você apresentou, no entanto ainda sim exibe apenas um resultado:

No código que você escreveu eu alterei a variável $cidade da query para $nome que é a que está no foreach, o código funciona, mas só exibe um resultado ainda:

function funcao($cidade) {
global $bd;
$html = "";
foreach ($cidade as $nome) {
  $qCidade = $bd->query("SELECT * FROM cidades WHERE cidade_nome='" .$nome. "' ORDER BY data_biblioteca DESC LIMIT 4;") or die($bd->error);
  $lCidade = $qCidade->fetch_object();
  $html .= "<p>" . $lCidade->cidade_nome . "</p>";
  $html .= "<p>" . $lCidade->ciadade_hab . "</p>";
}
return $html;    
}

echo funcao(array('Curitiba'));

Gostaria que exibesse os 4 últimos registros de Curitiba do banco de dados por exemplo.

Editado por Hoopkins
Link para o comentário
Compartilhar em outros sites

  • 0
SK15 tentei o que você disse porém ainda não obtive sucesso.

A solução que busco é a segunda que você apresentou, no entanto ainda sim exibe apenas um resultado:

No código que você escreveu eu alterei a variável $cidade da query para $nome que é a que está no foreach, o código funciona, mas só exibe um resultado ainda:

function funcao($cidade) {
global $bd;
$html = "";
foreach ($cidade as $nome) {
  $qCidade = $bd->query("SELECT * FROM cidades WHERE cidade_nome='" .$nome. "' ORDER BY data_biblioteca DESC LIMIT 4;") or die($bd->error);
  $lCidade = $qCidade->fetch_object();
  $html .= "<p>" . $lCidade->cidade_nome . "</p>";
  $html .= "<p>" . $lCidade->ciadade_hab . "</p>";
}
return $html;    
}

echo funcao(array('Curitiba'));

Gostaria que exibesse os 4 últimos registros de Curitiba do banco de dados por exemplo.

sendo assim vejamos se é isso mesmo que entendir fiz algumas modificações, essa função não retornar dados, os mesmos já serão imprimidos de acordo com o sql retornará os ultimos 4 registros com a cidade

não testei a intenção é imprimir

curitiba

registro1

registro2

registro3

registro4

qualquer erro post ai até mais

function funcao($cidade) {

global $bd;

$cCidade = 'SELECT * FROM cidades WHERE cidade_nome = "' .$cidade . '" ORDER BY data_biblioteca DESC LIMIT 4';

$qCidade = $bd->query($cCidade) or die($bd->error);

$N=0;

while($lCidade = $qCidade->fetch_object()){

if ($N==0){

$cidade_nome=$lCidade->cidade_nome;

echo "<p>$cidade_nome</p>";

}

$cidade_hab = $lCidade->ciadade_hab;

echo "<p>$cidade_hab Habitantes</p>";

$N++;

}

//não retornar nenhum dado já será excutado

}

Editado por rickayron
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pessoal que me ajudou, resolvi colocando um while($linha = $query->fetch_object()) dentro da função, dentro deste while as variáveis que formavam o $html eu coloquei em forma de array $html[] e para recuperar os resultados na página utilizei foreach.

:D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...