Foros del Web » Programando para Internet » PHP »

Problema, el codigo se hace demasiado largo si no automatizo esto

Estas en el tema de Problema, el codigo se hace demasiado largo si no automatizo esto en el foro de PHP en Foros del Web. Hola a tod@s! Estoy terminando una web y me estoy encontrando con un problema ahora. Practicamente esta web genera cada pagina que se carga, por ...
  #1 (permalink)  
Antiguo 24/09/2011, 11:54
 
Fecha de Ingreso: mayo-2004
Mensajes: 102
Antigüedad: 19 años, 11 meses
Puntos: 5
Pregunta Problema, el codigo se hace demasiado largo si no automatizo esto

Hola a tod@s!

Estoy terminando una web y me estoy encontrando con un problema ahora.
Practicamente esta web genera cada pagina que se carga, por lo cual algunas partes tienen 10 input con el mismo nombre y continuan con 0,1,2 etc y otras tienen 2 input.
Entonces abajo he puesto un boton, con el cual las personas podrian seleccionar sobre lo que desean solicitar mas informacion y me envia un email y se agrega a la base de datos, entonces practicamente el codigo comprueba si el select numero de estudiantes es diferente a 0 genera una parte de ese email que seria todo lo que esta dentro del div0 y todos sus input,text etc tienen un nombre y el 0 al final, entones que pasa hay pagina que tienen 30 divs con numeros por lo cual tendria que hacer 30 div, comprobando uno por uno el codigo para un div, para recibir los datos de ese, digamos... es este:

Código PHP:
if ($_POST['numberstudent0']!='0' && $_POST['number_weeks0']!='0'){
    if(
$_POST['numberstudent0']=='1'){
    
$preciototalporpersona $_POST['material0']+$_POST['taxfee0']+$_POST['number_weeks0'];
    
$curso "Curso:<br />
    "
.$_POST['nombre_curso0']."<br />
    Fecha de inicio:"
.$fecha_inicio."<br />
    Numero de semanas:"
.$_POST['numero_de_semanas0']."<br />
    Tasa Administrativa:"
.number_format($_POST['taxfee0'],2,',','.').$moneda."<br />
    Precio material didactico:"
.number_format($_POST['material0'],2,',','.').$moneda."<br />
    Precio solo curso:"
.number_format($_POST['number_weeks0'],2,',','.').$moneda."<br />
    Precio total:"
.number_format($preciototalporpersona,2,',','.').$moneda."<br />";
    }else{
     
$preciototalporpersona $_POST['material0']+$_POST['taxfee0']+$_POST['number_weeks0'];
    
$totalcursos $preciototalporpersona*$_POST['numberstudent0'];
    
$curso "Curso:<br />
    "
.$_POST['nombre_curso0']."<br />
    Fecha de inicio:"
.$fecha_inicio."<br />
    Numero de semanas:"
.$_POST['numero_de_semanas0']."<br />
    Numero de estudiantes:"
.$_POST['numberstudent0']."<br />
    Tasa Administrativa:"
.number_format($_POST['taxfee0'],2,',','.').$moneda."<br />
    Precio material didactico:"
.number_format($_POST['material0'],2,',','.').$moneda."<br />
    Precio solo curso:"
.number_format($_POST['number_weeks0'],2,',','.').$moneda."<br />
    Precio total por persona:"
.number_format($preciototalporpersona,2,',','.').$moneda."<br />
    Precio total para "
.$_POST['numberstudent0']." estudiantes:".number_format($totalcursos,2,',','.').$moneda;
  }} 
Entonces para hacerlo con el div1 tendria que cambiar todos los 0 que hay en este codigo por 1 y asi sucesivamente. Estoy seguro que debe haber alguna manera de hacer un bucle con For ++i, y sustituir el numero 0 por esa i, y asi automaticamente ira comprobando si existe eso. Lo unico no se como hacerlo ya que nunca supe como utilizar el for, muchas veces he logrado utilizarlo pero nunca he entendido la logica, alguien me podria hechar un cable??
Muchisimas gracias!
__________________
Bruno Quintana
  #2 (permalink)  
Antiguo 24/09/2011, 12:28
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problema, el codigo se hace demasiado largo si no automatizo esto

Hola,

Espero poder ayudarte a entender el for. No te preocupes, al principio es normal que pueda resultar confuso.

Básicamente un for tiene tres elementos:

A. Se indica en que número empezará el indice, normalmente, $i = 0 ( índice igual a 0 )
B. La condición que se tiene que cumplir para que el bucle continue, normalmente, mientras el indice sea menor o igual a un determinado número, por ejemplo $i <= 9, que serían 10 vueltas, teniendo en cuenta que empezamos por 0. En este apartado se pueden colocar más de una condición, por ejemplo $i <= 9 and $continuar == TRUE, se suele hacer cuando buscamos un elemento en concreto dentro del bucle que no sabemos si esta en un determinado estado, y damos por hecho que se repetirá alguna vez y no es necesario recorrer todo el bucle.

C. Y por último, la acción a realizar tras cada vuelta, normalmente $i++, que sería aumentar en 1 la cantidad actual del indice.

No se si estará claro, lo he puesto con mis palabras, un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #3 (permalink)  
Antiguo 25/09/2011, 02:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 102
Antigüedad: 19 años, 11 meses
Puntos: 5
Exclamación Respuesta: Problema, el codigo se hace demasiado largo si no automatizo esto

Muchas gracias miktrv, pero he estado probando y no se como hacer para que funcione he hecho esta prueba pero nada, osea bueno primero con la condicion distinto a 0, me dio mas o menos un millon de resultados, jeje.

Mira a ver como lo aplicarias aqui:
Código PHP:
<form action="bucle_borrar_depois.php" method="post">


<input name="numberstudent1" type="text" value="1" />


<input name="Submit" type="submit" /></form>
<?PHP 

 
for($i 0$_POST['numberstudent+$i']>='0' $i ++) echo $i "\n";  
?>
Practicamente mi primera condicion para el codigo que necesito es que el numero de estudiantes sea distinto a 0 o mayor a 0, lo mismo da.
Y ahi ir comprobando todos los select que en la web son diferentes a 0 y dentro de ese bucle iran otros mas.

Espero que alguien pueda ayudar, muchas gracias! :)
__________________
Bruno Quintana
  #4 (permalink)  
Antiguo 25/09/2011, 03:20
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problema, el codigo se hace demasiado largo si no automatizo esto

Hola buenas,

No entiendo muy bien que es lo que quieres hacer. En primer lugar, es mejor que todo lo que te venga por post, get, o session, lo valides antes de trabajar con el, y si puede ser, lo pases a una variable.

Por ejemplo:

Código PHP:
//primero le doy un valor..
$numero  0;

if(isset(
$_POST['mi_variable']) and is_numeric($_POST['mi_variable'])) {

$numero $_POST['mi_variable'];

}

//bucle

for($i 0$i<= $numero$i++) {

echo 
$i '<br />';


Prueba eso.. no se si es lo que quieres..

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo

Etiquetas: bucle
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 11:10.