PHP - Insert de un formulario con bucle for

 
Vista:
Imágen de perfil de Carlos

Insert de un formulario con bucle for

Publicado por Carlos (10 intervenciones) el 02/12/2016 02:28:20
Estimados hice un formulario que me trae (n) preguntas y se responde con (n) botones de radio
este es el codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  $select_com= "SELECT * FROM  COMPETENCIA WHERE CONDICION_COM='ACTIVO' ";
  $resultado_com=mysql_query($select_com);
while ($row_com=mysql_fetch_assoc($resultado_com)) {
?>
<tr>
<?php
$competencia[]=$row_com['NOMBRE_COM'];
$id_com[]=$row_com['ID_COM'];
}
$count=count($competencia);
for ($valor = 0; $valor < $count; $valor++) {
?>
  <td><?php echo $competencia[$valor]; ?>
  <input type="hidden" name="competencia"  value="<?php echo $id_com[$valor]; ?>">
  </td>
  <td><input type="radio" name="<?php echo $valor; ?>"  value="100" required></td>
  <td><input type="radio" name="<?php echo $valor; ?>"  value="75" required></td>
  <td><input type="radio" name="<?php echo $valor; ?>"  value="50" required></td>
  <td><input type="radio" name="<?php echo $valor; ?>"  value="25" required></td>
</tr>
<?php
}
?>

ahora necesito hacer un insert con todas las respuestas en cada pregunta donde se debe ingresar este valor
1
input type="hidden" name="competencia"  value="<?php echo $id_com[$valor];
y este valor
1
2
3
4
<td><input type="radio" name="<?php echo $valor; ?>"  value="100" required></td>
<td><input type="radio" name="<?php echo $valor; ?>"  value="75" required></td>
<td><input type="radio" name="<?php echo $valor; ?>"  value="50" required></td>
<td><input type="radio" name="<?php echo $valor; ?>"  value="25" required></td>


(n) veces

donde (n) es la cantidad de preguntas

Aprecio mucho el apoyo que me puedan dar
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

Insert de un formulario con bucle for

Publicado por kip (877 intervenciones) el 02/12/2016 04:06:01
Hola, veo que las variables $valor que colocas en el atributo name de los radio button no tienen relevancia porque son los valores de la variable que se autoincrementa, lo que te recomiendo es usar esta sintaxis 'name[]' cuando crees varios elementos que tengan el mismo nombre y los envies desde tu formulario como arreglos, lo haria asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
for ($valor = 0; $valor < $count; $valor++) {
 ?>
<td><?php echo $competencia[$valor]; ?>
<input type="hidden" name="competencia[]"  value="<?php echo $id_com[$valor]; ?>">
</td>
<td><input type="radio" name="<?php echo $id_com[$valor]; ?>"  value="100" required></td>
<td><input type="radio" name="<?php echo $id_com[$valor]; ?>"  value="75" required></td>
<td><input type="radio" name="<?php echo $id_com[$valor]; ?>"  value="50" required></td>
<td><input type="radio" name="<?php echo $id_com[$valor]; ?>"  value="25" required></td>
</tr>
<?php
}
 ?>

Arriba coloque el bloque del foreach cuando creas los elementos, si te fijas coloque como name en los radio button el valor de $id_com[$valor];, lo hice porque supongo que es un id unico de cada registro y este sera el dato para poder obtener el valor del radio button seleccionado desde la variable $_POST, ademas coloque competencia[] para tener un arreglo que contendra todos los ids, ahora para obtener estos valores luego de hacer el submit seria algo asi:

1
2
3
4
foreach ($_POST['competencia'] as $id_com) {
	$valor_radio_button = $_POST[$id_com];
	echo "{$id_com} - {$valor_radio_button}<br>";
}

De aquella forma muestro el valor del id_com y el valor seleccionado en el radio button.

Aunque tambien si no deseas colocar como atributo name el $id_com[$valor] a tus raddio button, puede hacerlo como ahora tienes con $valor, pero colocando el atributo name del input hidden con la sintaxis 'name[]' para que sea un arreglo y luego de iterarlo tome el valor del indice de este y muestre con este el valor del raddio button, de esta forma no me fio tanto como la anterior, pero tambien es posible si deseas:

