Foros del Web » Programando para Internet » PHP »

Problema con un búcle para 2 arrays cada uno a una variable distinta

Estas en el tema de Problema con un búcle para 2 arrays cada uno a una variable distinta en el foro de PHP en Foros del Web. Hola, tengo una duda que me trae de cabeza. Tengo un catalogo de productos alimentado dinámicamente, y generado por un bucle for. Tengo dos variables ...
  #1 (permalink)  
Antiguo 10/09/2011, 09:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Problema con un búcle para 2 arrays cada uno a una variable distinta

Hola, tengo una duda que me trae de cabeza. Tengo un catalogo de productos alimentado dinámicamente, y generado por un bucle for. Tengo dos variables que extraer del mismo con un form, una con un check box y otra hidden. El problema está en que el array para el checkbox funciona perfecto y lo relaciona con el producto correspondiente, sin embargo, la del hidden la interpreta como un orden correlativo, de modo que si selecciono 3 productos diferentes, el primer array lo hace con los productos seleccionados pero el hidden lo hace con los productos 1, 2 y 3. Esto a pesar de que al revisar el código fuente de la página de salida, el value del input hidden es el correcto.

Alguna idea, o si ven algo raro en el bucle que pueda generar este error en la iteración del segundo array¿?

Acoto también que generar 2 bucles diferentes uno para cada variable no funcionó, en la segunda variable la iteración daba como resultado un array de todos los productos y no del seleccionado.

Código PHP:
<div id="shopping-cart"> 
<img src="xxxxxxxxxxxx" width="40" height="40" alt="shopping cart icon" /> <h3>Artículos Seleccionados</h3> 
 
<ul> 
<? 
if (isset($_POST["producto"],$_POST["precio"])) 

$producto $_POST["producto"]; 
$precio $_POST["precio"]; 
for(
$count 0$count sizeof($producto); $count++) 
?>
 
 
<li> 
<? echo $producto[$count]; ?>
 
<? echo $precio[$count]; ?>
 
</li> 
 
<? 


?>
 
 
</ul> 
     
</div> 
     
<form action="catalogo.php" name="pedidos" method="POST" > 
<p class="enunciados">Selecciona todos los artículos que deseas comprar y luego haz click en el botón cotizar</p><input type="submit" value="Cotizar" name="enviar" class="floated-button" /><input type="reset" value="Borrar todo" class="floated-button" /> 
 
<? 
$query2
="SELECT * FROM catalogo ORDER BY id asc"
$resul2=mysql_query($query2); 
$numresults2=mysql_num_rows($resul2); 
?>
 
 
<ul id="catalogo"> 
 
<? 
for ($a=0$a <$numresults2$a++) 
{   
$row2=mysql_fetch_array($resul2); 
?>
    
 
<li class="<? echo ($row2['categoria']);?>"> 
 
<span>
<?   echo ($row2['codigo']).' | '.($row2['categoria']).' <input type="checkbox" name="producto[]" value="'.($row2['codigo']).' '.($row2['nombre']).' '.number_format(($row2['precio']),2,",",".").'" style="float:right; margin-top:0px;"/>'
' <input type="hidden" name="precio[]" value="'.number_format(($row2['precio']),2,",",".").'" />';?>
<br /></span> 
<img src="<? echo ($row2['foto']); ?>" alt="<? echo ($row2['foto_alt']); ?>" /> 
<p><strong>
<? echo ($row2['nombre']); ?>
</strong><br /> 
<? echo '<strong>Modelo:</strong> '.($row2['modelo']); ?>
<br /> 
<? echo '<strong>Marca:</strong> '.($row2['marca']); ?>
<br /> 
<? echo '<strong>Precio:</strong> '.number_format(($row2['precio']),2,",","."); ?>
<br /> 
<? echo '<strong>Descripción:</strong></p>'.'<p style="line-height:1em;">'.($row2['descripcion']).'</p>'?>
 
 
</li> 
     
<? 

?>
 
 
</ul><br /> 
 
<p class="enunciados">Selecciona todos los artículos que deseas comprar y luego haz click en el botón cotizar</p><input type="submit" value="Cotizar" name="enviar" class="floated-button" /><input type="reset" value="Borrar todo" class="floated-button" /> 
</form> 
</div> 
</div>
  #2 (permalink)  
Antiguo 10/09/2011, 10:06
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: Problema con un búcle para 2 arrays cada uno a una variable distinta

Por ahora no te he revisado bn el código pero por lo que he visto por encima, te tengo un par de consejos:

1. Utiliza siempre la etiqueta completa de apertura es decir en vez de "<?", pon "<?php", tener shorttags activado puede ser un problema más adelante
2. NO y NUNCA vuelvas a utilizar etiquetas como <strong>,<center>,<bold>, u otras por el estilo, esta toltamente fuera de uso, mejor utiliza css, lo mismo para el atributo style, utilizalo solo cuando realmente lo requieras, por fuerza mayor... pero trata siempre de utilizar CSS, ya sea en el head del documento o en un archivo externo.

Ahora si revisaré el código para ver cual puede ser el error
  #3 (permalink)  
Antiguo 10/09/2011, 10:19
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: Problema con un búcle para 2 arrays cada uno a una variable distinta

Lo que sucede es que estás confiando en el checkbox para seleccionar el producto, y aunque esto es cierto, solo se envian los checkbox seleccionados, en cambio con los hidden no es así, si un input hidden existe de todos modos se va a enviar, tienes que buscar el modo que solo se envien los datos del producto seleccionad con el checkbox.

Ten en cuenta, si un checkbox no está seleccionado, no se envia, por lo tanto solo aparecen los otros datos, en cambio un hidden siempre se va a enviar. Como te dije, tienes que buscar el modo de que solo se envien los datos, dependiendo del checkbox seleccionado, esto lo podrías hacer por medio de javascript.

O buscar un modo por medio de php de no depender del input type hidden.. puedes enviar los datos al formulario. y que el checkbox sea el unico valor que se envie y sea el id del producto en la base de datos, después solo tienes que volver a extraer los valores de la base de datos, para calcular la cotización.

Etiquetas: arrays, distinta, sql, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:05.