PHP - FORMULARIOS

   
Vista:
Imágen de perfil de Robbmejia

FORMULARIOS

Publicado por Robbmejia (26 intervenciones) el 19/09/2013 00:49:36
Hola como están, espero que bien tengo 2 problemas con "FOR" Y "IF" creo se llaman bucles, no los se usar muy bien. Quiero que aya un conteo desde #numero1 y que vayan ascendiendo (un en uno) hasta que llegue al final y imprima la suma de todos los dígitos del primero al ultimo. La idea es se pueda ingresar datos mediante el formulario, estos pueden ser "GET" o "POST"

algo así eJEMPLO:

#INICIAL = 3
#FINAL = 6

3+
4+
5+
6+

suma = 18

Hasta el momento tengo mis códigos así que tendría que cambiar o modificar.
-------------------------------------------------TENGO ESTO HASTA EL MOMENTO---------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<form action="" method="post">
<label>INICIAL:</label><input type="text" name="inicial"><br>
<label>FINAL:</label><input type="text" name="final"><br>
<input type="submit" value="Enviar" name="enviar">
</form>
<br>
<?php
error_reporting(0);
 
$inicial = (isset($_POST['inicial'])?$_POST['inicial']:"0");
$final = (isset($_POST['final'])?$_POST['final']:"0");
$suma = $final($final+1)/2;
 
 
 
if($inicial>0 && $final>=$inicial)
{
	for($i=$inicial;$i<=$final;$i++)
	{
		if($i+$i)
		{
			echo "<br>".$i."+";
		}else{
			echo "<br>".$i."+";
		}
	}
	echo $suma;
}
 
?>

--------------------------------------------------------------------------------------------------------
Este también:
En este caso son valores que se ingresarían:INICIAL, FINAL Y INCREMENTO. Quiero que también imprima desde el inicial y ir ascendiendo según sea el incremento que se pueda dar, hasta llegar al numero final que se ingresara también mediante la casilla del formulario. algo así:

(EJEMPLO)

#INICIAL = 2
#FINAL = 11
#INCREMENTO = 3

2
5
8
11

------------------------------------------------------TENGO ESTO HASTA EL MOMENTO------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<form action="" method="post">
<label>INICIAL:</label><input type="text" name="inicial"><br>
<label>FINAL:</label><input type="text" name="final"><br>
<label>INCREMENTO:</label><input type="text" name="incremento"><br>
<input type="submit" value="Enviar" name="enviar">
</form>
<br>
<?php
error_reporting(0);
 
$inicial = (isset($_POST['inicial'])?$_POST['inicial']:"0");
$final = (isset($_POST['final'])?$_POST['final']:"0");
$incremento = (isset($_POST['incremento'])?$_POST['incremento']:"0");
 
if($inicial>0 && $final >= $i)
{
	for($i=$inicial;$i<=$final;$i+=$incremento)
	{
		if($incremento > $inicial)
		{
			echo "<br>".$inicial;
		}else{
			echo "<br>".$final;
		}
	}
};
 
 
?>

-------------------------------------------------------------------------------------------------------
GRACIAS. SALUDOS.
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
Imágen de perfil de xve

Sumar valores a una variable

Publicado por xve (5515 intervenciones) el 19/09/2013 08:25:13
Hola Roberto o Juan, para sumar valores se hace así:

1
2
3
4
5
6
7
$suma=0;
for($i=0;$i<10;$i++)
{
    echo "<br>".$i;
    $suma+=$i;
}
echo $suma;
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

FORMULARIOS

Publicado por Mari Carmen (145 intervenciones) el 21/09/2013 23:19:39
#Primera, no deberías repetir tantas veces el mismo tema.

#Segundo en el primer if tienes varios errores el primero es que el $inicio puede empezar por 0, el que no tiene que empezar por 0 es el $final por que podemos parir de 0 e ir incrementando.
Lo segundo es que la variable $i no esta definida en el momento en el que ejecutas el if. Debes entender el flujo del código, es código secuencial por lo que si no defines una variable antes, ésta variable no contiene nada. Por lo que el segundo condicional debería ser que solo sea cuando la variable final sea mayor que la inicial.

Debo suponer que sabes como funciona un bucle for. Puedes encontrar información muy detallada de todas las funciones de PHP en la pagina de PHP. Con el bucle for puedes ir a http://www.php.net/manual/es/control-structures.for.php para saber mas de los bucles for.


Aun así te daré una pequeña clase.
El bucle for depende de lo que hay dentro del paréntesis separado por puntos y coma.
Ej: for($i=0;$i<5;$i++){}

Así la primera parte es la definición de variables que serán locales al bucle for (local significa que solo existirán dentro del bucle for) de normal se utiliza $i que viene de incremento, pero puedes usar el nombre de la variable que quieras. Aun que no es necesario siempre se pueden definir mas de una variable local.
Esta primera variable le asignamos un valor, que sera el valor que tomara al inicio del bucle, solo se ejecutara una vez esta parte y solo sera antes de entrar en el bucle.

La segunda parte es el condicional, siempre que se cumpla con un valor verdadero el bucle será repetido. Con el ejemplo anterior mientras $i sea menor que 5 el bucle se repetirá.

La tercera parte es la que se realizara al final de cada iteración, por lo que si ponemos un $i=$i+1 (que no es mas que un $i++ o $i+=1) se incrementara solo una vez. Así que si pones $i=$i+2 (o $i+=2) se incrementara cada vez 2 veces la variable $i.

Bien, dentro del bucle solo podrás utilizar la variable incremental que hayas definido en la primera parte. Así que si usas $i debes seguir usando $i.


#La tercera cosa que quiero apuntar es que no haces el escape de los caracteres especiales, o compruebas que lo que se inserta son números y no letras o un XSS. Además de que aun que PHP no hace mucha distinción en si la variable es de tipo string o int deberías tenerlo mas en cuenta con funciones tipo is_number() o haciendo uso del cast.


Bien sabido esto vamos a remodelar los códigos que tienes, me centrare solo en el código PHP paso del código HTML eso sera otra historia.

Empiezo primero con el segundo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
 
//Si te fijas he quitado los "" del 0 ya que serán números y no strings con lo que trataremos.
$inicial    = (isset($_POST['inicial']   )?$_POST['inicial']   :0);
$final      = (isset($_POST['final']     )?$_POST['final']     :0);
$incremento = (isset($_POST['incremento'])?$_POST['incremento']:0);
 
//Este es el primer error que te comentaba.
if($final>0 && $final>=$inicial)//Antes: if($final>0 && $final>=$i)
{
	/*
	 * Perfecto empecemos con el bucle for. 
	 * Primera parte es la definición de variables.
	 * $i es igual a nuestra variable $inicial. A partir de ahora nuestra variable $i sera
	 * la que se incremente.
	 * 
	 * Segunda parte el condicional.
	 * Siempre que $i sea menor o igual que $final se repetirá el bucle.
	 *
	 * Tercera parte, es el incremento al final de cada iteración.
	 * Cada vez que hagamos una iteración incrementaremos $i el numero
	 * de veces que diga $incremento.
	 * Hasta aquí todo perfecto!
	 */
	for($i=$inicial;$i<=$final;$i+=$incremento)
	{
		//He sacado esta parte del código por que se va a ejecutar siempre.
		echo "<br>";
		/* Aquí es donde tenemos el problema, la variable $incremento siempre sera la misma.
		 * La variable que debiésemos estar usan do es $i ya que es con la que estamos jugando
		 * dentro del bucle.
		 *
		 * Aun así el if en este preciso momento no nos hace falta ya que queremos ver los valores
		 * que van saliendo de incrementar la variable $i. Asi que nos queda el código:
		 */
		 echo "$i";
		 /*Antes:
			if($i//Antes:if($incremento > $inicial)
			{
				echo $inicial;
			}else
			{
				echo $final;
			}
		 */
 
	}
}
 
?>


Sigo con tu primer código. Y tomando prestada la primera parte del que he arreglado ya.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
 
/*
 * No se que pretendes hacer aquí.
 * Si intentas multiplicar, sumar y dividir, la multiplicación se hace con un *
 * Pero aun así siendo pacientes. Si empiezas a sumar... cual sera el resultado
 * de de la suma cuando aun no has sumado el primer elemento? 
 * Si has respondido seguramente sera 0! Exacto cuando no hemos hecho ninguna suma
 * el valor de todas las sumas que hemos hecho es 0. Por lo que empezamos con 0
 */
 $suma=0;//Antes: $suma = $final($final+1)/2;
 
 
if($final>0 && $final>=$inicial)
{
	/* En este parece que lo tienes mas claro.
	 * Variable incremental inicializada con el valor $inical
	 * Condicional de repetición correcto
	 * Condición al final de cada iteración aparentemente correcto.
	 */
	for($i=$inicial;$i<=$final;$i++)
	{
		//Aquí es donde tenemos el problema. De que te sirve el condicional if?
		//No vamos a hacer mas que una suma y guardar los datos por lo que esto es innecesario.
		/*Antes:
			if($i+$i)
			{
				echo "<br>".$i."+";
			}else
			{
				echo "<br>".$i."+";
			}
		*/
		//Visualizamos la salida
		echo "$i+<br>\n";
 
		//Realizamos la suma
		$suma=$suma+$i;
		/*
		 * También se puede escribir:
		 * $suma+=$i;
		 */
 
	}
	//Y cuando terminamos visualizamos el valor de nuestra variable suma.
	echo $suma;
}



PD: Ningún código ha sido probado. Si tiene errores debes saber donde están y resolverlos.
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