PHP - Insertar multiples campos

 
Vista:
sin imagen de perfil

Insertar multiples campos

Publicado por Victor (195 intervenciones) el 28/10/2014 20:59:04
Buenas gente tengo un problema.

Yo creo una tabla de forma dinamica cuyos input tiene como nombre "crotal<?php $i?>"
Una vez creados cuando entro en el fichero que los guarda parece ser que no los recupero bien pues mediante la consola del navegador he visto que no tienen valor cuando se hace el submit.
Codigo de la tabla:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<table id="controlesParaVaciarParque">
	<tr name="tbAnimalesExistentes">
		<td>
 
				<table class="tbExistenAnimalesDentro">
					<tr>
						<?php
							if($cuadras!=0)
							{
						?>
						<label>-Box Habilitados:<?php echo $numFilas=$cuadras['cantidad']?></label>
						<?php
							}
						?>
					</tr>
					<tr>
						<?php
							if($cuadras!=0)
							{
								//echo "cuadras es igual a 0";
								$nueva=0;
 
								for($i=1;$i<$cuadras['cantidad'];$i++)
								{
						?>
							<td>
								<label>
									Crotal
								</label>
							</td>
							<td>
								<input type="text" name="crotal <?php echo $i;?>" value="<?php if(($cuadras['boxes'][$i]['crotal']==null)||($cuadras['boxes'][$i]['crotal']=="")){echo "";}
																								else{echo $cuadras['boxes'][$i]['crotal'];}?>">
							</td>
							<td>
								<?php
								//echo "Nueva dentro del else vale".$nueva;
								$Disabled= "";
								if(isset($cuadras['boxes'][$i]['crotal']) &&
									($cuadras['boxes'][$i]['crotal']!=0) &&
									(trim($cuadras['boxes'][$i]['crotal'])!=""))
								{
									$Disabled= "Enabled";
								}else
								{
									$Disabled="Disabled";
								}
								?>
								<button name="btIr&i" value="Ir" title="Ir a la ficha"
									<?php echo ($Disabled) ?>
										onclick="javascript:irAFicha(<?php if(isset($cuadras['boxes'][$i]['crotal'])){echo $cuadras['boxes'][0]['crotal'];}?>)"
										style="width: 20px;height: 20px;">
									Ir
								</button>
							</td>
							<td>
								<button name="btDlt&i" title="Eliminar Animal"
									<?php echo ($Disabled) ?>
										onclick="javascript:eliminarAnimal(<?php if(isset($cuadras['boxes'][$i]['crotal'])){echo $cuadras['boxes'][0]['crotal'];}?>)"
										style="width: 30px;height: 20px;margin-right: 10px;">
									<img src="images/icono_eliminar.png" ">
								</button>
								<input name="numeroFilas" hidden="hidden" value="<?php echo $cuadras['cantidad'];?>">
							</td>
							<?php
							if(($i % 2)==0)
							{
								echo "</tr>";
								echo "<tr>";
							}

							}
						}
						?>
					</tr>
				</table>

Codigo del metodo donde guardo:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
if (($accion=="guardar")){
    //recuperamos campos del formulario
    $box_id = $id;
    $numeroFilas=$_POST['numeroFilas'];
    $conexion=conectarBD();
 
    $boxes=getBoxAnimalesParque();
/*
*getBoxAnimalesParque(); hace esto
*function getBoxAnimalesParque()
*{
*    return array
*    (
*        'boxes'=> array(
*            'idBoxParque'=>'',
*            'codBoxParque'=>'',
*            'crotal'=>''
*        )
*    );
*}
*/
    $query="SELECT  * FROM  `animalesparque` WHERE  `codBoxParque` ='".$box_id."'";
    $consulta = $conexion->query($query);
    $query="";
    if(!$consulta)
    {
        echo "Dentro de !consulta";
        echo "No a encontrado datos.";
        return 0;
    }else
    {
        echo "Datos hay cantidad=".$cantidad;
 
        while($fila = $consulta->fetch_array())
        {
            array_push($boxes,$fila);
        }
        $cantidad = $consulta->num_rows;
        $result = array("cantidad"=>$cantidad,"boxes"=>$boxes);
        echo "Cantidad vale==".$cantidad;
 
        for($i=1;$i<$cantidad;$i++)
        {
            $crotal = strip_tags(trim($_POST["crotal$i"]));
            echo "idBoxParqueValeeeeee==".$result['boxes']['idBoxParque'];
            echo"Dentro del for update CROTAL vale".$crotal;
            $query="UPDATE animalesparque SET
            crotal ='".$crotal."',
            codBoxParque='".$box_id."'
            where idBoxParque='".$result['boxes']['idBoxParque']."';";
 
            $consulta = $conexion->query($query);
            if(!$consulta)
            {
                echo "No a encontrado datos DESPUES DEL FOR.";
            }else
            {
 
            }
        }
 
 
    }
    $_POST['valor']=$box_id;
    $conexion->close();
}

Tengo dos problemas.
1 Este echo "idBoxParqueValeeeeee==".$result['boxes']['idBoxParque']; no tiene valor y debe tenerlo ya que es autonumerico
2.Soy consciente de que hacerlo así tiene que estar mal $crotal = strip_tags(trim($_POST["crotal$i"]));
Ya que me imagino que debo montar un array con todos los inputs pero no lo he hecho nunca y no sé como va.

