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

(Resolvido) Problema ao retornar valores com Classe


Carlohcs

Pergunta

bem,dessa vez,queria saber porque não consigo retornar os valores da minha consulta. O sql me mostra que tem os usuários certinho,porém,não consigo mostrar informações sobre eles.

na maneira convencional eu sei fazer :

<?php
$consulta = "SELECT * FROM usuarios";
$resultado = mysql_query($consulta);

while($linha = mysql_fetch_object($resultado)){


echo "Nome: $linha->nome";

}

?>
só q agora,eu criei uma classe,porque farei isso mts vezes e fica embaçado ter q fazer isso o tempo td. O problema,acho que está na configuração da Classe. CLASSE:
<?php
require ('db.php'); //Requirindo conexão ao SQL
class User{ //Definindo a classe User

    var $id_usuario;
    var $nome;
    var $login;
    var $senha;
    var $esta_salvo;

    function __construct($id_usuario){ //Função com base na chave primária do id_usuario

        global $link;
        $sql = "SELECT nome, login, senha FROM usuarios WHERE id_usuario = '$id_usuario';";
        $query = $this->link->mysql_query($sql);
            if($query->mysql_num_rows>0){

                $info = $query->mysql_fetch_object($sql);

                $this->nome = $info->nome;
                $this->login = $info->login;
                $this->senha = $info->senha;
                $this->id_usuario = $id_usuario;
                
        }

    }
    
    function salva(){

        global $link;
        //$this->link = $link;
    
        if(!$this->esta_salvo){
            
            $link = mysql_query("INSERT INTO usuarios( id_usuario, nome, login, senha ) VALUES ( 'NULL', '$this->nome', '$this->login', '$this->senha');");
            echo "<p align=center><font color=#CC0000>*DADOS CADASTRADOS CORRETAMENTE</font></p>";
            
        }else{

            $link = mysql_query("UPDATE usuarios SET nome = '$this->nome', login='$this->login', senha='$this->senha', WHERE id_usuario = $this->id_usuario;");
            echo "<p align=center><font color=#CC0000>*DADOS ATUALIZADOS CORRETAMENTE</font></p>";
        }
    }


    function deleta($id_usuario){ 
    
        global $link;
        //$this->link = $link;
        
        $link = mysql_query("DELETE FROM usuarios WHERE id_usuario = '$id_usuario';");
        echo "<p align=center><font color=#CC0000>DADOS EXCLUIDOS CORRETAMENTE</font></p>";
    
        }
        
    function lista(){

        global $link;
        //$this->link = $link;
        
        $sql = mysql_query("SELECT id_usuario, nome, login FROM usuarios");
        
        while($registro = mysql_fetch_object($sql)){
            
            $usuario[] = new User($registro->id_usuario);
                
        }
        
        return $usuario;
        
    }
    
    
}

?>
Página q mostro os dados:
<html>
    <head>
        <link rel="stylesheet" href="default.css" type="text/css">
    </head>
    <body>
        <div id="custom">
<?php 
require ('conf.php');
foreach(User::lista() as $registro){

echo "<table border=1 widht=100% align=center>";
echo "<tr>
        <th width=5px><font color=#CC0000>Id_usuario</font></th>
        <th width=200px><font color=#CC0000>Nome</font></th>
        <th width=200px><font color=#CC0000>Login</font></th>
     </tr>
     <tr>
         <td>$registro->id_usuario</td>
        <td>$registro->nome</td>
        <td>$registro->login</td>
    </tr></table>";
}
?>
        <p align="center"><a href="cadastra.php">CADASTRO</a></p>
        <br>
    </div>
</body>
</html>

o que estou fazendo de errado?

até mais,falou.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Página q mostro os dados:

<html>
    <head>
        <link rel="stylesheet" href="default.css" type="text/css">
    </head>
    <body>
        <div id="custom">
<?php 
require ('conf.php');
foreach(User::lista() as $registro){

echo "<table border=1 widht=100% align=center>";
echo "<tr>
        <th width=5px><font color=#CC0000>Id_usuario</font></th>
        <th width=200px><font color=#CC0000>Nome</font></th>
        <th width=200px><font color=#CC0000>Login</font></th>
     </tr>
     <tr>
         <td>$registro->id_usuario</td>
        <td>$registro->nome</td>
        <td>$registro->login</td>
    </tr></table>";
}
?>
        <p align="center"><a href="cadastra.php">CADASTRO</a></p>
        <br>
    </div>