1
2
3
4
5
6
7
8
9
10
11
12
13
for ($valor = 0; $valor < $count; $valor++) {
 ?>
<td><?php echo $competencia[$valor]; ?>
<input type="hidden" name="competencia[]"  value="<?php echo $id_com[$valor]; ?>">
</td>
<td><input type="radio" name="<?php echo $valor; ?>"  value="100" required></td>
<td><input type="radio" name="<?php echo $valor; ?>"  value="75" required></td>
<td><input type="radio" name="<?php echo $valor; ?>"  value="50" required></td>
<td><input type="radio" name="<?php echo $valor; ?>"  value="25" required></td>
</tr>
<?php
}
 ?>

Para obtener el valor, seria parecido al caso anterior, en este caso no uso el valor si no el indice de este:

1
2
3
4
5
6
<?php
 
foreach ($_POST['competencia'] as $key => $id_com) {
	$valor_radio_button = $_POST[$key];
	echo "{$id_com} - {$valor_radio_button}<br>";
}

Prueba con alguno.

Si te da algun error comentanoslo, espero te sirva.
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
Imágen de perfil de Carlos

Insert de un formulario con bucle for

Publicado por Carlos (10 intervenciones) el 05/12/2016 21:40:14
Hola Kip Gracias por la información apenas lo pruebe estare comentandote los resultados gracias
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 Carlos

Insert de un formulario con bucle for

Publicado por Carlos (10 intervenciones) el 07/12/2016 20:06:39
Excelente amigo

Probe el metodo 2 y me funciona excelente ahora lo adapatare a mi codigo gracias por el aporte
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 Carlos

Insert de un formulario con bucle for

Publicado por Carlos (10 intervenciones) el 07/12/2016 22:55:11
Hola de nuevo tengo un nuevo inconveniente con este codigo xD

En esta sección estoy haciendo una consulta de las competenencias que pertenecen a las preguntas que se realizan a una evaluacion es decir:
Tengo una evaluacion A
donde existen preguntas B,C,D
cada pregunta esta asociada a una competencia B,C,D
seria: Competencia B, Competencia C y así sucesivamente
adicionalmente una Competencia Tiene 4 Escalas G,H,I,J
en general un ejemplo seria

Evaluacion A
Competencia B
Escala G,H,I,J

1
2
3
4
<?php
                                            $select_pi= "SELECT * FROM  EVALUACION, PREGUNTA, COMPETENCIA, ESCALA WHERE  PREGUNTA.EVALUACION_ID_EV=EVALUACION.ID_EV AND COMPETENCIA.ID_COM=ESCALA.COMPETENCIA_ID_COM AND TIPO_COM='INDIVIDUAL'  AND ID_EV='$evaluacion'  ";
                                            $resultado_pi=mysql_query($select_pi);
                                            ?>

Con esta consulta me salen por cada escala la misma pregunta y competencias es decir:

Evaluacion A
Competencia B
Escala G

Evaluacion A
Competencia C
Escala H

Evaluacion A
Competencia D
Escala I

Evaluacion A
Competencia E
Escala J

Si agrupo por competencia con
1
GROUP BY ID_COM

tengo este resultado

Evaluacion A
Competencia B
Escala G

me falta el H,I,J

