Ir para conteúdo

Arquivado

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

AndrePls

Loop For

Recommended Posts

Segue o código:

 

public function listar($objeto, $extra = null){
//SELECT campo1, campo2, campo3 FROM tabela EXTRA
$sql = "SELECT ";
 
for($i = 0; $i < sizeof($this->array_campos); $i++){
if($i == (sizeof($this->array_campos) - 1)){
$sql .= key($this->array_campos) . " FROM ";
}
else{
$sql .= key($this->array_campos) . ", ";
next($this->array_campos);
}
}
 
$sql .= $extra == null ? $this->tabela : $this->tabela . " $extra";
echo $sql . "<br />";
$query = mysql_query($sql)or die(mysql_error());
return $query;
}

 

Na minha página aonde quero exibir esses dados usei:

 

 

<?php
include_once("Base.class.php");
class Pessoas extends Base{
function __construct(){
parent::__construct();
$this->tabela = "pessoas";
$this->primary_key = 'id';
$this->array_campos = array('nome' => null, 'sobrenome' => null);
}
}
$obj = new Pessoas();
while($linha = mysql_fetch_array($obj->listar($obj))){
echo $linha['nome'] . "<br />";
echo $linha['sobrenome'] . "<br />";
}
?>

 

Porém, quando jogo isso no navegador ele retorna:
teste.jpg
Lembrando que:
João Sobrenome qualqur é um registro na minha tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se vc apenas quer os campos, vc poderia usar a função implode.

 

<?php
$campos = array('nome', 'sobrenome', 'idade','endereco');

$sql = 'SELECT ' . implode(',', $campos) . ' FROM tabela';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece por causa do seu charset

ele deve estar igual ao do banco de dados

Cara, meu problema são essas linhas:

SELECT sobrenome, FROM pessoas <- Não faço idea da onde veio isso.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM pessoas' at line 1 <- Nem isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro ai é por causa da virgula que tem depois do sobrenome

 

pessoas é uma tabela do seu banco de dados

Então, o erro ta no loop for, mas eu não consigo achar ele. Era pra ele exibir só o primeiro SELECT, aquele lá de cima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer isso:

 

for($i = 0; $i < sizeof($this->array_campos); $i++){
        if($i == (sizeof($this->array_campos) - 1)){
        $sql .= key($this->array_campos) . " FROM ";
    }else{
        $sql .= key($this->array_campos);
        if ($i != (sizeof($this->array_campos) - 2)){
            $sql .= ", ";
        }
        next($this->array_campos);
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roberto, com esse código ele não adiciona a vírgula, erros:

 

SELECT nomesobrenome FROM pessoas
Unknown column 'nomesobrenome' in 'field list'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora esse erro deu pelo motivo que:

 

O campo nomesobrenome não existe na tabela pessoas.

 

Ele não poe a virgula pelo simples fato de que a virgula serve apenas para separar campos, como só tem um então não necessita de virgula...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora esse erro deu pelo motivo que:

 

O campo nomesobrenome não existe na tabela pessoas.

 

Ele não poe a virgula pelo simples fato de que a virgula serve apenas para separar campos, como só tem um então não necessita de virgula...

Cara, eu copiei o loop q vc mandou, mas ele não adicionou a vírgula.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Refiz o meu loop, o erro está no WHILE, se eu dou um ECHO no meu SQL ele mostra SELECT nome, sobrenome FROM pessoas porém, quando eu faço o meu while, ele mostra: SELECT nome, sobrenome FROM pessoas

SELECT sobrenome, FROM pessoas
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM pessoas' at line 1

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.