Realizar ciclo while a partir de una consulta MySQLi en PHP

publicado por: Anonymous

el día de hoy he caído en el siguiente problema, estoy realizando un sistema de administración de alumnos en la cual los datos se almacenan en una BD de MySQL, pero al momento de querer listarlos todos, no consigo realizarlo, estoy utilizando la función mysqli_fetch_array(), también ya lo intenté con la función mysqli_fetch_assoc() y no consigo obtener los datos, alguien podría ayudarme? Les comparto mi código.

conexion.php

<?php

//Iniciar la conexion
$mysqli = new MySQLi('localhost', 'root', 'contrasenia', 'stacatalina');
if ($mysqli->connect_errno){
    echo("Error debido a ".$mysqli->connect_errno.' - '.$mysqli->connect_error.'n');
}
return($mysqli);
?>

veralumnos.php

<?php require_once('Connections/conexion.php'); ?>
<?php
 //initialize the session
if (!isset($_SESSION)) {
  session_start();
}
if (!isset($_SESSION['logged'])){
    header('Location: errorPrivilegios.php');
}

$consulta = "SELECT nombres, appaterno, apmaterno FROM perfiles WHERE privilegios='Alumno';";
if($buscardatos = $mysqli->query($consulta)){
            $alumnos = $buscardatos->fetch_array(MYSQLI_ASSOC);
            $buscardatos->free();
    }

else {
        printf("Error: %sn", $mysqli->error);
        $mysqli->close();
        exit;
    }
?>
<!DOCTYPE html>
<div class="container">
<h1 class="text-center">Alumnos</h1>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
  <table width="80%" border="1" align="center" cellspacing="2" class="table table-responsive table-hover table-striped">
    <tbody>
      <tr>
        <th width="20%" align="center" valign="middle" scope="col"><h4 class="text-center">Matricula</h4></th>
        <th width="50%" align="center" valign="middle" scope="col"><h4 class="text-center">Nombre</h4></th>
        <th width="30%" align="center" valign="middle" scope="col"><h4 class="text-center">Acciones</h4></th>
        </tr>
        <?php while ($row_alumnos = mysqli_fetch_array($alumnos)) { ?>
      <tr>
        <th align="center" valign="middle" scope="row">&nbsp;</th>
        <td align="center" valign="middle"><?php echo ($alumnos['nombres'].' '.$alumnos['appaterno'].' '.$alumnos['apmaterno']); ?></td>
        <td align="center" valign="middle"><button class="btn btn-warning"><span class="glyphicon glyphicon-edit"></span></button>&nbsp;<button class="btn btn-info"><span class="glyphicon glyphicon-usd"></span></button>&nbsp;<button class="btn btn-success"><span class="glyphicon glyphicon-ok-circle"></span></button>&nbsp;<button class="btn btn-danger"><span class="glyphicon glyphicon-erase"></span></button></td>
      </tr>
      <?php } ?>
    </tbody>
  </table>
</div>
</div>

El navegador me arroja el siguiente error:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, array given in C:xampphtdocsstacatalinaveralumnos.php on line 102

Alguien podría por favor ayudarme? Gracias.

SOLUCIÓN PARA FUTURAS REFERENCIAS

veralumnos.php

<?php require_once('Connections/conexion.php'); ?>
<?php
 //initialize the session
if (!isset($_SESSION)) {
  session_start();
}
if (!isset($_SESSION['logged'])){
    header('Location: errorPrivilegios.php');
}

$sql = "SELECT nombres, appaterno, apmaterno FROM perfiles WHERE 
privilegios='Alumno'";
$result=mysqli_query($mysqli,$sql);
?>
<!DOCTYPE html>
<div class="container">
<h1 class="text-center">Alumnos</h1>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
  <table width="80%" border="1" align="center" cellspacing="2" class="table table-responsive table-hover table-striped">
    <tbody>
      <tr>
        <th width="20%" align="center" valign="middle" scope="col"><h4 class="text-center">Matricula</h4></th>
        <th width="50%" align="center" valign="middle" scope="col"><h4 class="text-center">Nombre</h4></th>
        <th width="30%" align="center" valign="middle" scope="col"><h4 class="text-center">Acciones</h4></th>
        </tr>
        <?php while($ver=mysqli_fetch_row($result)) { ?>
      <tr>
        <th align="center" valign="middle" scope="row">&nbsp;</th>
        <td align="center" valign="middle"><?php echo ($ver[0].' '.$ver[1].' '.$ver[2]); ?></td>
        <td align="center" valign="middle"><button class="btn btn-warning"><span class="glyphicon glyphicon-edit"></span></button>&nbsp;<button class="btn btn-info"><span class="glyphicon glyphicon-usd"></span></button>&nbsp;<button class="btn btn-success"><span class="glyphicon glyphicon-ok-circle"></span></button>&nbsp;<button class="btn btn-danger"><span class="glyphicon glyphicon-erase"></span></button></td>
      </tr>
      <?php } ?>
    </tbody>
  </table>
</div>
</div>

solución

Mysqli_fetch_row “obtiene una fila de datos del conjunto de resultados y la devuelve como un array enumerado, donde cada columna es almacenada en un índice del array comenzando por 0 (cero)”. Ahi lo aplique a tu código. Probalo y comenta.

<?php require_once('Connections/conexion.php'); ?>
  <!DOCTYPE html>
<div class="container">
<h1 class="text-center">Alumnos</h1>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
 <table width="80%" border="1" align="center" cellspacing="2" class="table 
table-responsive table-hover table-striped">
<tbody>
    <tr>
    <th width="20%" align="center" valign="middle" scope="col"><h4 
  class="text-center">Matricula</h4></th>
    <th width="50%" align="center" valign="middle" scope="col"><h4 
  class="text-center">Nombre</h4></th>
    <th width="30%" align="center" valign="middle" scope="col"><h4 
 class="text-center">Acciones</h4></th>
    </tr>

 <?php
 //initialize the session
 if (!isset($_SESSION)) {
 session_start();
 }
  if (!isset($_SESSION['logged'])){
 header('Location: errorPrivilegios.php');
}

$sql = "SELECT nombres, appaterno, apmaterno FROM perfiles WHERE 
privilegios='Alumno'";
$result=mysqli_query($mysqli,$sql);

while($ver=mysqli_fetch_row($result)){ 

?>


  <tr>


   <td><?php echo $ver[0] ?></td>
   <td><?php echo $ver[1] ?></td> 
   <td><?php echo $ver[2] ?></td> 

    <?php } ?>
    <td align="center" valign="middle"><button class="btn btn-warning"><span 
  class="glyphicon glyphicon-edit"></span></button>&nbsp;<button class="btn 
 btn-info"><span class="glyphicon glyphicon-usd"></span></button>&nbsp;
 <button class="btn btn-success"><span class="glyphicon glyphicon-ok-
 circle"></span></button>&nbsp;<button class="btn btn-danger"><span 
  class="glyphicon glyphicon-erase"></span></button></td>
  </tr>

  </tbody>
  </table>
  </div>
  </div>
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *