PHP - No lo entiendo

   
Vista:

No lo entiendo

Publicado por Eriotza (30 intervenciones) el 07/11/2007 17:28:46
Hace unos días envie esta consulta:

"Estoy haciendo una pagina de distintos productos y en la pagina principal hago un llamamiento para poner la cantidad de distintos productos que tengo.

mysql_select_db($database_conectar, $conectar);
$query_producto = "SELECT * FROM producto WHERE id_sector = 1";
$producto = mysql_query($query_producto, $conectar) or die(mysql_error());
$row_producto= mysql_fetch_assoc($producto);
$totalRows_producto = mysql_num_rows($producto);

El problema es que tengo 21 sectores y tengo que hacer 21 llamamientos como el de arriba, con lo que me genera mucho codigo.
¿Hay alguna forma de reducir el codigo y que me funcione?"

Y me respondieron esto:

"podrias usar una consulta como:
'SELECT COUNT(id) FROM productos Group By id_sector"
lo que estas haciendo es que la base de datos te devuelva la cantidad de campos agrupados por id_sector"

He intentado hacerlo pero no lo entiendo, ¿Alguien puede ayudarme?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No lo entiendo

Publicado por Matias (2 intervenciones) el 07/11/2007 17:45:42
lo ke podrias hacer es una funcion ke le des una variable en true como paramentro, verifike si es verdadera y haga las consulta, ke te devuelva con return el array ke necesitas usar o la info ke necesitas y al final vacie las variables con los nambre y el contenido en false....
espero ke te sirva... saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No lo entiendo

Publicado por Eriotza (30 intervenciones) el 07/11/2007 18:14:16
Podrias expicarlo mejor mediante un ejemplo?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No lo entiendo

Publicado por JM (48 intervenciones) el 08/11/2007 11:34:26
Yo haría lo siguiente:

Priemero, seleccionaria todos los productos:

mysql_select_db($database_conectar, $conectar);
$query_producto = "SELECT * FROM producto";
$producto = mysql_query($query_producto, $conectar) or die(mysql_error());

Después los guardaría en un array donde el índice sea el selector del producto:

while ($row_producto= mysql_fetch_assoc($producto))
{
$array_productos[$producto['sector ']] = $row_producto;
}

Una vez hecho esto, cuando quieras acceder a los productos lo haces desde la array:

//Selector = 1
$array_productos[1];

//Selector = 2
$array_productos[2];

etc.

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No lo entiendo

Publicado por Eriotza (30 intervenciones) el 09/11/2007 12:18:09
Lo he intentado de distintas formas pero no me sale (es la primera vez que utilizo arrays). No consigo sacar los TotalRows de cada producto, ni siquiera se si hago bien los echo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No lo entiendo

Publicado por JM (48 intervenciones) el 09/11/2007 13:06:32
¿Como lo has puesto?

Pega un poco de código a ver si veo algo mal.

Por otra parte, los echo solo sirven para cadenas.

Tienes que utilizar el print_r (http://es.php.net/manual/es/function.print-r.php) para visualizar los arrays.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No lo entiendo

Publicado por Eriotza (30 intervenciones) el 09/11/2007 17:04:47
mysql_select_db($database_konektatu, $konektatu);
$query_producto = "SELECT * FROM producto WHERE activo=1";
$producto = mysql_query($query_producto, $konektatu) or die(mysql_error());

while ($row_producto= mysql_fetch_assoc($producto))
{
$array_producto[$producto['id_sector']] = $row_producto;
$total_array_producto[$producto['id_sector']] = mysql_num_rows($producto);
}

Luego

$total=$total_array_producto[1]
print_($total)
Y deberia darme la cantidad total del sector 1

La verdad no entiendo mucho esto del array
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No lo entiendo

Publicado por JM (48 intervenciones) el 12/11/2007 11:59:26
No se si aún estoy a tiempo de contestarte pero...

A ver, para empezar, estás seleccionando solo el del selector 1. Yo lo que te comentava es que los seleccionaras todos. (nose si esto lo has hecho como una prueba...)

Después, una vez dentro del while, lo que haces primero está bien ($array_producto[$producto['id_sector']] = $row_producto; ) pero lo que haces después ($total_array_producto[$producto['id_sector']] = mysql_num_rows($producto);) no, Bueno, de hecho no se que intentas hacer con esa asignación. Quizás lo has puesto por algo que no se y sí que está bien.

Cuando haces mysql_num_rows($producto); , lo que estás guardando es el número de resultados, es decir un 1, por lo que al hacer el print_($total) te estará mostrando 1

Para ver el contenido de la llamada sql, deberías de hacer esto al final:

$total=$array_producto[1];
print_($total);

Para ver más información sobre arrays, visita esta página:

http://es2.php.net/manual/es/function.array.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No lo entiendo

Publicado por Eriotza (30 intervenciones) el 12/11/2007 18:17:16
Lo he hecho como me dices y no funciona

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar