Ir para conteúdo

POWERED BY:

Arquivado

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

gilvaju

[Resolvido] While para dados de consulta SQL

Recommended Posts

Bom dia amigos, tenho os seguintes arquivos com seus respectivos códigos.

Não estou conseguindo de forma alguma criar um laço com os dados, só consigo a primeira linha. Na tabela existem 6 registros.

 

<div class="two-thirds-block block">
   <h3 class="title">Listagem de Municípios</h3>

   <?php

   include "componentes/conexao/conexao.php";

   $conexao_municipios = new conexao();
   $sql = "SELECT MUN_NOME FROM TB_MUNICIPIOS";
   $conexao_municipios->executa1($sql);

   ?>

   <table>
       <tr>
           <td>Município</td>
       </tr>

       <?php

       for ($i=0; $i < count($conexao_municipios->dados); $i++) {
           echo "
               <tr>
                   <td>".$conexao_municipios->dados["MUN_NOME"]."</td>
               </tr>";
       }

       ?>

   </table>

</div>

 

<?php

class conexao {

   // Define configuração de conexão com o banco de dados
   public $servidor = "localhost";
   public $usuario = "cacex";
   public $senha = "c4c3x";
   public $bd = "teste";

   // Conexão com o banco de dados
   public function conecta () {
       $this->conn = mysqli_connect($this->servidor, $this->usuario, $this->senha, $this->bd);
   }

   // Executa SQL no banco e retorna um Array associativo e o número de linhas
   public function executa ($sql) {

       // Executa conexão com o banco de dados
       $this->conecta();
       $this->resultado = mysqli_query($this->conn, $sql) or die("Erro no banco de dados!");
       // Array associativo que recebe dados do usuário
       $this->dados = mysqli_fetch_array($this->resultado, MYSQLI_NUM);
       $this->linhas = mysqli_num_rows($this->resultado);
   }

   public function executa1 ($sql) {

       // Executa conexão com o banco de dados
       $this->conecta();
       $this->resultado = mysqli_query($this->conn, $sql) or die("Erro no banco de dados!");
       // Array associativo que recebe dados do usuário
       $this->dados = mysqli_fetch_array($this->resultado, MYSQLI_BOTH);
       $this->linhas = mysqli_num_rows($this->resultado);
   }

}

?>

 

Não sei mais onde procurar o erro,

Gilvan Jr.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

while($data = $conexao_municipios->dados){
echo $data["MUN_NOME"];
}

?>

 

 

Valeu pela ajuda cara,

 

Mais não resolveu dessa forma, deu até pau no navegador

 

tentou usar:

 

 

<?php

for ($i=0; $i < count($conexao_municipios->dados); $i++) {

echo $conexao_municipios->dados["MUN_NOME"][$i];

}

?>

 

Cara, também não funciona, ele imprimi duas linhas:

 

n

a

 

agradeço a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

´não funcionou assim com o while ?

o que deu?

 

Cara, pirou o navegador. kkk

 

Mais o que eu fiz, fiz a execução sem usar objeto e consegui. Então segui a lógica do procedimento e apliquei no do oobjeto:

 

public function executa1 ($sql) {

       // Executa conexão com o banco de dados
       $this->conecta();
       $this->resultado = mysqli_query($this->conn, $sql) or die("Erro no banco de dados!");
       // Array associativo que recebe dados do usuário
       // $this->dados = mysqli_fetch_array($this->resultado, MYSQLI_BOTH);
       // $this->linhas = mysqli_num_rows($this->resultado);
   }

 

while ($resultado = mysqli_fetch_array($conexao_municipios->resultado, MYSQLI_BOTH)) {
           echo "
           <tr>
               <td>".$resultado["MUN_CODIGO"]."</td>
               <td>".$resultado["MUN_NOME"]."</td>
           </tr>";
       }

 

Assim ele escreve os 6 registros normalmente, o único problema é que ele só resgata o nome e dá o seguinte erro para o código:

 

Notice: Undefined index: MUN_CODIGO in D:\xampp\htdocs\desenvolimento\clientes\cacex\www\layout\arquivos\body\content\two-thirds\municipios\default.php on line 38

 

Imprimindo na tela apenas o nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$conexao_municipios->dados //?? oque e isso ? 

 

tente assim .. faça a conexção e execute o script

 

<?php

   include "componentes/conexao/conexao.php";

   $conexao_municipios = new conexao();
   $SQL = new mysqli("localhost","root","123","banco de dados");
   $municipios = $SQL->query( "SELECT `MUN_NOME` FROM `TB_MUNICIPIOS`" );

   ?>

   <table>
       <tr>
           <td>Município</td>
       </tr>

       <?php

       while($dados = $municipios->fetch_assoc())
       {
           echo '<tr>
                   <td>'.$dados['MUN_NOME'].'</td>
               </tr>';
       }

       ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