Quedo a la espera de vuestras respuestas,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 Sergio

Insertar multiples campos

Publicado por Sergio (5 intervenciones) el 29/10/2014 06:14:21
No se si esq no esta todo el codigo html pero no veo el form tag, datos post solo se pueden enviar si estan metidos dentro de un form, si estan por fuera o no hay form del todo aunque le des submit el navegador no sabe que enviar por tanto no envia nada...
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
sin imagen de perfil

Insertar multiples campos

Publicado por Victor (195 intervenciones) el 29/10/2014 08:31:30
Buenos dias Sergio.

Gracias por contestar,la tabla si está dentro del form.
Creo yo,que mas que el envio es la recogida de esos datos.
Es decir que el problema creo que está a partir de donde pone
"Codigo del metodo donde guardo:"

Alguna sugerencia de alguien.

De nuevo Sergio,gracias por contestar.
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
Imágen de perfil de Sergio

Insertar multiples campos

Publicado por Sergio (5 intervenciones) el 29/10/2014 18:20:03
OK, veo 2 detalles, primero el input numeroFIlas veo que tienes hidden="hidden", no reconozco eso, porque no usar type="hidden" en su lugar?
Luego, en la tabla tienes
<input type="text" name="crotal <?php echo $i;?>"
Hay un espacio entre crotal y $i
Pero en el script tienes sin espacio, eso ya las hace variables distintas.
trim($_POST["crotal$i"])
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
sin imagen de perfil

Insertar multiples campos

Publicado por Victor (195 intervenciones) el 29/10/2014 18:26:48
Buenas Sergio.

No creo que vayan por ahí los tiros pero lo voy a comprobar de todas formas.

Muchas gracias por tus respuestas.
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

Insertar multiples campos

Publicado por lucas (1 intervención) el 29/10/2014 18:38:45
No entiendo la sintaxis <?php } ?>


if($cuadras!=0)
{
?>
<label>-Box Habilitados:<?php echo $numFilas=$cuadras['cantidad']?></label>
-----> <?php
-----> }
-----> ?>
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
sin imagen de perfil

Insertar multiples campos

Publicado por Victor (195 intervenciones) el 29/10/2014 18:59:05
Buenas tardes Lucas.
Esa es una de las formas,de las 2 que conozco de intercalar codigo php con HTML.
La otra implica decenas,cientos,etc de comillas simples y dobles y pasas mas tiempo poniendo comillas que programando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if($cuadras!=0)
{
?>
<html>
El codigo HTML que necesites en caso de cumplir el if
</html>
 
<?php
else
{
?>
<html>
El codigo HTML que necesites en caso de no cumplir el if
</html>
<?php
}
?>
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
sin imagen de perfil

Insertar multiples campos

Publicado por Victor (195 intervenciones) el 31/10/2014 21:15:11
Buenass.
Donde dije digo,digo Diego ;)
Si eso era un gran fallo por mi parte que gracias a ti he solventado.
El error viene por intentar insertar en el array con array_push pero no conozco la forma de insertar los valores en un array asociativo multidimensional (el cual uso para leer datos de las consultas) pero acabo de darme cuenta que insertar no es facil y no veo ningun ejemplo por ahi(que sea multidimensional).

El array asociativo multidimensional lo obtengo de otro fichero y tiene esta forma:
1
2
3
4
5
6
7
8
9
10
11
function getBoxAnimalesParque()
{
    return array
    (
        'boxes'=> array(
            'idBoxParque'=>'',
            'codBoxParque'=>'',
            'crotal'=>''
        )
    );
}

Y aqui es en donde trabajo con dicho array

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
$boxes=getBoxAnimalesParque();
$query="SELECT  * FROM  `animalesparque` WHERE  `codBoxParque` ='".$box_id."'";
$consulta = $conexion->query($query);
$query="";
if(!$consulta)
{
	echo "Dentro de !consulta";
	echo "No a encontrado datos.";
	return 0;
}else
{
	$arrayAnimalesParque =array('idBoxParque'=>'','codBoxParque'=>'','crotal'=>'');
	while($fila=mysql_fetch_array($query))  //Si existe,pero donde esta no
	{
		//EL FALLO ESTA AQUI
		//Pero cual es la forma?????????
		$boxes=$fila['idBoxParque'];
		$boxes=$fila['codBoxParque'];
		$boxes=$fila['crotal'];
	}
	$cantidad = $consulta->num_rows;
	echo "Datos hay cantidad=".$cantidad;
	$result = array("cantidad"=>$cantidad,"boxes"=>$boxes);
	//echo "Cantidad vale==".$cantidad;
 
	for($i=1;$i<$cantidad;$i++)
	{
		$crotal = strip_tags(trim($_POST["crotal$i"]));
		echo "idBoxParqueValeeeeee==".$result['boxes']['idBoxParque'];
		echo"<br/>Dentro del for update CROTAL vale".$crotal;
		$query="UPDATE animalesparque SET
		crotal ='".$crotal."',
		codBoxParque='".$box_id."'
		where idBoxParque='".$result['boxes']['idBoxParque']."';";
 
		$consulta = $conexion->query($query);
		if(!$consulta)
		{
			echo "No a encontrado datos DESPUES DEL FOR.";
		}else
		{
 
		}
	}
}

Gracias por vuestras respuestas,saludos.
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