Erro PHP

4 respostas Resolvido
G

Estou com o seguinte erro nesse código:

CONTROLE

Sistema Controle

Novo Cliente

<?php include 'database.php';
$pdo = Database::connect();
                        
                        $sql = "SELECT * FROM tb_cliente ORDER BY id DESC";
                        
                        foreach ($pdo->query($sql) as $row)
                        {
                            echo '<tr>';
                            echo '<td>'.$row['nome'].'</td>';
                            echo '<td>'.$row['cpf_cnpj'].'</td>';
                            echo '<td>'.$row['endereco'].'</td>';
                            echo '<td>'.$row['bairro'].'</td>';
                            echo '<td>'.$row['cidade'].'</td>';
                            echo '<td>'.$row['estado'].'</td>';
                            echo '<td>'.$row['tel_fixo'].'</td>';
                            echo '<td>'.$row['celular'].'</td>';
                            echo '<td width=250>';
                            echo '<a class="btn" href="read.php?codigo='.$row['codigo'].'">Read</a>';
                            echo '&nbsp';
                            echo '<a class="btn btn-success" href="update.php"?codigo='.$row['codigo'].'">Update"</a>';
                            echo '&nbsp';
                            echo '<a class="btn btn-danger" href="delete.php?codigo='.$row['codigo'].'">Delete</a>';
                            echo '</tr>';
                        }
                        database::disconnect();
                    ?>
                </tbody>
            </table>
        </div>
    </div>
</body>

Porém está dando o seguinte erro:

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\genesis\index.php on line 44

Será que poderiam me informar o que estou fazendo de errado?

Obrigado a todos.

Nome CPF/CNPJ Endereço Bairro Cidade Estado telefone Celular

4 Respostas

Giluan65

Verifique sua classe de conexão.

Tente assim e veja o resultado, aqui funcionou normal.

$pdo = new PDO('mysql:host=localhost;dbname=teste', 'root', '');

G

Colega,
esta é minha classe de conexão. Desculpe, mas estou começando agora com PHP.

<?php class database { private static $dbhost = 'localhost'; private static $dbname = 'bdcontrole'; private static $dbusername = 'root'; private static $dbpassword = 'c1d1nh3'; private static $cont = null; public function __construct() { die ('Int function is not allowed'); } public static function connect() { if(null == self::$cont) { try { self::$cont = new PDO("mysql:host=".self::$dbhost.";"."dbname=".self::$dbname, self::$dbusername, self::$dbpassword); } catch (Exception $ex) { die($ex->getMessage()); } } return self::$cont; } public static function disconnect() { self::$cont = null; } }

Peço a gentileza de informar-me o que estou fazendo de errado. Obrigado.

B

já que você está começando, posso te ajudar assim:

<?php

define('HOST', 'localhost');
define('USER', 'root');
define('PASS', 'c1d1nh3');
define('BD', 'bdcontrole');

function conectarComPDO(){
	$dsn = "mysql:host=".HOST.";dbname=".BD;
	
	try{
		$conectar = new PDO($dsn, USER, PASS);
		$conectar->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
		return $conectar;
	}catch(PDOException $e){
		echo "Erro ao conectar ao banco". $e.getMessage();
	}
	
}

function listaProdutos(){
		$pdo = conectarComPdo();
		$query = "SELECT * FROM clientes";
		try{
			$listar = $pdo->query($query);
			$listar->execute();
			
			if($listar->rowCount() > 0){
				return $listar->fetchAll(PDO::FETCH_ASSOC);
			}
		}catch(PDOException $e){
			echo "Erro: ".$e->getMessage();
		}
	}

$todosProds = listaProdutos();

    foreach ($todosProds as $pro){
         echo '<tr>';
        echo '<td>'.$pro['nome'].'</td>';
        .....
}
G
Solucao aceita

Colega,

Fico muito grato pela sua ajuda até aqui, funcionou corretamente. Caso tenha outra dúvida, postarei.

Criado 23 de janeiro de 2016
Ultima resposta 23 de jan. de 2016
Respostas 4
Participantes 3