¿Quieres registrarte?

Mostrar un Array de una base de datos MySQL con PHP

Por: Inyaka
18 de Julio del 2007
2132 de clabLevel
Otros artículos de Inyaka
24,924 visitas
php

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/>".
};

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas php

Comentarios | Enviar un comentario
he :? 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é...) ^^ 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 :P 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
veo que la creacion de base de datos es reeedura ¿ es mejor php nuke? a-2charlie@hotmail.com soy un nuevo en esto de las paginas web con base de datos y el manejo de mysql y ps... quiciera aprender un poco en especia php nuke por que me han hablado muchas maravillas de el
Por: charlie-blog
php-nuke apesta ¿que tiene que ver un cms con aprender a conectarse a una DB ?

¿quien te dijo que php-nuke es un lenguaje?

jovencito estas algo perdido :P
Por: Inyaka
Che sabes que el codigo intento usarlo y no me funciona :\

primero me decia que la variabla $retorno no existia, la inicializé como un array vvacio y ahora me tira el siguiente error:

Notice: Undefined offset: 0 in C:\wamp\www\preview\noticias.php on line 215

en la linea 215 tengo esto:

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/>";
}


me podrás dar una mano?
Por: Matias-blog
la consulta quizas te arroja 0 resultados y por eso se cae el script, prueba si la consulta da resultados, agrega 1 resultado para ver que pasa ahora con el script, luego debieras validar que exista al menos un resultado

Código :

// count cuenta las columnas si da 0 esto es tomado como false
if(count($matrizArticulos)){
    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/>";
    }
}

Por: Inyaka
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.