<div class="two-thirds-block block">
   <h3 class="title">Listagem de Municípios</h3>

   <?php

   include "componentes/conexao/conexao.php";
   $conexao_municipios = new conexao();
   $sql = "SELECT * FROM TB_MUNICIPIOS";
   $conexao_municipios->executa1($sql);

   ?>

   <table>
       <tr>
           <td>Município</td>
       </tr>

       <?php

       while ($resultado = mysqli_fetch_array($conexao_municipios->resultado, MYSQLI_BOTH)) {
           echo "
           <tr>
               <td>".$resultado["MUN_CODIGO"]."</td>
               <td>".$resultado["MUN_NOME"]."</td>
           </tr>";
       }

       ?>

   </table>

</div>

 

<?php

class conexao {

   // Define configuração de conexão com o banco de dados
   public $servidor = "localhost";
   public $usuario = "cacex";
   public $senha = "c4c3x";
   public $bd = "teste";

   // Conexão com o banco de dados
   public function conecta () {
       $this->conn = mysqli_connect($this->servidor, $this->usuario, $this->senha, $this->bd);
   }

   // Executa SQL no banco e retorna um Array associativo e o número de linhas
   public function executa ($sql) {

       // Executa conexão com o banco de dados
       $this->conecta();
       $this->resultado = mysqli_query($this->conn, $sql) or die("Erro no banco de dados!");
       // Array associativo que recebe dados do usuário
       $this->dados = mysqli_fetch_array($this->resultado, MYSQLI_NUM);
       $this->linhas = mysqli_num_rows($this->resultado);
   }

   public function executa1 ($sql) {

       // Executa conexão com o banco de dados
       $this->conecta();
       $this->resultado = mysqli_query($this->conn, $sql) or die("Erro no banco de dados!");
       // Array associativo que recebe dados do usuário
       // $this->dados = mysqli_fetch_array($this->resultado, MYSQLI_BOTH);
       // $this->linhas = mysqli_num_rows($this->resultado);
   }

}

?>

 

Valeu pela ajuda galera,

E assim ficou meu código, o que acham?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara , você tem uma classe orientada a objetos ..

Eu sinceramente vou falar que ela ta porca , o mysqli já e orientado a objetos , não sei porque orientar novamente :lol:

 

totalmente desnecessaria e robando processamento atoa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara , você tem uma classe orientada a objetos ..

Eu sinceramente vou falar que ela ta porca , o mysqli já e orientado a objetos , não sei porque orientar novamente :lol:

 

totalmente desnecessaria e robando processamento atoa

 

kkkk, sem pro cara, não precisaria dessa minha classe n então?

 

usaria então subistituindo os outros

 

$mysqli = new mysqli();

$query = $mysqli->query($sql);

$resultado = $mysqli->fetch_array($mysqli, $query)

 

agradeço pela sinceridade

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim .. e bem melhor e mais estavel

o fetch array , você não presisa indicar a conexção e sim a query \:

 

 

Dica:

 

$mysqli->fetch_array = retorna Índices Numericos & Índicies Com String ( Nome de Campo )

 

ele so e necessario usar quando você tem um numero de campos muito grande e pra acelerar

o processo você faz LOOP , caso contrario

 

eu usaria

 

$mysqli->fetch_assoc() 

 

Não Desperdiça Memoria criando Arrays com Chaves Numericas , ele so retorna em String

o nome de campo por exemplo .. ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo do tipo:

 

<div class="two-thirds-block block">
   <h3 class="title">Listagem de Municípios</h3>

   <?php

//    include "componentes/conexao/conexao.php";
//    $conexao_municipios = new conexao();
//    $sql = "SELECT * FROM TB_MUNICIPIOS";
//    $conexao_municipios->executaq($sql);

   $mysqli = new mysqli("localhost", "cacex", "c4c3x", "teste");
   $sql = "SELECT * FROM TB_MUNICIPIOS";
   $query = $mysqli->query($sql);

   ?>

   <table>
       <tr>
           <td>Município</td>
       </tr>

       <?php

       while ($resultado = $mysqli->fetch_assoc($query))) {
           echo "
           <tr>
               <td>".$resultado["MUN_CODIGO"]."</td>
               <td>".$resultado["MUN_NOME"]."</td>
           </tr>";
       }

       ?>

   </table>

</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é muito massa programar orientado a objetos, espero aprender a programar um dia dessa forma.

 

olha como ficou:

 

