Comunidad de diseño web y desarrollo en internet online

Separando html de php

Citar            
MensajeEscrito el 29 Oct 2010 05:46 am
Buenos días,

Llevo unos días empezando a aprender php+html y estoy con un ejemplo que me trae totalmente de cabeza. Al principio yo mezclaba todo el codigo php y html pero luego vi que lo mejor era separar una cosa de la otra. Total que prové con este ejemplo pero no hay manera de que me funcione. El resultado sólo me muestra el último registro de la base de datos y no todos.

Os paso el código a ver si alguien me puede echar un cable. Llevo días batallando y no he conseguido nada y estoy desesperado...

tengo 2 ficheros uno php: carga_productos.php
<? echo "cargando datos..";
include('includes/conexion_carrito.php');
function obtener_productos(){
echo "carga funcion";
$link = Conectarse();
echo "antes de la consulta";
$sql = "SELECT * FROM products";
$recordset = mysql_query($sql) or die('Invalid query: ' . mysql_error());
echo "realiza consulta";
$resultado=array();
$i=0;
while ($fila = mysql_fetch_array($recordset))
{
$resultado[$i]['products_image']=$fila['products_image'];
$resultado[$i]['products_id']=$fila['products_id'];

}
return $resultado;

}
?>

y el otro fichero html
productos.html

<div id="visor_beta">
<? include ("datos/carga_productos.php");
$lista = obtener_productos();

?>
<table>
<?
foreach ($lista as $l){
?>
<tr>
<td><? echo $l['products_image']?></td>
<td><? echo $l['products_id']?></td>
<tr>
<?
}
?>
</table>
</div>

Muchas gracias a todos por adelantado...!

Por nigori13

10 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Oct 2010 12:04 pm
No estás aumentando el índice del array $resultado dentro del ciclo while.

Código PHP :

$i=0;
while ($fila = mysql_fetch_array($recordset))
{ 
$resultado[$i]['products_image']=$fila['products_image'];
$resultado[$i]['products_id']=$fila['products_id'];
$i++;
}


Por otro lado debo aconsejarte lo siguiente: no uses tags PHP cortos, siempre usa los largos <?php ... ?>. No todos los servidores de hosting aceptan el tag corto pero todos aceptan el largo.
Una cosa más. Cuando recorres el resultado del query no estás contemplando la posibilidad que regrese un conjunto vacío, en tu lugar habría hecho algo como esto:

Código PHP :

$i=0;
if ($fila = mysql_fetch_array($recordset)) {
 do {
   $resultado[$i]['products_image']=$fila['products_image'];
   $resultado[$i]['products_id']=$fila['products_id'];
   $i++;
  } while ($fila = mysql_fetch_array($recordset));
} // if


Y luego en el HTML:

Código PHP :

if (count($lista) > 0) {
// mostrar la tabla...
} else { echo "La consulta devolvió un resultado vacío."; }


Saludos...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Oct 2010 12:12 pm
Muchísimas gracias!! Era lo del incremento efectivamente ha ido a la primera.

También darte las gracias por los consejos los voy aplicar des de ya y gracias también por la rápida respuesta!

Por nigori13

10 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Oct 2010 08:04 pm

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.