Foros del Web » Programando para Internet » PHP »

Actualizar varios registros a la vez

Estas en el tema de Actualizar varios registros a la vez en el foro de PHP en Foros del Web. Hola gente de Foros del Web. Quería hacerles una consulta que no he podido solucionar. Ya me he fijado en el foro pero no le ...
  #1 (permalink)  
Antiguo 05/07/2012, 21:13
 
Fecha de Ingreso: junio-2012
Ubicación: Buenos Aires
Mensajes: 4
Antigüedad: 11 años, 10 meses
Puntos: 0
Mensaje Actualizar varios registros a la vez

Hola gente de Foros del Web. Quería hacerles una consulta que no he podido solucionar. Ya me he fijado en el foro pero no le pude encontrar la vuelta a mi problema y quería ver si uds me podian ayudar con esto.
Recien estoy arrancando con php y no le pude encontrar la vuelta .

El asunto es que quiero actualizar varios registros en vez de hacerlo uno por uno, verificándolo por php con un checkbox. Lo que hice hasta ahora es:

el formulario: (que toma los datos desde una bd)
Código PHP:
Ver original
  1. <?php
  2.    
  3.     include("conexion.php");
  4.     $sql="SELECT mar_nombre , mar_id, mar_email, mar_tel FROM marcas ";
  5.     $resultado=mysql_query($sql);
  6.    
  7. ?>
  8. <form action="lala2.php" method="post">
  9.     <table>
  10.         <tr> <?php
  11.              while($fila=mysql_fetch_assoc($resultado)){
  12.              ?>
  13.             <td> <input type="checkbox" name="check[]" id="check[]" > </td>
  14.             <td> <input type="text" name="mar_nombre[]" id="mar_nombre" value="<?php echo($fila["mar_nombre"]); ?>"/> </td>
  15.             <td> <input type="text" name="mar_tel[]" id="mar_tel"  value="<?php echo($fila["mar_tel"]); ?>"/> </td>
  16.             <td> <input type="text" name="mar_email[]" id="mar_email"  value="<?php echo($fila["mar_email"]); ?>"/> </td>
  17.             <input type="hidden" value="<?php echo($mar_id); ?>" name="mar_id[]" id="mar_id" /> <!-- para mandar el prd_id sin llamarlo en otro lugar sin que haga falta -->
  18.  
  19.         </tr>
  20.      <?php
  21.                          
  22.         }
  23.          ?>                  
  24.         <tr>
  25.             <td  colspan="4" align="center"><input type="submit" value="Modificar Marca" class="botones"/></td>
  26.         </tr>
  27.     </table>
  28.    
  29. </form>

Y se envia esto al siguiente archivo:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $check=$_POST["check"];
  4.  
  5. if($check!=1){
  6.     echo("seleccione un registro a modificar");
  7. }else{
  8.  
  9.     $mar_id=$_POST["mar_id"];
  10.     $mar_nombre=$_POST["mar_nombre"];
  11.     $mar_tel=$_POST["mar_tel"];
  12.     $mar_email=$_POST["mar_email"];
  13.  
  14.    for ($i=0; $i<count($mar_id) ; $i++) {
  15.         $sql="UPDATE marcas SET mar_nombre='$mar_nombre', mar_tel='$mar_tel', mar_email='$mar_email' WHERE mar_id=$mar_id ";
  16.     $resultado=mysql_query($sql);
  17.     echo($resultado);
  18.     }
  19.  
  20. }
  21.  
  22. ?>


Sé que me faltan algunas lineas en el código...por lo que estuve viendo, hace falta un for (lo agregué...pero no se si esta bien puesto) y creo que un while, pero la verdad que me perdí.
Con este codigo que les pase me tira siempre "seleccione un registro a modificar"...

Agradeceria mucho su ayuda en este caso en particular y de paso decirles que me agrada mucho la página y la manera que se ayuda (ojala pueda estar algún día del otro lado ayudando )

Saludos
  #2 (permalink)  
Antiguo 05/07/2012, 21:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actualizar varios registros a la vez

Eso que haces en teoría es correcto, solamente que debes acceder a las variables mediante su clave dentro del bucle.

Algo parecido a esto:

Código PHP:
$foo $_POST['foo'][$i]; 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/07/2012, 09:23
 
Fecha de Ingreso: junio-2012
Ubicación: Buenos Aires
Mensajes: 4
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Actualizar varios registros a la vez

Lo hice pero no me da....no me actualiza nada.
Dejo el código de como lo modifique:

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $i=0;
  4. $check=$_POST["check"][$i];
  5.  
  6. if($check!=1){
  7.     echo("seleccione un registro a modificar");
  8. }else{
  9.  
  10.     $mar_id=$_POST["mar_id"][$i];
  11.     $mar_nombre=$_POST["mar_nombre"][$i];
  12.     $mar_tel=$_POST["mar_tel"][$i];
  13.     $mar_email=$_POST["mar_email"][$i];
  14.  
  15.    for ($i; $i<count($check) ; $i++) {
  16.         $sql="UPDATE marcas SET mar_nombre='$mar_nombre', mar_tel='$mar_tel', mar_email='$mar_email' WHERE mar_id=$mar_id ";
  17.     $resultado=mysql_query($sql);    
  18.             ?>
  19.             <!-- Aca quiero mostrar los registros modificados, pero al mostrarlo me muestra solo una A .... :/ -->
  20.             <table class="tabla_marca">
  21.                 <tr><td align="center">Se ha modificado satisfactoriamente la siguiente marca:</td></tr>
  22.                 <tr>
  23.                     <td class="campos_marcas"> <?php echo($mar_nombre[$i]); ?> </td>
  24.                     <td class="campos_marcas"> <?php echo($mar_tel[$i]); ?> </td>
  25.                     <td class="campos_marcas"> <?php echo($mar_email[$i]); ?> </td>
  26.                 </tr>                
  27.             </table>
  28.                 <div>
  29.                     <a href="form-editar-mar.php?mar_id=<?php echo($mar_id);?>">Volver a modificar el marca || </a>
  30.                     <a href="panel-marcas.php">Volver al panel de rubros</a>
  31.                 </div>
  32.                  <?php
  33.  
  34.  
  35.                  }
  36.  
  37. }
  38.          
  39.              ?>
  #4 (permalink)  
Antiguo 06/07/2012, 09:26
ruben_chirinos_1985
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Actualizar varios registros a la vez

Hola mira como estas, aqui tengo yo un script q modifica campos excelente de como tu quieras, para q lo adaptes al tuyo , el problema q tengo es q no me puede llevar y modoficar el codiigo de la perona q inicio sesion , pero modifica muy bien, aqui esta el script

Código PHP:
Ver original
  1. <?php
  2. if (!$_POST){
  3.    //si no recibo datos de POST, muestro el formulario
  4.  
  5.    //es posible que recibamos un id a partir del que hay que mostrar los datos
  6.    
  7. if (isset($_GET['cod_alu']) && isset($_SESSION['cod_docente'])) {
  8.        
  9.           $cod_doc = $_SESSION['cod_docente'];
  10.           $cod_alu = $_GET["cod_alu"];
  11.        }else{
  12.        
  13.              $cod_alu = 0;
  14.  
  15.    //extraemos de la base de datos los registros a mostrar
  16.    //Ejecutamos la sentencia SQL, limitando la búsqueda a 10 registros
  17.    $ssql="select * from notas2 where cod_mat = '13' and grado = '8' and cod_alu <> $cod_alu";
  18.    $result=mysql_query($ssql);
  19.  
  20.    echo "<form action='modificar.php' method=post>";
  21.    echo "\n<table align=center border=1 cellspacing=0>";
  22.    echo "<tr><td>Alumnos</td><td>Docentes</td><td>Materia</td><td>Grado</td><td>Notas</td></tr>";
  23.  
  24.    $i=1;
  25.    while ($fila=mysql_fetch_array($result)){
  26.       echo "\n<input type=hidden name='cod_alu$i' value='".$fila["cod_alu"]."'>";
  27.       echo "<tr>";
  28.       echo "<td><input type=text value='".$fila["cod_alu"]."' size='5' maxlength='2' readonly='readonly'></td>";
  29.       echo "<td><input type=text value='".$_SESSION['cod_docente']."' size='5' maxlength='2' readonly='readonly'></td>";
  30.       echo "<td><input type=text value='".$fila["cod_mat"]."' size='5' maxlength='2' readonly='readonly'></td>";
  31.       echo "<td><input type=text value='".$fila["grado"]."' size='5' maxlength='2' readonly='readonly'></td>";
  32.       echo "<td><input type=text name='nota1$i' value='".$fila["nota1"]."' size='5' maxlength='2'></td>";
  33.       echo "</tr>";
  34.       $i++;
  35.       $ultimo_mostrado=$fila["cod_alu"];
  36.    }
  37.  
  38.    echo "<tr><td colspan='3'><label><div align='left'><input type='submit' value='Registrar Notas'></dv></label></td></tr>";
  39.    echo "</table>";
  40.    echo "</form>";
  41.  
  42.    //si se han mostrado registros, pongo el enlace para ver los siguientes
  43.    if (isset($ultimo_mostrado))
  44.           echo "";
  45.        //
  46.        else{
  47.  
  48.    //es que he recibido datos de formulario, entonces tengo que recibirlos y actualizar la base de datos
  49.    for ($i=1;$i<=10;$i++){
  50.       //para cada uno de los elementos que puede haber en el formulario
  51.       if (isset($_POST["cod_alu".$i])){
  52.          //es que este registro estaba en el formulario
  53.          $cod_alu=$_POST["cod_alu".$i];
  54.          $nota1=$_POST["nota1".$i];
  55.          $ssql= "update notas2 set nota1 ='$nota1', cod_doc ='cod_doc' where cod_mat ='13' and grado ='8' and cod_alu ='$cod_alu'";
  56.          if(mysql_query($ssql))
  57.        
  58.          ?>
  59.               </span>
  60.              
  61.               <script type='text/javascript' language='javascript'>
  62.             alert('LAS NOTAS FUERON REGISTRADAS SATISFACTORIAMENTE')
  63.             document.location.href='lapso1.php'  
  64.               </script>
  65.              
  66.               <?php } else ?>
  67.              
  68.               <script type='text/javascript' language='javascript'>
  69.             alert('! ERROR ¡ LAS NOTAS NO FUERON REGISTRADAS INTENTELO DE NUEVO')
  70.             document.location.href='lapso1.php'  
  71.               </script>
  72.              
  73.               <?php
  74.         }
  75.             }
  76.         }
  77.             }
  78.              ?>

Etiquetas: regisro, variables
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:11.