JFernandesVR Posted May 27, 2013 at 03:18 PM Report #509209 Posted May 27, 2013 at 03:18 PM (edited) 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 May 28, 2013 at 07:52 AM by brunoais geshi
bioshock Posted May 27, 2013 at 03:30 PM Report #509211 Posted May 27, 2013 at 03:30 PM É 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();
JFernandesVR Posted May 27, 2013 at 03:32 PM Author Report #509212 Posted May 27, 2013 at 03:32 PM com retorno os dados?
bioshock Posted May 27, 2013 at 03:52 PM Report #509214 Posted May 27, 2013 at 03:52 PM Eu disse-te que retornavas os dados em forma de array. Procuras um bocado no google, experimentas o que vês e voltas cá com dúvidas. http://php.net/manual/pt_BR/functions.returning-values.php http://forums.devshed.com/php-development-5/return-array-from-function-3676.html http://www.techrepublic.com/article/17-useful-functions-for-manipulating-arrays-in-php/5792851
JFernandesVR Posted May 28, 2013 at 09:32 AM Author Report #509367 Posted May 28, 2013 at 09:32 AM 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).
JFernandesVR Posted May 30, 2013 at 11:29 AM Author Report #509747 Posted May 30, 2013 at 11:29 AM 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); } }
bioshock Posted May 30, 2013 at 01:06 PM Report #509787 Posted May 30, 2013 at 01:06 PM (edited) 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 May 30, 2013 at 01:27 PM by bioshock
JFernandesVR Posted May 31, 2013 at 08:53 AM Author Report #510129 Posted May 31, 2013 at 08:53 AM e engato isso onde? ou a partir de onde?
bioshock Posted May 31, 2013 at 09:44 AM Report #510147 Posted May 31, 2013 at 09:44 AM 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?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now