esto lo necesito para el grupo de radios que tengo en este codigo:

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
<?php
                                                while ($row_pi=mysql_fetch_assoc($resultado_pi)) {
                                                ?>
                                                <tr>
                                                <?php
                                                $competencia[]=$row_pi['NOMBRE_COM'];
                                                $escala[]=$row_pi['DESCRIPCION_ES'];
                                                $descripcion[]=$row_pi['DESCRIPCION_COM'];
                                                $id_com[]=$row_pi['ID_COM'];
                                                }
                                                $count=count($competencia);
                                                for ($valor = 0; $valor < $count; $valor++) {
                                                ?>
                                                  <td>
                                                  <p  data-toggle="tooltip" data-placement="bottom" title="<?php echo $descripcion[$valor];?>"><?php echo $competencia[$valor]; ?></p>
                                                  <input type="hidden" name="competencia[]"  value="<?php echo $id_com[$valor]; ?>">
                                                  </td>
                                                  <td>
                                                  <p data-toggle="tooltip" data-placement="bottom" title="<?php echo $escala[$valor];?>"><input type="radio" name="<?php echo $valor; ?>" id="r1" value="100" required></p>
                                                  </td>
                                                  <td>
                                                  <p data-toggle="tooltip" data-placement="bottom" title="<?php echo $escala[$valor];?>"><input type="radio" name="<?php echo $valor; ?>" id="r2" value="75" required></p>
                                                  </td>
                                                  <td>
                                                  <p data-toggle="tooltip" data-placement="bottom" title="<?php echo $escala[$valor];?>"><input type="radio" name="<?php echo $valor; ?>" id="r3" value="50" required></p>
                                                  </td>
                                                  <td>
                                                  <p data-toggle="tooltip" data-placement="bottom" title="<?php echo $escala[$valor];?>"><input type="radio" name="<?php echo $valor; ?>" id="r4" value="25" required></p>
                                                  </td>
                                                </tr>
                                                <?php
                                                }
                                                 ?>

El tema es que me salga un renglon con la competencia y las escalas donde cada escala sea la respuesta por ejemplo

Evaluacion A
Competencia B (ES PUNTUAL?) Escala G (SIEMPRE) Escala H(A VECES) Escala I (CASI NUNCA) Escala J (NUNCA)

Al final debe tomar el valor segun la escala que seleccione y guardarlo en la base de datos como la respuesta de la evaluacion

Gracias de antemano por el apoyo
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 Carlos

Insert de un formulario con bucle for

