Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Update inputs de un listado

Estas en el tema de Update inputs de un listado en el foro de PHP en Foros del Web. Buen dia amigos , tengo un problema estoy haciendo una actualización masiva de acuerdo , después de un listado relacionado en varias tablas , hago ...
  #1 (permalink)  
Antiguo 04/05/2014, 12:02
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 11 años, 5 meses
Puntos: 1
Exclamación Update inputs de un listado

Buen dia amigos , tengo un problema estoy haciendo una actualización masiva de acuerdo , después de un listado relacionado en varias tablas , hago un UPDATE relacionándolas con las mismas . Estoy utilizando foreach , para que coloque cada cod de alumno , pero no me coje el campo p1. Serian tan amables de ayudarme por favor.

Aqui mi codigo:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4. ?>
  5. <html>
  6. <head>
  7. <title>Calificaciones - Estudiantil</title>
  8. </head>
  9. <body>
  10. <form method="post" action="<?php $_SERVER['PHP_SELF'] ?>" >
  11. <table width="100%" border="1" align="center">
  12.  
  13. <tr>
  14.     <td width="5%"><div align="center"><strong>Codigo</strong></div></td>
  15.     <td width="15%"><div align="center"><strong>Nombre y Apellidos</strong></div></td>
  16.      <td width="8%"><div align="center"><strong>Semestre I</strong></div></td>
  17.     <td width="8%"><div align="center"><strong>Semestre II</strong></div></td>
  18.     <td width="8%"><div align="center"><strong>Semestre III</strong></div></td>
  19.     <td width="8%"><div align="center"><strong>Promedio Final</strong></div></td>  
  20. </tr>
  21.  
  22. <?php
  23.        
  24.         $fecha=mysql_query("select * from annoacademico order by idanno desc limit 1");
  25.         $f=mysql_fetch_array($fecha);
  26.         $sqld=mysql_query("SELECT * FROM docentes WHERE doc_usuario='".$_SESSION['usuario']."'");
  27.         $d=mysql_fetch_array($sqld);
  28.        
  29.        
  30.         $curso=$_GET['idcurso'];
  31.  
  32. $sql="SELECT al.alu_codigo, al.alu_nombres, al.alu_apellidos, ma.idmatricula, ma.idestudiante, det.idprogramacion, det.idmatricula, det.p1 ,det.p2 ,det.p3 , det.pf, pr.idprogramacion, pr.iddocente, pr.idcurso, pr.idseccion, pr.idgrado, pr.idanno, do.doc_codigo, do.doc_usuario  , an.idanno , an.descripcion , cu.idcurso , cu.descripcion FROM cursos cu, alumnos al, docentes do , programacion pr, matricula ma, detalles det , annoacademico an WHERE det.idmatricula = ma.idmatricula AND ma.idestudiante =al.alu_codigo AND pr.idcurso = '".$curso."' AND pr.iddocente ='".$d['doc_codigo']."' AND pr.iddocente = do.doc_codigo AND an.descripcion='".$f['descripcion']."' AND pr.idanno=an.idanno AND pr.idcurso=cu.idcurso AND pr.idprogramacion=det.idprogramacion";
  33.  
  34.  
  35.  
  36.     $ejecuta=mysql_query($sql);
  37.     while($dato=mysql_fetch_array($ejecuta))
  38.     {
  39.     ?>
  40.     <tr>
  41.         <td><div align="center"><?php echo $dato['alu_codigo']?></div></td>
  42.         <td><div align="center"><?php echo $dato['alu_nombres'].' '.$dato['alu_apellidos'] ?></div></td>
  43.        
  44.        
  45.          <input type="text" name="alu_codigo[]" id="alu_codigo[]" value="<?php echo  $dato['alu_codigo'] ?>" >     
  46.         <td><div align="center"> <input type="text" name="p1[]" id="p1[]" value="<?php echo $dato['p1'] ?>" >     </div></td>
  47.         <td><div align="center"> <input type="text" name="p2[]" id="p2[]" value="<?php echo $dato['p2'] ?>"  >    </div></td>
  48.         <td><div align="center"> <input type="text" name="p3[]" id="p3[]" value="<?php echo $dato['p3'] ?>"  >    </div></td>
  49.         <td><div align="center"> <input type="text" name="pf[]" id="pf[]" value="<?php echo $dato['pf'] ?>" >     </div></td>
  50.    
  51.     </tr>
  52.  
  53.  
  54. <?php  
  55.  
  56.         if ( isset($_POST['p1']) || isset($_POST['p2']) || isset($_POST['p3']) || isset($_POST['pf']) || isset($_POST['alu_codigo'])  )
  57. {
  58.  
  59.    
  60.      $p1=$_POST['p1']; 
  61.      $p2=$_POST['p2'];
  62.      $p3=$_POST['p3'];
  63.      $pf=$_POST['pf'];  
  64.      $alu_codigo=$_POST['alu_codigo'];
  65.            
  66.      foreach ($alu_codigo as $clave  => $p1){        
  67.        
  68.     echo $sqlx="UPDATE detalles, programacion , matricula ,alumnos , docentes ,cursos SET detalles.p1 ='".$p1."' WHERE detalles.idprogramacion='".$dato['idprogramacion']."' AND detalles.idmatricula='".$dato['idmatricula']."' AND detalles.idmatricula=matricula.idmatricula AND matricula.idestudiante='".$alu_codigo[$clave]."' AND programacion.idprogramacion=detalles.idprogramacion AND programacion.iddocente=doc_codigo AND programacion.iddocente='".$dato['doc_codigo']."'";
  69.    
  70.       $resultado=mysql_query($sqlx,$conexion);     
  71.  
  72.   }
  73.    
  74.    
  75.         echo '<script language="javascript"> alert("Cursos inscritos con exito"); location.href="cursos_asignados_al_docente_x.php";  </script>';
  76.     }
  77.    
  78.     }
  79.     //LLAVE FIN DE WHILE NUMERO # 1
  80.    
  81.  
  82.     ?>
  83.         <td colspan="7" align="center"><input type="submit" name="enviar"   class='btn btn-primary' value="Asignar Calificacion"></td>
  84. </table>
  85.     </form>
  86. </body>
  87. </html>

