Cristalab

Mostrar un Array de una base de datos MySQL con PHP

Por: Inyaka + 18.07.2007

Esta es la función que yo uso para mostrar los resultados de una matriz con PHP. La uso por la psicosis de no dejar las consultas de la base de datos al alcance de los "niños" y para que si hay un error en esta pueda solucionarlo modificando un solo archivo.



Todas las variables son opcionales excepto $tabla cuando no uses una variable agrega "" en su lugar, por que si no php marcara un error.

mostrarmatriz.php:

Código :

function mostrarMatriz($tabla,$campoCondicional,$campoValor,$orden,$inicio,$cantidad){
   include("conn/conn.php");
   $tabla= htmlspecialchars($tabla);
   $campoCondicional= htmlspecialchars($campoCondicional);
   $campoValor= htmlspecialchars($campoValor);
   $orden= htmlspecialchars($orden);
   $inicio= htmlspecialchars($inicio);
   $cantidad= htmlspecialchars($cantidad);
    if( isset($inicio) & $cantidad != null){
   $limites = "LIMIT $inicio, $cantidad";
   };
    if( $campoCondicional !="" && $campoValor !="") {
   $campoCondicional = "WHERE $campoCondicional = $campoValor ";
   }
   if( $orden !="") {
   $orden= "ORDER BY $orden DESC";
   }
    $sql= "SELECT * FROM `$tabla` $campoCondicional $orden $limites";
    $matriz_db = mysql_query($sql, $conn) or die(mysql_error());
    for($i=0;$fila= mysql_fetch_assoc($matriz_db); $i++) {
        for($a= 0;$a<mysql_num_fields($matriz_db);$a++){
          $campo = mysql_field_name($matriz_db,$a);
            $retorno[$i][$campo] = $fila[$campo];
        }
    };
    return $retorno;
}


conn.php :

Código :

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_conn = "localhost";
$database_conn = "mi_DB";
$username_conn = "mi_user";
$password_conn = "mi_password";
$conn = mysql_connect($hostname_conn, $username_conn, $password_conn) or die(mysql_error());
mysql_select_db($database_conn, $conn);
?>


Ejemplo del uso de una matriz generada con este script:
Tabla comentarios se compone de los campos: id, fecha, id_usuario, comentario.

Código :

$matrizArticulos = mostrarMatriz('comentarios','id_articulo',$_GET['articulo'],'id','','');
for($i=0; $matrizArticulos[$i] != null; $i++){   
   echo $matrizArticulos[$i]['id']."<br/>".
        $matrizArticulos[$i]['fecha'] ."<br/>".
        $matrizArticulos[$i]['id_usuario']."<br/>".
        $matrizArticulos[$i]['comentario']."<hr/>".
};

Etiquetas php

Comentarios | Enviar un comentario
he Confundido buen dato..... creo

mas que tip yo creo que es una forma de listar el contenido de una tabla
Por: jpcw
Gracias, recién empezaba a fijarme en php y mysql y sus ventajas (soy lento, lo sé...) miau no sabia como hacer eso con matrices, tienes razón, si no lo hicieras así los "niños" (como yo...) harían probablemente travesuras..
Por: CarlosN_blog
Hola, tengo una pregunta:
Por qué esto?:
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
Nunca he ocupado cosas asi en PHP, gracias
Por: Moussa Kandalaf_blog
disculpa eso es solo un comentario Lengua para el caso es solo basura
Por: Inyaka
No es mejor de ademas de pensar solo para mySQL, extenderlo para muchos mas Oracle, DB2, Informix, SQL etc...Por mi parte prefiero pensarlo mas en librerías que traigan formas de usar clases(Sin decir que php es totalmente POO)que me permitan realizar esos controles sin tanto bucle caso Adodb o los que defienden algo con mejor rendimiento PDO, usas trucos parecidos de recorrido con foreach pero que pueda servir para cualquier motor solo basta con cambiar el parámetro.
Por: vavanero_blog
adelante hazlo, la idea base es hacer una función para llenar un array,por lo mismo es mejorable y escalable
Por: Inyaka
Esta muy bien.

Una mejora:
Si en $orden= "ORDER BY $orden DESC"; pones $orden= "ORDER BY $orden"; és más facil ordenar la matriz desde la llamada a la funcion.
Por: Luke_blog
que pasa si quiero hacer un listado peor con varios parametros???????
Por: salvador_blog
<strong>podria enviar un arreglo como parametros</strong>
Por: salvador_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.