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.
- conn/conn.php = este es el archivo donde están los datos de la conexión a tu DB.
- $tabla = nombre de la tabla que quieres mostrar.
- $campoCondicional = cuando quieres que los resultados sean condicionados a que un campo tenga determinado valor.
- $campoValor = el valor del campo condicional
- $orden = ordenar los resultados por este determinado campo
- $inicio = cuando quieras mostrar determinada cantidad de resultados, marcas el inicio
- $cantidad = aca marcas el termino.
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/>".
};

mas que tip yo creo que es una forma de listar el contenido de una tabla
Por CarlosN el 19 de Julio de 2007
Por Moussa Kandalaf el 22 de Julio de 2007
Por qué esto?:
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
Nunca he ocupado cosas asi en PHP, gracias
Por vavanero el 22 de Julio de 2007
Por Luke el 16 de Octubre de 2007
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 salvador el 14 de Febrero de 2008
Por salvador el 14 de Febrero de 2008
Por charlie el 16 de Abril de 2009
¿quien te dijo que php-nuke es un lenguaje?
jovencito estas algo perdido
Por Matias el 29 de Mayo de 2009
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?
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 Sara el 25 de Marzo de 2010
indiquemen eso, he probado el codigo pero no sale.
gracias
for($i=0;$fila= mysql_fetch_assoc($matriz_db); $i++) {
for($a= 0;$a<mysql_num_fields($matriz_db);$a++){
Por Adriana el 29 de Junio de 2010
Por mary el 16 de Diciembre de 2010
Gracias si al menos leen esto, pero necesito esto urgente, he probado con varios métodos y nada me funciona
Código :
<?php include("conn/conn.php"); function mostrarMatriz($sql,$object=false) { $matriz_db = mysql_query($sql, $conn) or die(mysql_error()); foreach(mysql_fetch_assoc($matriz_db) as $fila) { for($a= 0;$a<mysql_num_fields($matriz_db);$a++){ $campo = mysql_field_name($matriz_db,$a); $retorno[$i][$campo] = $fila[$campo]; } }; return ($object)? (object) $retorno : $retorno; }esto es una sintaxis abreviada de if else
return ($object)? (object) $retorno : $retorno;
y cuando quiero transformar un array en objeto basta con anteponer (object) al array
recuerden que para imprimir un array y ver que contiene basta con usar print_r($array)
Por tooomas el 28 de Abril de 2011
Por halguien el 12 de Mayo de 2011
yo tengo una cosa que encontre por ahi pero en vez de mostrar una matriz toma datito por datito y me estoy volviendo loco... me gustaria muscho poder usar este ejemplo en su lugar, me parece mucho mas simple pero no logro darme cuenta como utilizarlo con mi caso, a lo mejor teniendo un ejemplo de la db y toqueteando un rato el ejemplo que das me logro dar cuenta de como cambiar el mio para que ande mejor
gracias de antemano amigo!!
saludos y suerte!!
Por Jei el 09 de Junio de 2011
"Fatal error: Call to undefined function mostrarMatriz() in E:\wamp\www\conn.php"