Espero puedan ayudarme.
__________________

"Nuestra capacidad se aleja de la Humanidad"

Última edición por nexus44; 04/05/2014 a las 13:48
  #2 (permalink)  
Antiguo 05/05/2014, 02:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Update inputs de un listado

Código MySQL:
Ver original
  1. UPDATE detalles
  2. SET detalles.p1='".$p1."',
  3.        detalles.p2='".$p2."',
  4.        detalles.p3='".$p3."',
  5.        detalles.pf='".$pf."'
  6. WHERE detalles.idprogramacion='".$dato['idprogramacion']."'
  7.   AND detalles.idmatricula='".$dato['idmatricula']."'

No repitas posts y menos sin dar toda la información....

Si quieres actualizar un campo de una tabla no necesitas para nada las otras tablas, solo tienes que seleccionar correctamente el registro de la tabla en cuestión. Solo tu puedes saber si esas dos condiciones (WHERE) que he dejado son suficientes.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 05/05/2014, 11:53
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Update inputs de un listado

quimfv , deberías tener un poco mas de cuidado en tus respuesta y proyectarte a lo que leas en cada POST , sinceramente ; creo que dejo toda la información concreta ; con decir actualización masiva , basta ; para entender que estoy hablando de realisarlo mediante un array y en este caso utilizo la instrucción foreach no te preocupes el tema esta solucionado , GRACIAS.
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #4 (permalink)  
Antiguo 06/05/2014, 01:14
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: Update inputs de un listado

Generalmente se debería agradecer a quien tiene intención de ayudar y no molestarte cuando te indican que algo estás haciendo mal que, por cierto, duplicar temas es una violación a las políticas de FDW.

También, por lo general, es bueno mencionar como solucionaste tu problema, porque tal vez sea de utilidad para otros usuarios.

En tu caso, supongo que fue por sobreescribir una variable:

$p1=$_POST['p1'];
$p2=$_POST['p2'];
$p3=$_POST['p3'];
$pf=$_POST['pf'];
$alu_codigo=$_POST['alu_codigo'];

foreach ($alu_codigo as $clave => $p1){
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: almacenar, 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 00:37.