Foros del Web » Programando para Internet » PHP »

Ayuda Urgente

Estas en el tema de Ayuda Urgente en el foro de PHP en Foros del Web. Hola foreros, necesito me hechen una mano en un trabajo que tengo que terminar hoy. La cosa es asi, estoy armando un formulario para calcular ...
  #1 (permalink)  
Antiguo 07/02/2011, 11:17
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Ayuda Urgente

Hola foreros, necesito me hechen una mano en un trabajo que tengo que terminar hoy.
La cosa es asi, estoy armando un formulario para calcular determinados patrones de salud en chicos, y se les pregunta a los padres 3 cosas: sexo del chico, edad, y altura en un form que tiene una funcion jscript que lo que hace es poner un boton de agregar chico para insertar en el formulario un hijo mas.
La cosa es que el jscript este lo que hace es agregar un _xx (numero) consecutivo por cada chico que tiene la familia
y en la pagina de procesamiento del formulario tengo que hacer unas cuentas con las variables que llegan que son


Para el primer hijo: sexo edad altura
Para el segundo: sexo_1 edad_1 elatura_1
para el tercero: sexo_2 edad_2 altura_2

La cosa es que no tengo forma de saber por cada familia cuantos hijos tienen (hay familias con 14 chicos registradas) no se como procesar cada $_POST que me llega.
Se entiende?

Alguna idea de como hacer? o por donde empezar?
  #2 (permalink)  
Antiguo 07/02/2011, 11:56
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Ayuda Urgente

a ver de nuevo.

tenes que procesar N familias que tiene N hijos?

y luego guardarlos en la bd????
  #3 (permalink)  
Antiguo 07/02/2011, 11:59
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda Urgente

si, pero el n hijos no lo conozco.
Mi formulario es

nombre padre
nombre madre

hijo sexo edad altura boton agregar hijo
hijo_2 sexo edad altura (en caso de haber sido apretado el boton agregar)


entonces yo el n hijo no lo conozco
  #4 (permalink)  
Antiguo 07/02/2011, 12:09
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Ayuda Urgente

agrega una opcion, por ejemplo un boton, que sea agregar mas, si es asi que se despliegue a continuacion del form del primer hijo el form del segundo hijo y asi sucesivamente, lo puedes enviar por array y donde lo recibes procesas el array y listo
  #5 (permalink)  
Antiguo 07/02/2011, 12:17
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda Urgente

Eso es lo que hago, y me sale bien, si necesitan paso el codigo, lo que no se es como procesar el array que me llega por que los nombres de las variables son :

[sexo_hijo] => [1] [edad_hijo] => [3] [altura_hijo] => [110]
[sexo_hijo_1] => [1] [edad_hijo_1] => [4] [altura_hijo_1] => [121]
[sexo_hijo_2] => [2] [edad_hijo_2] => [7] [altura_hijo_2] => [155]

y asi sucesivamente por cada hijo que tengan.

la pregunta original era: como proceso un array similar donde yo tengo que multiplicar por ejemplo edad * altura y sumarle un porcentaje segun sea varon o mujer?
  #6 (permalink)  
Antiguo 07/02/2011, 12:26
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Ayuda Urgente

Incluyela dentro de un for, que este recorra n veces la variable, por ejemplo :

Código PHP:
Ver original
  1. //recibes la variable
  2. $sexo       =   $_POST['sexo'];
  3. //despues cuentas cuantas datos trae tu array
  4. $cantidad       =   count($sexo);
  5. //y por ultimo lo recorres
  6. for($u=0;$u<count($sexo);$u++)

Espero que te sirva y te ayude saludos.
  #7 (permalink)  
Antiguo 07/02/2011, 12:32
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Ayuda Urgente

antes de enviar el form crea un campo hidden y envia la cantidad de hijos por cada familia(lo haces con js)

tambien hace que las variables tengan el mismo nombre y separados por el id del hijo y el id de la familia
ej: sexo_hijo1_familia1
que quede asi, ed esa forma cada campo es unico:
sexo_1_1
sexo_2_1
.............
sexo_N
  #8 (permalink)  
Antiguo 07/02/2011, 12:59
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda Urgente

Bullan, el tema es que el nombre cambia con cada hijo que aparece

edad_1
edad_2
edad_3

por eso no los puedo contar

Patriarka, el formulario es de carga por planilla, o sea que es una familia por cada form que se llena, o sea que no necesito un id de familia por que este ya esta implicito.

lo que no puedo resolver es como "juntar"

sexo_2 con edad_2 y altura_2 para "procesarlos" juntos.
  #9 (permalink)  
Antiguo 07/02/2011, 13:14
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Ayuda Urgente

CADA VEZ QUE AGREGAS UN HIJO HACE UN CONTADOR JS Y AGREGALO EN UN CAMPO HIDEN Y ENVIALO. SI HACES ESO TE RESUELVO LO OTRO.

var i=0; //o los que aprescan por default
function hijos(){
i++;
document.getElementById('contador').value= i ;
}

agrega un hiden dentro del form
  #10 (permalink)  