Publicado por Carlos (10 intervenciones) el 08/12/2016 19:55:26
Lo logre compañeros modifique un poco mi select dejando solo Evaluacion, Pregunta y Competencia y adicionalmente coloque 1 consulta por cada escala para que muestre lo que deseo, aqui el código por si a alguien le servira
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
<?php
$select_pi= "SELECT * FROM  EVALUACION, PREGUNTA, COMPETENCIA WHERE  PREGUNTA.EVALUACION_ID_EV=EVALUACION.ID_EV  AND PREGUNTA.COMPETENCIAS_ID_COM=COMPETENCIA.ID_COM  AND TIPO_COM='CONDUCTUAL'  AND ID_EV='$evaluacion'";
$resultado_pi=mysql_query($select_pi);
?>
<table width="100%" class="table table-striped table-bordered table-hover" id="tabla-competencias_i">
	<thead>
		<tr>
			<th>Competencias de Desempeño</th>
			<th>Alto (100%)</th>
			<th>Medio (75%)</th>
			<th>Básico (50%)</th>
			<th>No Tiene (25%)</th>
		</tr>
	</thead>
	<tbody>
	<?php
	while ($row_pi=mysql_fetch_assoc($resultado_pi)) {
	?>
	<tr>
	<?php
	$competencia[]=$row_pi['NOMBRE_COM'];
	$descripcion[]=$row_pi['DESCRIPCION_COM'];
	$id_com[]=$row_pi['ID_COM'];
	}
	$count=count($competencia);
	for ($valor = 0; $valor < $count; $valor++) {
	?>
		<td>
		<p  data-toggle="tooltip" data-placement="top" title="<?php echo $descripcion[$valor];?>"><?php echo $competencia[$valor]; ?></p>
		<input type="hidden" name="competencia[]"  value="<?php echo $id_com[$valor]; ?>">
		</td>
		<td>
		<?php
		$select_100= "SELECT * FROM  ESCALA WHERE COMPETENCIA_ID_COM='$id_com[$valor]' AND RANGO='100'";
		$resultado_100=mysql_query($select_100);
		$row_100=mysql_fetch_assoc($resultado_100);
		$escala=$row_100['DESCRIPCION_ES'];
		?>
		<p data-toggle="tooltip" data-placement="top" title="<?php echo $escala;?>"><input type="radio" name="<?php echo $valor; ?>" id="r1" value="100" required></p>
		</td>
		<td>
		<?php
		$select_75= "SELECT * FROM  ESCALA WHERE COMPETENCIA_ID_COM='$id_com[$valor]' AND RANGO='75'";
		$resultado_75=mysql_query($select_75);
		$row_75=mysql_fetch_assoc($resultado_75);
		$escala=$row_75['DESCRIPCION_ES'];
		?>
		<p data-toggle="tooltip" data-placement="top" title="<?php echo $escala;?>"><input type="radio" name="<?php echo $valor; ?>" id="r2" value="75" required></p>
		</td>
		<td>
		<?php
		$select_50= "SELECT * FROM  ESCALA WHERE COMPETENCIA_ID_COM='$id_com[$valor]' AND RANGO='50'";
		$resultado_50=mysql_query($select_50);
		$row_50=mysql_fetch_assoc($resultado_50);
		$escala=$row_50['DESCRIPCION_ES'];
		?>
		<p data-toggle="tooltip" data-placement="top" title="<?php echo $escala;?>"><input type="radio" name="<?php echo $valor; ?>" id="r3" value="50" required></p>
		</td>
		<td>
		<?php
		$select_25= "SELECT * FROM  ESCALA WHERE COMPETENCIA_ID_COM='$id_com[$valor]' AND RANGO='25'";
		$resultado_25=mysql_query($select_25);
		$row_25=mysql_fetch_assoc($resultado_25);
		$escala=$row_25['DESCRIPCION_ES'];
		?>
		<p data-toggle="tooltip" data-placement="top" title="<?php echo $escala;?>"><input type="radio" name="<?php echo $valor; ?>" id="r4" value="25" required></p>
		</td>
	</tr>
	<?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
Imágen de perfil de Carlos

Insert de un formulario con bucle for

Publicado por Carlos (10 intervenciones) el 12/12/2016 18:52:08
Hola Kip tengo una nueva incidencia con el for each

Fijate que tengo este formulario
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
<?php
while ($row_m=mysql_fetch_assoc($resultado_m)) {
?>
<tr>
<?php
$meta[]=$row_m['DESCRIPCION_P'];
$resultado[]=$row_m['RESULTADO'];
$id_meta[]=$row_m['ID_ME'];
}
$countm=count($id_meta);
for ($valorm = 0; $valorm < $countm; $valorm++) {
?>
	<td class="col-sm-4">
	<textarea class="form-control" rows="3" name="meta" disabled><?php echo $meta[$valorm]; ?></textarea>
	<input type="hidden" name="valor[]"  value="<?php echo $id_meta[$valorm]; ?>">
	</td>
 
	<td class="col-sm-5">
<?php if ($meta[$valorm]!='') {?>
	<textarea class="form-control" rows="3" name="resultado[$valorm]" placeholder="COLOQUE LOS RESULTADOS QUE EL EMPLEADO ALCANZO REFERENTES A ESTA META" type="text" onKeyUp="this.value=this.value.toUpperCase();"  required><?php echo $resultado[$valorm]; ?></textarea>
<?php } else { ?>
	<textarea class="form-control" rows="3" name="" disabled=""></textarea>
<?php } ?>
	</td>
 
	<td>
<?php if ($meta[$valorm]!='') {?>
	<select class="form-control" name="escala[$valorm]" required>
		<option value="">ESCALA</option>
		<option value="5">SOBRESALIENTE</option>
		<option value="4">EXCELENTE</option>
		<option value="3">BUENO</option>
		<option value="2">ACEPTABLE</option>
		<option value="1">NECESITA MEJORAR</option>
	</select>
<?php } else { ?>
	<textarea class="form-control" rows="3" name="" disabled=""></textarea>
<?php } ?>
	</td>
 
</tr>
<?php
}
?>

tengo la misma necesidad del tema de los radios pero llamo este for each
1
2
3
4
5
6
7
8
9
10
11
12
<?php //Valores a insertar
 
 
foreach ($_POST['valor'] as $key => $id_meta) {
 
    $valor_radio_button = $_POST[$key];
 
 
    echo "{$id_com} - {$valor_radio_button}<br>";
 
 
}

y nada no me muestra resultados...

Esta vez traigo n text area donde tengo que colocarles un resultado y un valor segun una escala pero no consigo llamar los valores

Gracias de antemano
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