PHP - Formulario dinamica html php y mysql

 
Vista:
sin imagen de perfil

Formulario dinamica html php y mysql

Publicado por mauro (25 intervenciones) el 15/06/2016 01:33:13
Hola tengo unos problemas al guardar datos de un formulario dinamico.

El siguente codigo recorre la consulta y crea una fila para cada arreglo.

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
$query="SELECT id, sector, servicio, nivel, precio, descarga, carga FROM precios";
	$tabla=mysql_query($query);
while ( $rs=mysql_fetch_array($tabla)) {
		/*print_r($rs);*/
		echo utf8_encode ('<div class="row">

			<div class="col-md-7">
			  	<!-- Titulo -->
				<div class="col-md-2">	
					<label>ID:</label>
					<input type="text" class="form-control" name="id" id="id" value="'.$rs["id"].'" autocomplete="off">
				</div>

				<!-- Sector/tipo -->
				<div class="col-md-5">	
	  				<label>Sector:</label>
					<input type="text" class="form-control" name="sector" id="sector" value="'.$rs["sector"].'" autocomplete="off" required>
				</div>

				<!-- Sector/tipo -->
				<div class="col-md-5">	
	  				<label>Servicio:</label>
					<input type="text" class="form-control" name="servicio" id="servicio" value="'.$rs["servicio"].'" autocomplete="off" required>
				</div>
			</div>

			<div class="col-md-5">
				<!-- Sector/tipo -->
				<div class="col-md-3">	
	  				<label>Nivel:</label>
					<input type="text" class="form-control" name="nivel" id="nivel" value="'.$rs["nivel"].'" autocomplete="off" required>
				</div>

				<!-- Sector/tipo -->
				<div class="col-md-3">	
	  				<label>Precio:</label>
					<input type="text" class="form-control" name="precio" id="precio" value="'.$rs["precio"].'" autocomplete="off" required>
				</div>
					
					<!-- Descarga -->
				<div class="col-md-3">	
	  				<label>Descarga:</label>
					<input type="text" class="form-control" name="descarga" id="descarga" value="'.$rs["descarga"].'" autocomplete="off" required>
				</div>

				<!-- Carga -->
				<div class="col-md-3">	
	  				<label>Carga:</label>
					<input type="text" class="form-control" name="carga" id="carga" value="'.$rs["carga"].'" autocomplete="off" required>
				</div>
					
				</div>
			</div>');
	}
Tengo un boton para el envio de los registros al archivo php que los guarda.

Y esto es lo que tiene ese archivo.

1
2
3
4
5
6
7
8
9
for ($i = 0; $i < count($_POST['id']); $i++)
	{
	    $update = mysql_query ("UPDATE precios  SET sector='{$_POST['sector'][$i]}',
	                                                 servicio='{$_POST['servicio'][$i]}',nivel='{$_POST['nivel'][$i]}', precio='{$_POST['precio'][$i]}', descarga='{$_POST['descarga'][$i]}', carga='{$_POST['craga'][$i]}'
	                                                 WHERE id='{$_POST['id'][$i]}'")
	                                                 or die ('Problemas con el query'.mysql_error());
 
	   echo $update."<br/>";
	}


Pero no puedo lograr guardar los registros.

Ejecuto este codigo para ver que valores tiene el post

1
2
3
4
5
6
7
8
9
10
foreach ($_POST as $key => $value) {
        echo "<tr>";
        echo "<td>";
        echo $key;
        echo "</td>";
        echo "<td>";
        echo $value;
        echo "</td>";
        echo "</tr>";
    }

y solo obtengo

id 31
sector 0
servicio 6
nivel 6
precio 9592
descarga 35
carga 35

Que corresponde al ultimo registro del formulario dinamico

Les agradezco su ayuda.
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

tormulario dinamica html php y mysql

Publicado por kip (877 intervenciones) el 15/06/2016 01:44:28
Hola, para empezar deberias crear el atributo name de cada input como un array, asi:

1
<input type="text" class="form-control" name="id[]" id="id" value="'.$rs["id"].'" autocomplete="off">

Si te fijas en name he colocado [], debes hacer eso en cada echo de cada input.

Ademas para recibir deberias hacerlo asi:

1
2
3
4
5
6
7
8
9
for ($i = 0,$size=count($_POST['id']); $i < $size; $i++)
{
    $update = mysql_query ("UPDATE precios  SET sector='{$_POST['sector'][$i]}',
	                                                 servicio='{$_POST['servicio'][$i]}',nivel='{$_POST['nivel'][$i]}', precio='{$_POST['precio'][$i]}', descarga='{$_POST['descarga'][$i]}', carga='{$_POST['craga'][$i]}'
	                                                 WHERE id='{$_POST['id'][$i]}'")
    or die ('Problemas con el query'.mysql_error());
 
   // echo $update."<br/>" No debes hacer echo del query!
}

Prueba y nos cuentas como te fue.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

tormulario dinamica html php y mysql

Publicado por mauro (25 intervenciones) el 15/06/2016 02:04:57
Grandioso....

Funcionó de maravilla.
Gracias por tu ayuda.
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