Jump to content

mysqli fetch array return function


Moneybag
 Share

Go to solution Solved by bioshock,

Recommended Posts

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

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

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 :

image.jpg

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 by Ascensao
Link to comment
Share on other sites

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

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
 Share

×
×
  • 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.