Foros del Web » Programando para Internet » PHP »

Bucle For dentro de Array y Array dectro de Select

Estas en el tema de Bucle For dentro de Array y Array dectro de Select en el foro de PHP en Foros del Web. Hola a todos me gustaría saber si me pueden ayudar con dos consultas Primero que nada saludos a todos, estoy empezando a programar con php ...
  #1 (permalink)  
Antiguo 10/11/2006, 20:29
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 17 años, 6 meses
Puntos: 2
Bucle For dentro de Array y Array dectro de Select

Hola a todos me gustaría saber si me pueden ayudar con dos consultas

Primero que nada saludos a todos, estoy empezando a programar con php ya tengo un mes de estar leyendo y leyendo así cualquier recomendación o critica bienvenida sea.



La primera Si tengo un bucle for que me tira los números del 1 al 100 en el ejemplo del código los tengo del 1 al 5 lo que no se hacer es atrapar los numero dentro de un array.

La segunda es en el caso de que la primera no se pueda hacer y tenga que hacer el array manual; ya se como introducir el array (matriz) dentro de un menú select o mejor dicho como puedo validar que una variable x sea igual a la opción 1 del select

En el código yo lo pude hacer pero con una caja de texto que llame "v" y lo valide por medio de un if, pero con el select no se como hacerlo.

Ya intente agregándole [] al nombre del select y solo puedo imprimir la variable no la puedo validar; lo se ve en el código, trate de inventar para ver si funcionaba pero no funciono.

Espero haberme explicado y que me pueden ayudar Gracias.

Un ejemplo del select esta aquí




si damos clic donde dice beneficios muestra una calculadora ahi esta el select

Codigo Fuente


<?php $matriz = array(1, 2, 3, 4, 5);?>


<form>
Valor <input name="v" type="text" />
<select name=<?php $matriz; ?> >
<!-- Aqui cree la Lista/menu y le asigne el valor de la matriz -->
<option><?php $matriz[0]; echo $matriz[0]; ?> </option>
<option><?php $matriz[1]; echo $matriz[1]; ?> </option>
<option><?php $matriz[2]; echo $matriz[2]; ?> </option>
<option><?php $matriz[3]; echo $matriz[3]; ?> </option>
<option><?php $matriz[4]; echo $matriz[4]; ?> </option>
</select>

<?php
echo "<br>";
echo "<br>";
print_r ($matriz);
echo "<br>";
//----------- Aqui Valido dependiendo del valor de la caja de texto "v" ----//
if ($v<= $matriz[0])
{
$a=20;
echo $a;
}
else if($v > $matriz[0])
{
$a=10;
echo $a;
}
//------------------------------------------------------------------------//

// -------------- Numeros Para el Arreglo por metodo For ----------------------------//

echo "<br>";
echo "<br>";
for($i=1; $i<6; $i++)
{
$mat = array($i);
print_r ($mat);
/* lo malo es que cuando imprimo $mat me da esto ---> Array ( [0] => 1 ) Array ( [0] => 2 ) Array ( [0] => 3 ) Array ( [0] => 4 ) Array ( [0] => 5 )
*/
}
// --------------------------------------------------------------------------------//
?>
</br>
<br />
<br />

<input type="submit" value="enviar">
</form>
  #2 (permalink)  
Antiguo 10/11/2006, 22:40
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Cita:
La primera Si tengo un bucle for que me tira los números del 1 al 100 en el ejemplo del código los tengo del 1 al 5 lo que no se hacer es atrapar los numero dentro de un array.
¿entonces lo que querés es crear una matriz que contenga números, por ejemplo, del 1 al 100 en cada una de sus entradas?

Código PHP:
$mat = array($i); 
¿por qué no funciona? porque cada vez que llegás a esa parte en el for, estás redefiniendo $mat como una matriz con un solo elemento ($i)
En vez de agregar, le das a $mat un nuevo valor.
La forma correcta sería declarar a $mat como una matriz vacía ( $mat = array() ) y luego dentro del for usar:

$mat[count($mat)] = $i;

Dado que a menos que se indique lo contrario los índices de la matriz comienzan en cero, y que count devuelve la cantidad de elementos en la matriz (lo que resulta en que count($mat) devuelve (mayor índice de $mat + 1) ), te asegurás que la matriz se vaya "llenando" sin borrar elementos anteriores.

Para obtener el valor seleccionado en una lista, lo mejor es armar correctamente la lista:
Código:
<select name="nombre">
<option value="valor que se envia si se selecciona esta entrada">Texto que se muestra en la lista</option>
</select>
Ahora, al enviar el formulario, tendrás en $_POST (o $_GET, según el método del formulario):
$_POST['nombre'] = "valor que se envia si se selecciona esta entrada";

Si lo que querés es mostrar datos previamente seleccionados, y premarcar en la lista los datos que tenés guardados, lo que tenés que hacer es simplemente agregar 'selected="selected"' al <option> correspondiente. Esto se puede hacer fácilmente con if.

Espero haberte ayudado.

Saludos y suerte.
  #3 (permalink)  
Antiguo 11/11/2006, 16:09
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 17 años, 6 meses
Puntos: 2
Gracias

Muchas Gracias por responder...

Ya lo pude validar fácilmente con el "if " y ya casi funciona a la perfección
Solamente me quedan ciertos detalles como mostrar por ejemplo si un valor me da como resultado a 100 que se muestre100.00 si me da a 150.5 se muestre 150.50 con eso ya termino mi calculadora de envio
  #4 (permalink)  
Antiguo 11/11/2006, 18:29
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Cita:
Iniciado por alvlin Ver Mensaje
La forma correcta sería declarar a $mat como una matriz vacía ( $mat = array() ) y luego dentro del for usar:

$mat[count($mat)] = $i;

Dado que a menos que se indique lo contrario los índices de la matriz comienzan en cero, y que count devuelve la cantidad de elementos en la matriz (lo que resulta en que count($mat) devuelve (mayor índice de $mat + 1) ), te asegurás que la matriz se vaya "llenando" sin borrar elementos anteriores.
Para añadir un elemento al final de una matriz puedes hacerlo de una forma más sencilla y rápida:

$mat[] = $i;

De este modo te agrega el valor de $i al final de la matriz sin tener que llamar a ninguna función ni nada parecido. También puedes hacerlo con array_push(), pero verás que en la página del manual indican que lo anterior es equivalente.
  #5 (permalink)  
Antiguo 11/11/2006, 21:01
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Cita:
si un valor me da como resultado a 100 que se muestre100.00 si me da a 150.5 se muestre 150.50 con eso ya termino mi calculadora de envio
number_format

Cita:
$mat[] = $i;
Costumbres que uno adquiere por no leer en detalle y rebuscarse para solucionar las cosas
Nunca usé esta forma, pero claro, es más rápida y sencilla....
Tomo nota


Saludos.
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 14:04.