Foros del Web » Programando para Internet » PHP »

problema de update multiplo

Estas en el tema de problema de update multiplo en el foro de PHP en Foros del Web. Hola a todos, sigo tenendo problemas en hacer el upload en una base de datos. Esta lleva 10 renglones con 10 nombres. Cada nombre tiene ...
  #1 (permalink)  
Antiguo 22/03/2011, 09:37
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 13 años, 6 meses
Puntos: 1
problema de update multiplo

Hola a todos, sigo tenendo problemas en hacer el upload en una base de datos.
Esta lleva 10 renglones con 10 nombres. Cada nombre tiene 6 checkbox, 2 textbox.
Conseguì a insertar todos los datos en el primer renglon con este script:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
# post

$c = $_POST['c'];
$c2 = $_POST['c2'];
$c3 = $_POST['c3'];
$c4 = $_POST['c4'];
$c5 = $_POST['c5'];
$c6 = $_POST['c6'];
$nota3 = $_POST['nota3'];
$val = $_POST['val'];
$juicio = $_POST['juicio'];

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
# chechkbox

if( $c == "1" ) {
$c = "SI";
} else {
$c = "NO";
}

if( $c2 == "1" ) {
$c2 = "SI";
} else {
$c2 = "NO";
}

if( $c3 == "1" ) {
$c3 = "SI";
} else {
$c3 = "NO";
}
if( $c4 == "1" ) {
$c4 = "SI";
} else {
$c4 = "NO";
}

if( $c5 == "1" ) {
$c5 = "SI";
} else {
$c5 = "NO";
}