Antiguo 07/02/2011, 13:15
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Ayuda Urgente

Gutibs , puedes usar un contador dentro del form y que se incremente en uno una vez finalizada la sentencia que pretendes utilizar, por ende despues al momento de recibirlos , los obtendras como tu quieres, sexo_1, edad_1, altura_1
  #11 (permalink)  
Antiguo 07/02/2011, 13:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Ayuda Urgente

crea los campos de los hijos como arreglos y luego los recives con $_POST y los recorres para hacer los insert o updates

<input type='text' name='edad[]'><input type='text' name='altura[]'><input type='text' name='sexo[]'>
<input type='text' name='edad[]'><input type='text' name='altura[]'><input type='text' name='sexo[]'>
<input type='text' name='edad[]'><input type='text' name='altura[]'><input type='text' name='sexo[]'>
<input type='text' name='edad[]'><input type='text' name='altura[]'><input type='text' name='sexo[]'>

y creas un boton agregar filas q te cre nuevamente esos 3 campos

para recibirlos $_POST['edad'][INDICE], etc, si lo quieres meter en un for haces un cpunt y el indice seria la variable del for.

y el dato del padre lo guardas en un campo hidden para que quede relacionado.

saludos.
  #12 (permalink)  
Antiguo 07/02/2011, 13:32
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda Urgente

Hola, pego el codigo como esta en el formulario con la funcion jscript.

Vos decis que agregue ademas un campo hidden con valor n por cada hijo nuevo?

Pruebo.

Va el codigo actual.
Cita:
<html>
<head>
<script type="text/JavaScript">
function addRow(r){
var root = r.parentNode;//the root
var allRows = root.getElementsByTagName('tr');//the rows' collection
var cRow = allRows[3].cloneNode(true)//the clone of the 1st row

var cSel = cRow.getElementsByTagName('select');
for(var t=0;t<cSel.length;t++){
cSel[t].setAttribute('name',cSel[t].getAttribute('name')+'_'+(allRows.length+1))};//change the selecet's name
root.appendChild(cRow);//appends the cloned row as a new row
}
</script>
</head>
<?php include("dbinfo.php"); ?>

<form method="post" action = "31.php" name ="roofing">

<form method="post" action = "31.php" >
<table width="350" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>&nbsp;</td>
<td>Sexo</td>
<td>Edad</td>
<td>Altura</td>
</tr>
<tr>
<td>Padre</td>
<td>
<select name="sexo_padre">
<option value="0" selected>Select</option>
<option value="1">Hombre</option>
<option value="2">Mujer</option>
</select></td>
<td><?php


$ed = "SELECT * FROM familia WHERE rank_edad = 2";
$eda = mysql_query($ed) or die(mysql_error());

echo "<select name=edad_padre> <option value=''>Elegir</option>";
while($c_edad=mysql_fetch_array($eda)){
echo "<option value=$c_edad[edad]>$c_edad[edad]</option>";
}
echo "</select>";

?>
</td>
<td>
<select name="altura_padre">
<option value="0" selected>Seleccione</option>
<option value="1">Normal a alta</option>
<option value="2">Baja</option>
</select></td>
</tr>
<tr>
<td>Esposa</td>
<td>
<select name="sexo_sp">
<option value="0" selected>Seleccione</option>
<option value="1">Hombre</option>
<option value="2">Mujer</option>
</select></td>
<td><?php


$ed1 = "SELECT * FROM familia WHERE rank_edad = 2";
$eda1 = mysql_query($ed1) or die(mysql_error());
echo "<select name=edad_sp> <option value=''>Seleccione</option>";
while($c_edad1=mysql_fetch_array($eda1)){
echo "<option value=$c_edad1[edad]>$c_edad1[edad]</option>";
}
echo "</select>";

?></td>
<td>
<select name="altura_sp">
<option value="0">Seleccione</option>
<option value="1">Normal a alta</option>
<option value="2">Baja</option>
</select></td>
</tr>

<tr>
<td>Hijo</td>
<td >
<select name="sexo_ch">
<option value="0" selected>Seleccione</option>
<option value="1">Hombre</option>
<option value="2">Mujer</option>
</select></td>
<td ><?php


$ech = "SELECT * FROM familia WHERE rank_edad = 1";
$echi = mysql_query($ech) or die(mysql_error());
echo "<select name=edad_ch> <option value=''>Seleccione</option>";
while($c_edad=mysql_fetch_array($edad)){
echo "<option value=$c_edad[edad]>$c_edad[edad]</option>";
}
echo "</select>";

?></td>
<td >
<select name="altura_ch">
<option value="0" selected>Seleccione</option>
<option value="1">Coef1</option>
<option value="2">Coef2</option>
</select></td>
<td></td>
</tr>
<tr>
<td><input name="button2" type="button" value="Add child" onClick="addRow(this.parentNode.parentNode)"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<input name="calc2" type="submit" value="Calculate Cost">
</form>
<p>&nbsp; </p>

Etiquetas: Ninguno
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 03:19.