Moneybag Posted March 18, 2015 at 01:15 AM Report Share #579675 Posted March 18, 2015 at 01:15 AM Boas Pessoal Quero fazer uma pagina que mostre todos os funcionários que tenho numa tabela mysql e que o codigo seja estruturado em 2 páginas nomeadamente: employees.php e functions.php eu já criei uma função na página functions.php assim: function list_employees($mysqli){ $query = "SELECT * FROM tbl_employee ORDER by id"; $resultSet = array(); if($result = $mysqli->query($query)){ while($row = $result->fetch_assoc()){ $resultSet[] = $row['email']; } } return $resultSet; } Ou seja está a retornar os emails de todos os empregados registados na tabela, até aqui tudo perfeito mas eu gostava que a função retornasse todos os dados dos funcionários (primeiro nome, apelido, idade, cargo, etc..) E na página employees.php tenho assim: <table border="1"> <tr> <th>Primeiro Nome</th> <th>Segundo Nome</th> <th>Contacto</th> <th>Email</th> </tr> <?php $variable = list_employees($mysqli); foreach ($variable as $value) { echo "<form action=teste.php method=post>"; echo "<tr>"; echo "<td>" . " <input type=text name=first_name value=" .$value . "></td>"; echo "</tr>"; echo "</form>"; } ?> </table> Ps: As pesquisas mysql estão feitas com php sqli orientado a objectos.. Alguém tem ideia como posso fazer a função retornar no array todos os dados dos funcionários e como selecionar (tipo: $value['primeiro_nome']) esses dados na pagina employees.php ? Link to comment Share on other sites More sharing options...
bioshock Posted March 18, 2015 at 09:23 AM Report Share #579684 Posted March 18, 2015 at 09:23 AM Se queres que te devolva todos os dados talvez seja benéfico não colocar no array apenas $resultSet[] = $row['email']; não achas? Porque desta forma é óbvio que só te retorna o email.. $result = $mysqli->query($query) return $result->fetch_assoc(); Quanto à tabela em html, tens-la mal estruturada. <?php $results = list_employees($mysqli); ?> <table> <thead> <tr> <th>Nome</th> <th>Email</th> </tr> </thead> <tbody> <?php foreach($results as $result){ ?> <tr> <td><?php echo $result['nome']; ?></td> <td><?php echo $result['email']; ?></td> </tr> <?php } ?> </tbody> </table> Link to comment Share on other sites More sharing options...
Moneybag Posted March 18, 2015 at 07:15 PM Author Report Share #579756 Posted March 18, 2015 at 07:15 PM (edited) Se queres que te devolva todos os dados talvez seja benéfico não colocar no array apenas $resultSet[] = $row['email']; não achas? Porque desta forma é óbvio que só te retorna o email.. Eu sei que $resultSet[] = $row['email'] não funcionava, éra só para testar a funcção. $result = $mysqli->query($query) return $result->fetch_assoc(); Quanto a este código que me disse eu já tinha experimentado mas estava me a retornar uns valores estranhos : employees.php: $results = list_employees($mysqli); foreach ($results as $result) { echo "<tr><td>". $result['first_name'] . "</<td></tr>"; } E sobre a tabela , essa estruturação também éra so um teste, mas obrigado pelo aviso xd Edited March 18, 2015 at 09:34 PM by Ascensao Link to comment Share on other sites More sharing options...
Moneybag Posted March 18, 2015 at 07:34 PM Author Report Share #579760 Posted March 18, 2015 at 07:34 PM Depois de algumas tentativas já consegui fazer o que queria vou deixar em baixo o código correcto, se alguém sugerir um código mais limpo agradeço 😉 function list_employees($mysqli) { $temp = array(); $query = "SELECT * FROM tbl_employee ORDER by id"; if($result = $mysqli->query($query)){ while($row = $result->fetch_array(MYSQLI_ASSOC)) { $temp[] = $row; } } return $temp; } Já agora aproveito para perguntar se vale apena fazer algum tipo de try, catch e como o faria da forma mais eficiente. Obrigado Link to comment Share on other sites More sharing options...
bioshock Posted March 18, 2015 at 07:45 PM Report Share #579762 Posted March 18, 2015 at 07:45 PM Experimente então apenas: return $result->fetch_array(MYSQLI_ASSOC)); Não me lembro muito bem mas havia um desses comandos que retornava todos os valores sem que para isso fosse necessário fazer um loop. Link to comment Share on other sites More sharing options...
Moneybag Posted March 19, 2015 at 12:14 AM Author Report Share #579795 Posted March 19, 2015 at 12:14 AM Experimente então apenas: return $result->fetch_array(MYSQLI_ASSOC)); Não me lembro muito bem mas havia um desses comandos que retornava todos os valores sem que para isso fosse necessário fazer um loop. Tentei mas não funciona 😕 Link to comment Share on other sites More sharing options...
Solution bioshock Posted March 19, 2015 at 09:26 AM Solution Report Share #579804 Posted March 19, 2015 at 09:26 AM return $result->fetch_all(MYSQLI_ASSOC); Link to comment Share on other sites More sharing options...
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