Foros del Web » Programando para Internet » PHP »

Es correcto esto...foreach+array

Estas en el tema de Es correcto esto...foreach+array en el foro de PHP en Foros del Web. Hola amigos, por favor quisiera pedirles su orientacion en el sgte tema: tengo un array: $tallaD=array('1','2','3','4','5'); el cual tiene las numeros de tallas de la ...
  #1 (permalink)  
Antiguo 17/04/2009, 09:02
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Es correcto esto...foreach+array

Hola amigos,
por favor quisiera pedirles su orientacion en el sgte tema:
tengo un array:
$tallaD=array('1','2','3','4','5'); el cual tiene las numeros de tallas de la categoriaD
Código php:
Ver original
  1. $tallaD=array('1','2','3','4','5');
  2. foreach($carro as $k => $v){
  3.     $contador++;
  4.   ?>
  5. <tr>
  6.     <td height="35" align="center"><?php echo $v['id'] ?></td>
  7.     <td height="35" align="center"><?php echo $v['producto'] ?></td>
  8.     <td><select name="talla[]">
  9.         <?php
  10.         foreach($tallaD as $val1){
  11.         ?>
  12.         <option value="<?php echo $val1 ?>"><?php echo $val1 ?></option>
  13.         <?php
  14.         }
  15.         ?>
  16.         </select>
  17.     </td>
y con este codigo muestro en el select option las tallas SOLO de la categoria D
Bien todo oka hasta ahora, pero tengo la necesidad de añadir otra categoria de nombre V...
entonces creo un array $tallaV=array('100','101','102')
adaptandolo el codigo es el sgte:
Código php:
Ver original
  1. $tallaD=array('1','2','3','4','5');
  2. $tallaV=array('100','101','102');
  3. foreach($carro as $k => $v){
  4.     $contador++;
  5.   ?>
  6. <tr>
  7.     <td height="35" align="center"><?php echo $v['id'] ?></td>
  8.     <td height="35" align="center"><?php echo $v['producto'] ?></td>
  9.     <td><select name="talla[]">
  10.         <?php
  11.         foreach(if($v['categ']=='D'){ echo $tallaD; }elseif($v['categ']=='V'){ echo $tallaV; }else{ echo $tallaO; } as $val1){
  12.         ?>
  13.         <option value="<?php echo $val1 ?>"><?php echo $val1 ?></option>
  14.         <?php
  15.         }
  16.         ?>
  17.         </select>
  18.     </td>
Pero me sale la pagina en blanco, no entiendo quizas esta mal implementado el codigo dentro del bucle...no logro darlo con la solucion...por favor si me podrian ayudar...gracias.
  #2 (permalink)  
Antiguo 17/04/2009, 09:14
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Es correcto esto...foreach+array

Cita:
Iniciado por hoberwilly Ver Mensaje
Código php:
Ver original
  1. $tallaD=array('1','2','3','4','5');
  2. $tallaV=array('100','101','102');
  3. foreach($carro as $k => $v){
  4.     $contador++;
  5.   ?>
  6. <tr>
  7.     <td height="35" align="center"><?php echo $v['id'] ?></td>
  8.     <td height="35" align="center"><?php echo $v['producto'] ?></td>
  9.     <td><select name="talla[]">
  10.         <?php
  11.         foreach(if($v['categ']=='D'){ echo $tallaD; }elseif($v['categ']=='V'){ echo $tallaV; }else{ echo $tallaO; } as $val1){
  12.         ?>
  13.         <option value="<?php echo $val1 ?>"><?php echo $val1 ?></option>
  14.         <?php
  15.         }
  16.         ?>
  17.         </select>
  18.     </td>
Pero me sale la pagina en blanco, no entiendo quizas esta mal implementado el codigo dentro del bucle...no logro darlo con la solucion...por favor si me podrian ayudar...gracias.
si le quitas los echo en los ifs
  #3 (permalink)  
Antiguo 17/04/2009, 09:16
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Es correcto esto...foreach+array

foreach(if($v['categ']=='D'){ ... ¡no puedes hacer eso!, luego un echo....

En todo caso:
Código php:
Ver original
  1. if ($valorDeCategoria = 'algo') {
  2.     $categoria = $arrayDeCategoriaAlgo;
  3. } else if ($valorDeCategoria = 'otroAlgo') {
  4.     $categoria = $arrayDeCategoriaOtroAlgo;
  5. }
  6.  
  7. foreach($categoria as $k => $v) {
  8.     // ....
  9. }

Que hay mucho mejores maneras .. pero para no irnos lejos. Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 17/04/2009, 10:22
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Es correcto esto...foreach+array

Gracias jam1138, funciona perfectamente segun lo sugerido
Código php:
Ver original
  1. <td><select name="talla[]">
  2.         <?php
  3.         if($v['categ']=="D"){
  4.             $categoria=$tallaD;
  5.         }elseif($v['categ']=="N"){
  6.             $categoria=$tallaN;
  7.         }
  8.         foreach($categoria as $val1){
  9.         ?>
...solo k se me ha complicado un poquito k no logro darle con la solucion debido a k para el codigo inicial con solo una categoria ($tallD) en el option me funcionaba:
Código php:
Ver original
  1. <option value="<?php echo $val1 ?>" <?php if($v['talla']==$val1) echo 'selected="selected"'; ?>><?php echo $val1 ?></option>
Me imagino k el selected busca si coincide el campo talla ($v[talla]) con el array ($val1)...pero ahora estamos agregando categoria¿¿¿???cosa k se cruzan los datos ???
K debo modificar...gracias.
  #5 (permalink)  
Antiguo 17/04/2009, 11:01
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Es correcto esto...foreach+array

... ajá .... ¿y por qué no te funciona? , ¿da algún error?, ¿cuál?, ¿se muestra la página en blanco? ... ¿qué en particular no funciona?.

Lo único que estás haciendo es especificando qué array haz de utilizar, dentro del bucle comparas el valor de un elemento de un array ($v['talla']) con el elemento actual dentro del bucle ($val1) ... no haces nada que no hubieras hecho ya.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 17/04/2009, 12:03
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Es correcto esto...foreach+array

Oka jam1138, el codigo va bien cuando realizo la consulta ...pero al momento de actualizar los datos (como es tallas, cantidades de los productos agregados al carrito) intento me visualize con el atributo selected el dato actualizado para cada talla con respecto a la categoria...
pero el select option me muestra en blanco como k no tuviera datos¿¿¿???

Gracias de antemnao,
  #7 (permalink)  
Antiguo 17/04/2009, 12:38
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Es correcto esto...foreach+array

Cita:
Iniciado por hoberwilly Ver Mensaje
pero el select option me muestra en blanco como k no tuviera datos¿¿¿???
¡Quizá no los tenga! , ¿lo haz planteado?

No somos adivinos. No sé qué hagas con eso, no hables de "tallas" y no-se-que-más. ¿es un carrito de compra?, mira, no lo sabía, como sea, es irrelevante.

Lo que haces ahí (lo que haz mostrado hasta ahora) es primero definir un array e iterar con él para crear un listbox. Con el if agregado no haces más que seleccionar con qué array vaz a iterar, por lo demás debería ser lo mismo.

Sea cual sea tu problema, ¿antes funcionaba y después del "if" no?. Si tu problema son con los valores con los que iteras y se comparan, ¿haz verificado sean éstos los correctos?.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 17/04/2009, 13:21
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Es correcto esto...foreach+array

A ver espero con esto me puedas entender y ayudarme en mi problema:
Parte de este codigo se llama vercarrito.php
Código php:
Ver original
  1. <table width="95%" border="0" cellspacing="1" cellpadding="2" align="center">
  2. <form name="form" method="post" action="accionCarrito.php">
  3. $tallaD=array('34','35','36','37','38','39');
  4.   $tallaN=array('23','24','25');
  5.   foreach($carro as $k => $v){
  6.     $contador++;
  7.   ?>
  8. <tr>
  9.     <td height="35" align="center"><?php echo $v['id'] ?></td>
  10.     <?php
  11.     }
  12.     ?>
  13.     <td><select name="talla[]">
  14.         <?php
  15.         if($v['categ']=="D"){
  16.             $categoria=$tallaD;
  17.         }elseif($v['categ']=="N"){
  18.             $categoria=$tallaN;
  19.         }
  20.         foreach($categoria as $val1){
  21.         ?>
  22.         <option value="<?php echo $val1 ?>" <?php if($v['talla']==$val1) echo 'selected="selected"'; ?>><?php echo $val1 ?></option>
  23.         <?php
  24.         }
  25.         ?>
  26.         </select>
  27.     </td>
  28. <input type="text" name="cantidad[]" value="<?php echo $v['cantidad'] ?>"> ...</form>
el cual visualiza el carrito y da la opcion al usuario de ingresar la cantidad de o de los productos en el carrito visto.
Tambien existe una pagina que actualiza los datos que ingresa el usuario con agregacarrito.php:
Código php:
Ver original
  1. <?php
  2. if(isset($_SESSION['carro']))
  3.     $carro=$_SESSION['carro'];
  4. include('conec.php');
  5. conectarse();
  6. $cantidad=$_POST['cantidad'];
  7. $id=$_POST['id'];
  8. $talla=$_POST['talla'];
  9. $arrId=implode(", ",$id);
  10. $carro[md5($id)]=array(
  11.         'id'=>$id,
  12.         'talla'=>$talla,
  13.         'cantidad'=>$cantidad
  14.     );
  15. }
  16. $_SESSION['carro']=$carro;
  17. header("Location:vercarrito.php".SID);
  18. return;
  19. ?>
Aqui esta el problema cuando regresa a la pagina vercarrito.php, la finalidad es que en el select option ya tenga por defecto el valor guardado en el array carro($carro) del campo talla
Código php:
Ver original
  1. <option value="<?php echo $val1 ?>" <?php if($v['talla']==$val1) echo 'selected="selected"'; ?>><?php echo $val1 ?></option>
es preciso señalar k cuando tenia UN SOLO array $tallaD funcionaba correctamente...pero ahora k se implemento el SEGUNDO array $tallaN el select me muestra en blanco, como k no tuviese datos...y esto es falso.

Gracias de antemano,

p.d. espero haber sido claro a las consultas realizadas
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 07:23.