<div class="two-thirds-block block">
   <h3 class="title">Listagem de Municípios</h3>

   <?php

   include "componentes/conexao/conexao.php";

   $mysqli = new mysqli($servidor, $usuario, $senha, $bd);
   $sql = "SELECT * FROM TB_MUNICIPIOS";
   $resultado = $mysqli->query($sql);

   ?>

   <table>
       <tr>
           <td>Município</td>
       </tr>

       <?php

       while ($dados = $resultado->fetch_assoc()) {
           echo "
           <tr>
               <td>".$dados["MUN_CODIGO"]."</td>
               <td>".$dados["MUN_NOME"]."</td>
           </tr>";
       }

       ?>

   </table>
</div>

 

Arquivo conexao.php

 

<?php

   // Define configuração de conexão com o banco de dados
   $servidor = "localhost";
   $usuario = "cacex";
   $senha = "c4c3x";
   $bd = "teste";

?>

 

Está imprimindo isto:

 

Município

1 natal

2 recife

3 jo�o pessoa

4 mossor�

5 caic�

6 curriais novos

 

Tá melhor agora cara?

Qual é o problema com os acentos?

Agradeço a ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar um exmplos simples de como puxar do banco...

 

//exemplo de conexão
require(conexao.php);


$consulta = "SELECT * FROM fulano ORDER by fulano_nome ASC";
$resultado = mysql_query($consulta,$conexao);
$linha = mysql_fetch_array($resultado);

do
{

print $linha['fulano_nome'];

} while($linha=mysql_fetch_array($resultado));

 

Pronto ele Imprime de Boa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar um exmplos simples de como puxar do banco...

 

//exemplo de conexão
require(conexao.php);


$consulta = "SELECT * FROM fulano ORDER by fulano_nome ASC";
$resultado = mysql_query($consulta,$conexao);
$linha = mysql_fetch_array($resultado);

do
{

print $linha['fulano_nome'];

} while($linha=mysql_fetch_array($resultado));

 

Pronto ele Imprime de Boa

 

Valeu pela ajuda cara, já consegui fazer isto dessa forma, estava tentando orientado a objetos

 

Refinando saída de dados:

 

<div class="two-thirds-block block">
   <h3 class="title">Listagem de Municípios</h3>

   <?php

   include "componentes/conexao/conexao.php";

   $mysqli = new mysqli($servidor, $usuario, $senha, $bd);
   $sql = "SELECT * FROM TB_MUNICIPIOS";
   $resultado = $mysqli->query($sql);

   ?>

   <table>
       <thead>
       <tr>
           <th>Código</th>
           <th>Município</th>
       </tr>
       </thead>

       <?php

       $i = 1;

       while ($dados = $resultado->fetch_assoc()) {

           $municipio_codigo = strtolower($dados["MUN_CODIGO"]);
           $municipio_codigo = ucwords($municipio_codigo);

           $municipio_nome = strtolower($dados["MUN_NOME"]);
           $municipio_nome = ucwords($municipio_nome);

           if ($i % 2 == 0) {
               $classe = "class='odd'";
           } else {
               $classe = "";
           }

           echo "
           <tr $classe>
               <td>$municipio_codigo</td>
               <td>$municipio_nome</td>
           </tr>";

           $i++;
       }

       ?>

   </table>

</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

De Nada , Qualquer Duvida , Estamos Ai ! , Abraços ;)

 

Cara, olha isso aqui:

 

<?php

class formatacao {

   public function caixaAlta ($texto) {
       $texto = strtolower($texto);
       $texto = ucwords($texto);
       return $texto;
   }

}

?>

 

<div class="two-thirds-block block">
   <h3 class="title">Listagem de Municípios</h3>

   <?php

   include "componentes/conexao/conexao.php";

   $mysqli = new mysqli($servidor, $usuario, $senha, $bd);
   $sql = "SELECT * FROM TB_MUNICIPIOS";
   $resultado = $mysqli->query($sql);

   include "componentes/formatacao/textos.php";
   $dados_caixaAlta = new formatacao();

   ?>

   <table>
       <thead>
       <tr>
           <th>Código</th>
           <th>Município</th>
       </tr>
       </thead>

       <?php

       $i = 1;

       while ($dados = $resultado->fetch_assoc()) {

           $municipio_codigo = $dados["MUN_CODIGO"];
           $municipio_nome = $dados_caixaAlta->caixaAlta($dados["MUN_NOME"]);

           if ($i % 2 == 0) {
               $classe = "class='odd'";
           } else {
               $classe = "";
           }

           echo "
           <tr $classe>
               <td>$municipio_codigo</td>
               <td>$municipio_nome</td>
           </tr>";

           $i++;
       }

       ?>

   </table>
</div>

 

Como está o código agora? está melhor?

A idéia da classe FORMATACAO está correta?

Quanto ao código, é por este caminho ou estou fazendo algo errado ainda?

Grato,

Gilvan Jr.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo , mais não faça uma classe so pra 1 funçao não ..

 

use apenas um function normal :joia:

 

Valeu cara, agradeço a ajuda e as dicas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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