Ir para conteúdo

POWERED BY:

Arquivado

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

AprendizPHP

[Resolvido] Warning: mysql_fetch_array() expects parameter 1 to b

Recommended Posts

Olá pessoal,

 

Estou fazendo um sistema em PHP OO, e surgiu uma dúvida.

 

Na minha index de cursos cadastrados tenho o seguinte código:

 

<?php

require_once 'config/config.php';
require_once 'classes/Curso.php';

$curso = new Curso();

$curso->getDados();
?>
<table width="50%" border="0" cellspacing="1">
<tr align="center" class="cabecalhoLista" >
	<td>Nivel</td>
	<td>Turno</td>
	<td>Status</td>
	<td>Nome</td>
	<td>Matricula</td>

</tr><?php

      while($l = mysql_fetch_array($re)) {

       $nens         = $l["nens"];
       $turn         = $l["turn"];
       $stvi         = $l["stvi"];
       $curs         = $l["curs"];
       $matricula    = $l["matricula"];

       echo "
           <tr>
                 <tr>
                   <td> $nens</td>
                   <td> $turn</td>
                   <td> $stvi</td>
                   <td> $curs</td>
                   <td> $matricula</td>

           </tr>\n";


}
?>
</table>

Na minha classe de curso tenho esse método:

 

        public function getDados(){
           $re = "SELECT nens_nome, turn_nome, stvi, curs, matricula
                  FROM vinculo_academico viac
                       JOIN nivel_ensino nens on (nens.nens_id = viac.nens_id)";
           mysql_query($re) or die (mysql_error());

       }

 

Porém da o erro, Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in.

Qual parametro falta passar?

Outra dúvida, para exibir os dados, uso o $this-> ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
// qual é o correto? nens ou nens_nome?
$nens = $l["nens"];
/ o mesmo se aplica ao turn, qual o correto?
$turn = $l["turn"];


$re = "SELECT nens_nome, turn_nome, stvi, curs, matricula
      FROM vinculo_academico viac
      JOIN nivel_ensino nens on (nens.nens_id = viac.nens_id)";

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto seria:

 

       public function getDados(){
           $re = "SELECT nens, turn, stvi, curs, matricula
                  FROM vinculo_academico viac
                       JOIN nivel_ensino nens on (nens.nens_id = viac.nens_id)";
           mysql_query($re) or die (mysql_error());

       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto seria:

 

       public function getDados(){
           $re = "SELECT nens, turn, stvi, curs, matricula
                  FROM vinculo_academico viac
                       JOIN nivel_ensino nens on (nens.nens_id = viac.nens_id)";
           mysql_query($re) or die (mysql_error());

       }

 

Ainda está retornando erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente fazer algumas alteraçoes no seu codigo, primeiro, na sua classe você deve retornar alguma coisa.

public function getDados(){
           $re = "SELECT nens_nome, turn_nome, stvi, curs, matricula
                  FROM vinculo_academico viac
                       JOIN nivel_ensino nens on (nens.nens_id = viac.nens_id)";
           return mysql_query($re) or die (mysql_error());

}

 

e na pagina você faz

<?php
require_once 'config/config.php';
require_once 'classes/Curso.php';

$curso = new Curso();

$result = $curso->getDados(); //atribui a chamada ao metodo a uma variavel
?>
<table width="50%" border="0" cellspacing="1">
       <tr align="center" class="cabecalhoLista" >
               <td>Nivel</td>
               <td>Turno</td>
               <td>Status</td>
               <td>Nome</td>
               <td>Matricula</td>

       </tr><?php

      while($l = mysql_fetch_array($result)) { //aqui você faz referencia a variavel criada que armazenou o mysql_query

       $nens         = $l["nens"];
       $turn         = $l["turn"];
       $stvi         = $l["stvi"];
       $curs         = $l["curs"];
       $matricula    = $l["matricula"];

       echo "
           <tr>
                 <tr>
                   <td> $nens</td>
                   <td> $turn</td>
                   <td> $stvi</td>
                   <td> $curs</td>
                   <td> $matricula</td>

           </tr>\n";


}
?>
</table>

 

tenta ai e posta pra gente o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é sua consulta, repare que você está referenciando aos campos: nens_nome e turn_nome

       public function getDados(){ 
           $re = "SELECT nens_nome, turn_nome, stvi, curs, matricula 
                  FROM vinculo_academico viac 
                       JOIN nivel_ensino nens on (nens.nens_id = viac.nens_id)"; 
           mysql_query($re) or die (mysql_error()); 

       }

 

E quando você está retornando os valores chama por campos que naõ existem:

 

       $nens         = $l["nens"]; <- Aqui
       $turn         = $l["turn"]; <- Aqui
       $stvi         = $l["stvi"]; 
       $curs         = $l["curs"]; 
       $matricula    = $l["matricula"]; 

 

Faça as alterações e teste novamente

 

at+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quelipe, obrigado pela sua dica. Fiz as alterações e o erro persiste, ainda.

 

O erro é nesse linha:

while($l = mysql_fetch_array($result)) {

 

 

Qual parametro será que falta passar? se eu coloco fora da classe, e sim no código, ele funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte amigo:

 

            return mysql_query( $re );

esqueça o or die();

 

da forma que você tentou fazer, só ia lhe retornar o boleano entre a query e o error();

 

se você precisar debugar, o melhor seria:

 

 

     $query = mysql_query( $re );
    if( !$query ) echo mysql_error();
    else return $query; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples:

 

Olha essa linha:

mysql_query($re) or die (mysql_error()); 

 

No laço você está fazendo assim:

while($l = mysql_fetch_array($result)) {

 

Beleza até aí tudo bem, porém você não especificou um variável que receberá o resultado da consulta, que no laço você colocou: $result;

Então corrigindo:

       public function getDados(){  
           $re = "SELECT nens_nome, turn_nome, stvi, curs, matricula  
                  FROM vinculo_academico viac  
                       JOIN nivel_ensino nens on (nens.nens_id = viac.nens_id)";  
           $result = mysql_query($re) or die (mysql_error());  
           return $result;
       }

 

require_once 'config/config.php'; 
require_once 'classes/Curso.php'; 

$curso = new Curso(); 

$result = $curso->getDados(); 

while($l = mysql_fetch_array($result)) {
.
.
.

 

Testa aí.

 

At+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito Quelipe, funcionou certinho, terei mais atenção, Obrigado!.

William, realmente esta forma de debugar o código é bem melhor, vlw.

 

Obrigado a todos, Abraço pessoal.

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.