Principal
/
Tutorial de PHP y MySQL
/
Cómo mostrar datos de tablas MySQL

Cómo mostrar datos de tablas MySQL

Muy a menudo, necesitarás usar una tabla MySQL para almacenar datos dentro de ella y luego generar esos datos usando un script PHP. Para mostrar los datos de la tabla es mejor usar HTML, que al completar algunos datos en la página invocará un script PHP que actualizará la tabla MySQL.

Para ingresar datos en una nueva tabla de la base de datos, primero necesitarás una página HTML que recopile esos datos del usuario. El siguiente código HTML hace eso y pasa la información a un script PHP:

<form action="insert.php" method="post">
    Value1: <input type="text" name = "field1" /><br/>
    Value2: <input type="text" name = "field2" /><br/>
    Value3: <input type="text" name = "field3" /><br/>
    Value4: <input type="text" name = "field4" /><br/>
    Value5: <input type="text" name = "field5" /><br/>
    <input type="submit" />
</form>

El código HTML anterior mostrará al usuario 5 campos de texto, en los cuales el usuario puede ingresar datos y un botón Submit (Enviar). Al hacer clic en el botón Submit, los datos enviados por el usuario se pasarán a un script llamado insert.php.

Ese script puede tener una sintaxis similar a la siguiente:

<?php
$username = "your_username";
$password = "your_pass";
$database = "your_db";

$mysqli = new mysqli("localhost", $username, $password, $database);

// Don't forget to properly escape your values before you send them to DB
// to prevent SQL injection attacks.

$field1 = $mysqli->real_escape_string($_POST['field1']);
$field2 = $mysqli->real_escape_string($_POST['field2']);
$field3 = $mysqli->real_escape_string($_POST['field3']);
$field4 = $mysqli->real_escape_string($_POST['field4']);
$field5 = $mysqli->real_escape_string($_POST['field5']);

$query = "INSERT INTO table_name (col1, col2, col3, col4, col5)
            VALUES ('{$field1}','{$field2}','{$field3}','{$field4}','{$field5}')";

$mysqli->query($query);
$mysqli->close();

Una vez que el usuario envía la información, el script insert.php la guardará en la tabla de la base de datos. Luego, es posible que desees generar esa información para que el usuario pueda verla en la página. El primer comando que necesitarás usar es la sentencia SELECT FROM MySQL que tiene la siguiente sintaxis:

SELECT * FROM table_name;

Esta es una consulta básica de MySQL que le indicará al script que seleccione todos los registros de la tabla table_name. Una vez ejecutada la consulta, normalmente querrás que el resultado se almacene dentro de una variable. Esto se puede hacer con el siguiente código PHP:

<?php
$query = $mysqli->query("SELECT * FROM table_name");

Todo el contenido de la tabla ahora se incluye en una matriz PHP con el nombre $result. Antes de que puedas generar estos datos, debes cambiar cada pieza en una variable separada. Hay dos etapas.

Ahora tendremos que configurar el bucle. Tomará cada fila del resultado e imprimirá los datos almacenados allí. De esta forma mostraremos todos los registros en la tabla:

$query = "SELECT * FROM table_name";

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        $field1name = $row["col1"];
        $field2name = $row["col2"];
        $field3name = $row["col3"];
        $field4name = $row["col4"];
        $field5name = $row["col5"];
    }

    /* free result set */
    $result->free();
}

Ahora puedes escribir un script completo para generar los datos. En este script, los datos no tienen formato cuando se imprimen:

<?php
$username = "username";
$password = "password";
$database = "your_database";
$mysqli = new mysqli("localhost", $username, $password, $database);

$query = "SELECT * FROM table_name";
echo "<b> <center>Database Output</center> </b> <br> <br>";

if ($result = $mysqli->query($query)) {

    while ($row = $result->fetch_assoc()) {
        $field1name = $row["col1"];
        $field2name = $row["col2"];
        $field3name = $row["col3"];
        $field4name = $row["col4"];
        $field5name = $row["col5"];

        echo '<b>'.$field1name.$field2name.'</b><br />';
        echo $field5name.'<br />';
        echo $field5name.'<br />';
        echo $field5name;
    }

/*freeresultset*/
$result->free();
}

Esto genera una lista de todos los valores almacenados en la base de datos. Te dará un resultado muy básico que no es útil para un sitio web online. En cambio, sería mejor si pudieras darle formato en una tabla y mostrar la información en ella. Para darle formato, debes utilizar HTML para imprimir el resultado al incluir las variables en los espacios correctos. La forma más sencilla de hacer esto es cerrando la etiqueta PHP e ingresando HTML normalmente. Cuando encuentres una posición variable, inclúyela de la siguiente manera:

<?php echo $variablename; ?>

en la posición correcta en tu código.

También puedes usar el bucle PHP para repetir el código apropiado e incluirlo como parte de una tabla más grande. El resultado final es:

<html>
<body>
<?php 
$username = "username"; 
$password = "password"; 
$database = "your_database"; 
$mysqli = new mysqli("localhost", $username, $password, $database); 
$query = "SELECT * FROM table_name";


echo '<table border="0" cellspacing="2" cellpadding="2"> 
      <tr> 
          <td> <font face="Arial">Value1</font> </td> 
          <td> <font face="Arial">Value2</font> </td> 
          <td> <font face="Arial">Value3</font> </td> 
          <td> <font face="Arial">Value4</font> </td> 
          <td> <font face="Arial">Value5</font> </td> 
      </tr>';

if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {
        $field1name = $row["col1"];
        $field2name = $row["col2"];
        $field3name = $row["col3"];
        $field4name = $row["col4"];
        $field5name = $row["col5"]; 

        echo '<tr> 
                  <td>'.$field1name.'</td> 
                  <td>'.$field2name.'</td> 
                  <td>'.$field3name.'</td> 
                  <td>'.$field4name.'</td> 
                  <td>'.$field5name.'</td> 
              </tr>';
    }
    $result->free();
} 
?>
</body>
</html>

Este código imprimirá el contenido de la tabla y agregará una fila adicional para cada registro en la base de datos, dando formato a los datos a medida que se imprimen.

Comparte este artículo