</body>
</html>

o que estou fazendo de errado?

até mais,falou.

Link para o comentário
Compartilhar em outros sites

  • 0
a primeira vista você não instaciou a classe

voce deve declar o a classe

$exemplo=new User;
aqui voce as funçoes da classe
$deletar=$exemplo->deleta($id);
então rickayron, metodos publicos não precisam ser instanciados, como o Carloshcs fez funciona! i aew Carlohcs, então teoricamente teria que estar funcionado, provavelmente o erro esteja nessa linha:
$query = $this->link->mysql_query($sql);

verifca direitinho e tals.

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

  • 0
a primeira vista você não instaciou a classe

voce deve declar o a classe

$exemplo=new User;
aqui voce as funçoes da classe
$deletar=$exemplo->deleta($id);
então rickayron, metodos publicos não precisam ser instanciados, como o Carloshcs fez funciona! i aew Carlohcs, então teoricamente teria que estar funcionado, provavelmente o erro esteja nessa linha:
$query = $this->link->mysql_query($sql);
verifca direitinho e tals.
<?php

$conecta=mysql_connect("localhost", "root", "");
$banco=mysql_select_db("texte");


class User{ //Definindo a classe User

    var $id_usuario;
    var $nome;
    var $login;
    var $senha;
    var $esta_salvo;

    function __construct(){ //Função com base na chave primária do id_usuario

        global $link;
        $query = mysql_query("SELECT nome, login, senha FROM usuarios ");

            if($query->mysql_num_rows>0){
            

               While( $info =mysql_fetch_object($query)){

                 $this->nome = $info->nome;
                $this->login = $info->login;
                $this->senha = $info->senha;
               $this->id_usuario = $id_usuario;
              }
        }

    }

    function salva(){

        global $link;
        //$this->link = $link;

        if(!$this->esta_salvo){

            $link = mysql_query("INSERT INTO usuarios( id_usuario, nome, login, senha ) VALUES ( 'NULL', '$this->nome', '$this->login', '$this->senha');");
            echo "<p align=center><font color=#CC0000>*DADOS CADASTRADOS CORRETAMENTE</font></p>";

        }else{

            $link = mysql_query("UPDATE usuarios SET nome = '$this->nome', login='$this->login', senha='$this->senha', WHERE id_usuario = $this->id_usuario;");
            echo "<p align=center><font color=#CC0000>*DADOS ATUALIZADOS CORRETAMENTE</font></p>";
        }
    }


    function deleta($id_usuario){

        global $link;
        //$this->link = $link;

        $link = mysql_query("DELETE FROM usuarios WHERE id_usuario = '$id_usuario';");
        echo "<p align=center><font color=#CC0000>DADOS EXCLUIDOS CORRETAMENTE</font></p>";

        }

    function lista(){

        global $link;
        //$this->link = $link;

        $sql = mysql_query("SELECT id_usuario, nome, login FROM usuarios");
        $is=0;

        while($registro = mysql_fetch_object($sql)){

            $usuario[$is] = $registro->id_usuario;
          $is++;
        }

        return $usuario;

    }


}

?>

<html>
    <head>
        <link rel="stylesheet" href="default.css" type="text/css">
    </head>
    <body>
        <div id="custom">
<?php
require ('classe.php');
$is= New User;

foreach(User::lista() as $registro){

echo "<table border=1 widht=100% align=center>";
echo "<tr>
        <th width=5px><font color=#CC0000>Id_usuario</font></th>
        <th width=200px><font color=#CC0000>Nome</font></th>
        <th width=200px><font color=#CC0000>Login</font></th>
     </tr>
     <tr>
         <td>$registro->id_usuario</td>
        <td>$registro->nome</td>
        <td>$registro->login</td>
    </tr></table>";
}
?>
        <p align="center"><a href="#" onclick="<?php $is->deleta('2'); ?>" >CADASTRO</a></p>
        <br>
    </div>
</body>
</html>
fiz algumas mudanças e funcionou esta apontando erro nessa linha
$sql = "SELECT nome, login, senha FROM usuarios WHERE id_usuario = '$id_usuario';";
        $query = $this->link->mysql_query($sql);

acredito que voce esta apontando para a funçao na qual você já esta dentro

global link

$this->link->

obrigado romerito pela dica até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Ae rapaziada,fiz as modificações,e mesmo assim,ainda n me retornou os dados.Ele mostra a tabela,com os campos de id,nome, e login respectivamente pra cada um dos usuarios.mas não me mostra valor algum.

Quando faço um echo dentro do while,me retorna os dados,porem faltando um usuário.

function lista(){

$link = mysql_query("SELECT id_usuario, nome, login FROM usuarios");
$is=0;

while($registro = mysql_fetch_object($link)){
[b]echo "nome: $registro->nome";[/b]
$usuario[$is] = $registro->id_usuario;
$is++;
}

return $usuario;

}

essa parte "$query = $this->link->mysql_query($sql);",eu tinha colocado porque pensei q na variavel query,eu estava pegando a conexão q já estava no db,q está num outro arquivo.

vou mostrar uma imagem,pra vocês verem o q se passa:

" target="_blank">i.JPG

se eu retirar o wihle da classe,e colocar na página,roda sem problemas.Mas vou fazer isso mts vezes,e queria q fosse na classe.mais alguma idéia?

até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Ola com as novas modificaçoes a sua classe perdeu um pouco o seu padrão mas está funcionando agora

<html>
<head>
<link rel="stylesheet" href="default.css" type="text/css">
</head>
<body>
<div id="custom">
<?php
require ('classe.php');
$is= New User;
$la=0;
$users=$is->lista();

echo "<table border=1 widht=100% align=center>";
echo "<tr>
<th width=5px><font color=#CC0000>Id_usuario</font></th>
<th width=200px><font color=#CC0000>Nome</font></th>
<th width=200px><font color=#CC0000>Login</font></th>";

//foreach(User::lista() as $registro){
for($la=0; $la<count($users[login]); $la++){
echo "<tr><td>";
echo $users[id_usuario][$la];
echo "</td><td>";
echo $users[nome][$la];
echo "</td><td>";
echo $users[login][$la];
echo "</td></tr>";
}
?>
</table>

<p align="center"><a href="#" onclick="<?php $is->deleta('2'); ?>" >CADASTRO</a></p>

<?php

$conecta=mysql_connect("localhost", "root", "");
$banco=mysql_select_db("texte");


class User{ //Definindo a classe User

var $id_usuario;
var $nome;
var $login;
var $senha;
var $esta_salvo;

function __construct(){ //Função com base na chave primária do id_usuario

global $link;
$query = mysql_query("SELECT nome, login, senha FROM usuarios ");

if($query->mysql_num_rows>0){


While( $info =mysql_fetch_object($query)){

$this->nome = $info->nome;
$this->login = $info->login;
$this->senha = $info->senha;
$this->id_usuario = $id_usuario;
}
}

}

function salva(){

global $link;
//$this->link = $link;

if(!$this->esta_salvo){

$link = mysql_query("INSERT INTO usuarios( id_usuario, nome, login, senha ) VALUES ( 'NULL', '$this->nome', '$this->login', '$this->senha');");
echo "<p align=center><font color=#CC0000>*DADOS CADASTRADOS CORRETAMENTE</font></p>";

}else{

$link = mysql_query("UPDATE usuarios SET nome = '$this->nome', login='$this->login', senha='$this->senha', WHERE id_usuario = $this->id_usuario;");
echo "<p align=center><font color=#CC0000>*DADOS ATUALIZADOS CORRETAMENTE</font></p>";
}
}


function deleta($id_usuario){

global $link;
//$this->link = $link;

$link = mysql_query("DELETE FROM usuarios WHERE id_usuario = '$id_usuario';");
echo "<p align=center><font color=#CC0000>DADOS EXCLUIDOS CORRETAMENTE</font></p>";

}

function lista(){

global $link;
//$this->link = $link;

$sql = mysql_query("SELECT id_usuario, nome, login FROM usuarios");
$is=0;

while($registro = mysql_fetch_object($sql)){

$usuario[id_usuario][$is] = $registro->id_usuario;
$usuario[nome][$is] = $registro->nome;
$usuario[login][$is] = $registro->login;
$is++;
}

return $usuario;

}


}

?>

qualquer erro poste ai

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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...