Jump to content
JFernandesVR

Criar lista de clientes a partir da BD

Recommended Posts

JFernandesVR

Boas pessoal.

Sou novo por aqui.

Estou a tentar criar uma lista de clientes a partir da base de dados.

Queria que essa lista criasse uma tabela para cada cliente com as várias informações.

Para isso criei uma página "class.php" onde estão definidas todas as funções onde é feita a ligação à base de dados.

Criei outra página que é onde deve ser apresentada as tabelas com os vários clientes, mas nao me aparece nada.

aqui é o código da pagina que deve listar os clientes

<?php
function listarclientes() {
while ($linha=mysql_fetch_array($exe)){

?>
<table width="518" border="1">
<tr>
<th width="154" class="style20" scope="row">Nome/Empresa</th>
<td colspan="2"><?php echo $linha['Nome'];?></td>
</tr>
<tr>
<th class="style20" scope="row">Contribuinte</th>
<td colspan="2"><?php echo $linha['Contribuinte'];?></td>
</tr>
<tr>
<th class="style20" scope="row">Telemóvel</th>
<td colspan="2"><?php echo $linha['Telemovel'];?></td>
</tr>
<tr>
<th class="style20" scope="row">E-mail</th>
<td colspan="2"><?php echo $linha['Email'];?></td>
</tr>
<tr>
<th class="style20" scope="row">Tipo de Cliente</th>
<td colspan="2"><?php echo $linha['Tipo'];?></td>
</tr>
<tr>
<th scope="row"> </th>
<td width="181"> </td>
<td width="161"> </td>
</tr>
</table>  </td>
</tr>
</table>
<?php
}
}
?>

codigo da class.php

function listarclientes() {
$sql ="SELECT * FROM clientes";
$exe=mysql_query($sql);
}

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
bioshock

É normal que não te apareça grande coisa. Onde é que tu chamas a classe..e onde é que chamas a função?


Class clientes
{
  Function listarClientes()
  {
/* Código para os seleccionar os clientes
* E, provavelmente, tens de retornar os dados em forma de array para os poderes utilizar na página.
*/
  }
}
----------------------------------
$cliente = new clientes;
$cliente->listarClientes();

Share this post


Link to post
Share on other sites
JFernandesVR

ja experimentei de várias maneiras e nada.

apenas me aparece uma tabela e sem informações.

era suposto aparecer 3 tabelas ( pois tenho 3 clientes, uma para cada um).

Share this post


Link to post
Share on other sites
JFernandesVR

eu tenho 6 clientes, ele cria-me 6 tabelas, uma para cada cliente. ate aqui tudo bem.

mas lista-me em todas as tabelas os 6 clientes, quando é so um cliente por tabela.

o que esta mal?

function listarclientes() {
$sql = "SELECT Nome,Contribuinte,Telemovel,Email,Tipo FROM clientes";
$num_reg = mysql_affected_rows();
$resultado = mysql_query($sql);
$num_reg = mysql_num_rows($resultado);
$num_campos= mysql_num_fields($resultado);
echo ("Numero de clientes =$num_reg");
if ($num_reg==0)
{
echo ("Não existem clientes");
}
 elseif($num_reg>0)
 {
 for ($tabela=0;$tabela<$num_reg;$tabela++)
 {
 echo ("<table width=100% border=2 align=center>");
 echo ("<tr>
 <th width=150>
	 <p align=center>Nome/Empresa</p>
 </th>
 <th>
	 <p align=center>Contribuinte</p>
 </th>
<th>
	 <p align=center>Telemovel</p>
 </th>
<th>
	 <p align=center>Email</p>
 </th>
 <th>
	 <p align=center>Tipo de Cliente</p>
 </th>
 <th>
	 <p align=center></p>
 </th>
<th>
	 <p align=center></p>
 </th>
</tr>
<tr>
 <td>
 </td>
 <td>
 </td>
 <td>
 </td>
 <td>
 </td>
 <td>
 </td>
 <td>
Ver
 </td>
<td>
Editar
 </td>
<p>");
	 for ($linha =0;$linha<$num_reg;$linha++)
	 {
	 for($coluna=0;$coluna<$num_campos;$coluna++)
	 {
		 $field = mysql_field_name($resultado,$coluna);
		 //print ("<th>$field</th>");
		 $campo = mysql_result($resultado,$linha,"$field");
		 print ("<td>$campo</td>");
	 }
	 print ("</tr>");
	 }
	 echo ("</table>");
 }

 mysql_free_result($resultado);


}
}

Share this post


Link to post
Share on other sites
bioshock

Antes de mais, por favor utiliza-me as tag-codes apropriadas..até perco vontade de olhar para isso sem elas. É simples, basta: [ code = php ] [ /code] (sem os espaços).

De resto, tens aí coisas desnecessárias, como é o caso dos dois últimos loops. A solução para o teu problema está no teu 1º post, na 3ª linha.

Edit: Não posso testar agora, mas o que eu pretendia que fizesses era algo semelhante:


<?php 
$rows = array(0 => array("id" => 1, "nome" => "Teste 1"), 1 => array("id" => 2, "nome" => "Teste2"));

for($i = 0; $i <= count($rows) - 1; $i++){ 
     echo "<table width=100% border=2 align=center>";
     echo "<tr>";
     echo "<th width=150><p align=center>ID</p></th>";
     echo "<th width=150><p align=center>Nome</p></th>";
     echo "</tr>";
     echo "<tr>";
     echo "<td>"; 
     echo $rows[$i]["id"];
     echo "</td>";
     echo "<td>"; 
     echo $rows[$i]["nome"];
     echo "</td>";
     echo "</tr>";
     echo "</table>";
}
?>

De resto, perfeito perfeito, seria separares o HTML do PHP, desta forma:


<?php 
$rows = array(0 => array("id" => 1, "nome" => "Teste 1"), 1 => array("id" => 2, "nome" => "Teste2"));

for($i = 0; $i <= count($rows) - 1; $i++){ 
?>
    <table width=100% border=2 align=center>
       <tr>
          <th width=150><p align=center>ID</p></th>
          <th width=150><p align=center>Nome</p></th>
       </tr>
      <tr>
         <td><?php echo $rows[$i]["id"]; ?></td>
     </tr>
  </table>
 <?php
}
?>

Edited by bioshock

Share this post


Link to post
Share on other sites
bioshock

A solução para o teu problema está no teu 1º post, na 3ª linha.

<?php
function listarclientes() {
while ($linha=mysql_fetch_array($exe)){ // 3ª linha

Em princípio essa função é equivalente a esta: http://www.php.net/manual/en/mysqli-stmt.fetch.php

Portanto, o que eu queria que fizesses era uma função que te retornasse em array os dados e depois percorrias o array como te disse no último post.

function getFields(){
 /* info connection à bd... */
 $query = $db->prepare("SELECT nome, contribuinte, telemovel, email, tipo FROM clientes");
 $query->execute();
 $query->bind_result($nome, $contribuinte, $telemovel, $email, $tipo);
 $query->store_result();
 $rows = array();
 while ($query->fetch()) {
 $rows[] = array("nome" => $nome, "contribuinte" => $contribuinte, "telemovel" => $telemovel, "email" => $email,
					 "tipo" => $tipo);
 }
 $query->close();
 $db->close();
 return $rows;
}

$arr = getFields();
/*
$arr[$i]["id"] ...etc
*/

O problema disto é que está na extensão MySQLi, pelo que terás que adaptar ao teu projecto. Consegues ter uma ideia do que podes ter que fazer?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.