if( $c6 == "1" ) {
$c6 = "SI";
} else {
$c6 = "NO";
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
# valoracion

if($nota3<3){
$val="bajo";
}
if($nota3>=3 && $nota<3.7){
$val="basico";
}
if($nota3>3.7 && $nota<4.4){
$val="alto";
}
if($nota3>=4.4){
$val="superior";
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
# update

$sql = "UPDATE PRIMERO_AA_espanol SET c='$c', c2='$c2', c3='$c3', c4='$c4', c5='$c5', c6='$c6', nota3='$nota3', val='$val' , juicio='$juicio' WHERE id='1'";
$result = mysql_query($sql);

mysql_close();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Lo que no consiguo es insertar los datos en los otros renglones..
Como los nombres de los checkbox son diferentes cada renglon (c, c2 ,c3, c4...)
por el primer renglon (c7, c8, c9...) por el secundo y asi hasta el ultimo.
No se como hacer para que los checkbox que no tienen el mismo nombre de los campos del db pueden ser insertados en los campos...(WHERE id='2')

Quien puede ayudarme lo agradezco.

Saludos
  #2 (permalink)  
Antiguo 22/03/2011, 20:07
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema de update multiplo

Muestra tu formulario HTML, tal vez desde ahi viene el problema.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 22/03/2011, 21:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: problema de update multiplo

hola Triby, quien sabe que no sea la cosa cierta...Aqui hay el html:

<table border="0" align="center" cellpadding="0" cellspacing="0" class="fondo_tabla">
<tr>
<td><table border="0" align="center" cellpadding="2" cellspacing="1" class="font2">
<tr bgcolor="#66CCFF">
<td height="25">Nº</td>
<td height="25">Estudiante</td>
<td height="25"> 0a1</td>
<td height="25">0a2</td>
<td height="25">0a3</td>
<td height="25"> 0a4</td>
<td>0a5</td>
<td>0a6</td>
<td>Nota</td>
<td>Juicio Valorativo</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">1</td>
<td bgcolor="#FFFFFF">JOHAN ALEXANDER RAMIREZ CORREA</td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='c' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='c2' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='c3' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='c4' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='c5' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='c6' value='1'/></td>
<td bgcolor="#FFFFFF"><label for="textfield3"></label>
<input name="nota3" type="text" id="nota3" size="10" maxlength="10" /></td>
<td bgcolor="#FFFFFF"><label for="juicio"></label>
<input name="juicio" type="text" id="juicio" size="80" maxlength="150" /></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>2</td>
<td bgcolor="#FFFFFF">JOHAN STEVEN ARIAS ARIAS</td>
<td><input type='checkbox' name='c7' value='1'/></td>
<td><input type='checkbox' name='c8' value='1'/></td>
<td><input type='checkbox' name='c9' value='1'/></td>
<td><input type='checkbox' name='c10' value='1'/></td>
<td><input type='checkbox' name='c11' value='1'/></td>
<td><input type='checkbox' name='c12' value='1'/></td>
<td><input name="textfield2" type="text" id="nota4" size="10" maxlength="10" /></td>
<td><input name="juicio2" type="text" id="juicio2" size="80" maxlength="150" /></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">3</td>
<td bgcolor="#FFFFFF">JUAN ESTEBAN PARRA GUTIERREZ</td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox13' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox14' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox15' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox16' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox17' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox18' value='1'/></td>
<td bgcolor="#FFFFFF"><input name="textfield3" type="text" id="textfield3" size="10" maxlength="10" /></td>
<td bgcolor="#FFFFFF"><input name="juicio3" type="text" id="juicio3" size="80" maxlength="150" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">4</td>
<td bgcolor="#FFFFFF">JUAN JOSE RIOS CEBALLOS</td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox19' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox20' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox21' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox22' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox23' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox24' value='1'/></td>
<td bgcolor="#FFFFFF"><input name="textfield4" type="text" id="textfield4" size="10" maxlength="10" /></td>
<td bgcolor="#FFFFFF"><input name="juicio4" type="text" id="juicio4" size="80" maxlength="150" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">5</td>
<td bgcolor="#FFFFFF">LAURA OSPINA CARMONA</td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox25' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox26' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox27' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox28' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox29' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox30' value='1'/></td>
<td bgcolor="#FFFFFF"><input name="textfield5" type="text" id="textfield5" size="10" maxlength="10" /></td>
<td bgcolor="#FFFFFF"><input name="juicio5" type="text" id="juicio5" size="80" maxlength="150" /></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">6</td>
<td bgcolor="#FFFFFF">SALOME CASTAÑO LEON</td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox31' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox32' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox33' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox34' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox35' value='1'/></td>
<td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox36' value='1'/></td>
<td bgcolor="#FFFFFF"><input name="textfield6" type="text" id="textfield6" size="10" maxlength="10" /></td>
<td bgcolor="#FFFFFF"><input name="juicio6" type="text" id="juicio6" size="80" maxlength="150" /></td>
</tr>

</table>

solo los dos ringlones tienen el nombre de los checkbox cambiados a ver si encuentras algo...

Gracias de toda forma por el ayuda

Saludos
  #4 (permalink)  
Antiguo 23/03/2011, 01:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema de update multiplo

Bueno, parece que lo mas facil seria usar matrices (arrays) para los campos:

Código HTML:
Ver original
  1. <tr>
  2. <td bgcolor="#FFFFFF">Numero</td>
  3. <td bgcolor="#FFFFFF">Nombre</td>
  4. <td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox1[]' value='1'/></td>
  5. <td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox2[]' value='1'/></td>
  6. <td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox3[]' value='1'/></td>
  7. <td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox4[]' value='1'/></td>
  8. <td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox5[]' value='1'/></td>
  9. <td bgcolor="#FFFFFF"><input type='checkbox' name='checkbox6[]' value='1'/></td>
  10. <td bgcolor="#FFFFFF"><input name="textfield[]" type="text" size="10" maxlength="10" /></td>
  11. <!-- Copie y pegue... pero por aqui falta el campo nota[] -->
  12. <td bgcolor="#FFFFFF"><input name="juicio[]" type="text" size="80" maxlength="150" /></td>
  13. </tr></table>

Si te es muy necesario el ID para cada input de texto, entonces puedes poner: id="textfield-#" (donde # seria del 1 al 6 respectivamente) y lo mismo para juicio.

Ahora, en tu PHP necesitas verificar cada una de las 6 lineas (cero a 5):

Código PHP:
Ver original
  1. for($i = 0; $i <= 5; $i++) {
  2.     // Para cada checkbox (del 1 al 6) haces lo mismo
  3.     $check1 = $_POST['checkbox1'];
  4.     // Con asignacion ternaria es mas facil
  5.     $c1 = (isset($check[$i]) && $check[$i] = 1) ? 'SI' : 'NO';
  6.  
  7.     // Ahora los input de texto, los escapas para evitar inyeccion SQL o problemas con comillas
  8.     $nota = mysql_real_escape_string($_POST['nota'][$i]);
  9.     $textfield = mysql_real_escape_string($_POST['textfield'][$i]);
  10.     $juicio = mysql_real_escape_string($_POST['juicio'][$i]);
  11.  
  12.     // Solo falta hacer el UPDATE y listo!
  13.     // ... usando las variables $c1 ... $c6, $nota, $textfield y $juicio
  14.     // ... supongo que el filtro sera usando $i+1 como id
  15. }
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 23/03/2011, 09:14
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: problema de update multiplo

Gracias Triby para la respuesta. Tengo un poco de confusion en entender tus scripts.... En el html pusiste el exemplo solo los array por el primer "alumno", y por los otros tengo que poner los mismos nombres? ( checkbox1, checkbox2 etc...) Por favor se puedes explicarme te lo agradezco.

En el php yo puse asì:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
# for

for($i = 0; $i <= 5; $i++) {
// Para cada checkbox (del 1 al 6) haces lo mismo
$c1 = $_POST['c'];
$c2 = $_POST['c2'];
$c3 = $_POST['c3'];
$c4 = $_POST['c4'];
$c5 = $_POST['c5'];
$c6 = $_POST['c6'];
// Con asignacion ternaria es mas facil
$c1 = (isset($check[$i]) && $check[$i] = 1) ? 'SI' : 'NO';
$c2 = (isset($check[$i]) && $check[$i] = 1) ? 'SI' : 'NO';
$c3 = (isset($check[$i]) && $check[$i] = 1) ? 'SI' : 'NO';
$c4 = (isset($check[$i]) && $check[$i] = 1) ? 'SI' : 'NO';
$c5 = (isset($check[$i]) && $check[$i] = 1) ? 'SI' : 'NO';
$c6 = (isset($check[$i]) && $check[$i] = 1) ? 'SI' : 'NO';

// Ahora los input de texto, los escapas para evitar inyeccion SQL o problemas con comillas
$nota3 = mysql_real_escape_string($_POST['nota3'][$i]);
$juicio = mysql_real_escape_string($_POST['juicio'][$i]);

}

/////////////////////////////////////////////////////////////////////////////////////////////

if($nota3<3){
$val="bajo";
}
if($nota3>=3 && $nota<3.7){
$val="basico";
}
if($nota3>3.7 && $nota<4.4){
$val="alto";
}
if($nota3>=4.4){
$val="superior";
}

///////////////////////////////////////////////////////////////////////////////////////////////
# update

$sql = "UPDATE PRIMERO_AA_espanol SET c1='$c1', c2='$c2', c3='$c3', c4='$c4', c5='$c5', c6='$c6', nota3='$nota3', val='$val' , juicio='$juicio' WHERE id='$i+1'";
$result = mysql_query($sql);

mysql_close();
/////////////////////////////////////////////////////////////////////////////////////

pero no funciona...solo me insertò en el campo n6 todos "NO" en los checkbox y "bajo " como valor de la nota, nada màs....Puede iluminarme?

Gracias de antemano

Saludos

Etiquetas: update
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 17:54.