gilvaju 0 Denunciar post Postado Março 9, 2011 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
Fabio Pratta 14 Denunciar post Postado Março 9, 2011 tentou usar: <?php for ($i=0; $i < count($conexao_municipios->dados); $i++) { echo $conexao_municipios->dados["MUN_NOME"][$i]; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Março 9, 2011 <?php while($data = $conexao_municipios->dados){ echo $data["MUN_NOME"]; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
gilvaju 0 Denunciar post Postado Março 9, 2011 <?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
gremio10 14 Denunciar post Postado Março 9, 2011 ´não funcionou assim com o while ? o que deu? Compartilhar este post Link para o post Compartilhar em outros sites
gilvaju 0 Denunciar post Postado Março 9, 2011 ´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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 $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
gilvaju 0 Denunciar post Postado Março 9, 2011 <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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 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
gilvaju 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 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
gilvaju 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 não , o $query -> fetch_assoc( sem nada no parenteses ) while ($resultado = $query->fetch_assoc()) { :ermm: Compartilhar este post Link para o post Compartilhar em outros sites
gilvaju 0 Denunciar post Postado Março 9, 2011 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
Anderson de Souza 0 Denunciar post Postado Março 9, 2011 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
gilvaju 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 De Nada , Qualquer Duvida , Estamos Ai ! , Abraços ;) Compartilhar este post Link para o post Compartilhar em outros sites
gilvaju 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 10, 2011 Certo , mais não faça uma classe so pra 1 funçao não .. use apenas um function normal :joia: Compartilhar este post Link para o post Compartilhar em outros sites
gilvaju 0 Denunciar post Postado Março 11, 2011 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