Comunidad de diseño web y desarrollo en internet online

UPDATE en base datos ¿Recomendacion?

Citar            
MensajeEscrito el 12 Nov 2013 04:34 pm
Buenas buenas,

Mi duda es la siguiente, quiero hacer un update en una base de datos, donde lo unico que quiero cambiar es el estatus de un usuario de Inactivo a Activo y vicecersa, donde Activo es = 0 e Inactivo = 1 (valores tomados de la tabla).

Cuando hago el select todos los inactivos vienen con el chec destildado (todo bien ahi), el problema es ta cuando hago el UPDATE si se van desmarcados me da error y si envio unos desmarcado y otros marcado no toma en cuenta los desmarcados.

Quisiera saber si es mejor hacerlo asi, o busco una opcion con un select o radio botons, no quiero que sea un text porque prefiero que el usuario no pueda meter mas de 2 opciones que es lo que tiene.

Gracias

Por Abraham Prieto

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Nov 2013 12:25 pm
Postea el código.

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 13 Nov 2013 09:59 pm
Buenas tardes,

Tengo es te codigo el cual lo que hace es seleccionar los registros de usuarios de una base de datos:

Código PHP :

<?php 
   include "includes/conexion.php";
?>

<html>
<head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Documento sin t&iacute;tulo</title>
      <script type="text/javascript" src="js/bootstrap.js"></script>
      <script type="text/javascript" src="js/bootstrap.min.js"></script>
      <link href="css/bootstrap.css" rel="stylesheet" type="text/css">
      <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">



</head>
      <body>
         <div>
         <form name="usuarios" method="post" action="activainactiva3.php">
         <table border="1">
            <tr>
               <td>
                  Usuario
               </td>
               <td>
                  Descripcion
               </td>
               <td>
                  Status
               </td>




            </tr>
            <?php
            $resultado = odbc_exec($conexion,"SELECT * FROM Susuarios");
            while ($row = odbc_fetch_array($resultado)) {
               $Fcode =$row['Code'];
               $Fnombre = $row['Nombre'];
               $Fdescripcion =$row['Descripcion'];
               $Fstatus = $row['Status'];               
            if($Fstatus=='0')
            {
               $activado="checked='checked'";
               //$valor = 0;
            }else

            if($Fstatus=='1')
            {
               $activado="";
               //$valor = 1;
            }

            ?>
               <tr>
                  <td>
                     <?php echo $Fnombre; ?>
                     
                  </td>
                  <td>
                     <?php echo $Fdescripcion; ?>
                  </td>
                  <td>
                     <input type="checkbox" name="nuevo_estatus[]" value="<?php echo $Fstatus; ?>" <?php echo $activado;?>  >
                     <input type="hidden" name="Fcode[]" value="<?php echo $Fcode; ?>">
                  </td>

               </tr>
         <?php }      



             ?>


         </table>
         <div class="form-actions">
            <button type="submit" class="btn btn-primary">Pocesar</button>
          </div>
         </form>
         <?php 
         //echo $activado;
         //echo $valor;

          ?>
         </div>

      
      </body>
      </html>



Este archivo lo recibe y cambia el valor, lo que pasa es que hace el cambio en una sola fila la ultima:

Código PHP :

<?php 
   include "includes/conexion.php";
?>


<?php 
//$Status = $_POST["nuevo_estatus"];
//echo $Status;
$Fcode = $_POST['Fcode']; 
if(isset( $_REQUEST['nuevo_estatus']))
{
   $Status = 0;   
}else{
   $Status = 1;
}

$sql_update = "UPDATE Susuarios SET Status =" .$Status ."WHERE Code =" .$Fcode;

if(odbc_exec($conexion, $sql_update)){
   echo "Se ha actualizado Correctamente";
}else{

   echo "Algo Paso, No se Guardo";

}
echo "<br><a href='usuarios.php'>Volver al listado</a>";

odbc_close($conexion)



 ?>


Lo que quiero es poder actualizar todos los registros que estan en la base de datos y eso es lo que no se hacer.

Gracias

Por Abraham Prieto

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Nov 2013 12:33 pm
Los únicos inputs que tenés en el formulario son "nuevo_estatus" y "Fcode", por lo tanto, no te llegan más datos...

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 14 Nov 2013 01:21 pm
Buenos dias,

Es que son los únicos inputs que necesito, lo único que voy a modificar es el estatus donde Post[Fcode] sea igual a Code (campo código en la tabla).

Gracias

Por Abraham Prieto

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Nov 2013 12:39 pm
Perdón, no había entendido bien cual era el problema.

Lo que pasa es que "nuevo_estatus" y "Fcode" son arrays.

Lo que se me ocurre que hagas es lo siguiente.

En el HTML reemplazar esto

Código HTML :

<input type="checkbox" name="nuevo_estatus[]" value="<?php echo $Fstatus; ?>" <?php echo $activado;?>  >
<input type="hidden" name="Fcode[]" value="<?php echo $Fcode; ?>">

Con esto, agregandole un ID al indice del array para mandar por POST

Código HTML :

<input type="checkbox" name="nuevo_estatus[<?php echo $Fcode; ?>]" value="<?php echo $Fstatus; ?>" <?php echo $activado;?>  >
<input type="hidden" name="Fcode[]" value="<?php echo $Fcode; ?>">


Y del lado del servidor sería algo así:

Código PHP :

<?php
include "includes/conexion.php";

if(!empty($_POST['Fcode'])){
    $errores = false;
    foreach($_POST['Fcode'] AS $key => $Fcode){
        $sql_update = "UPDATE Susuarios SET Status =";
        $sql_update .= (isset(@$_POST['nuevo_estatus'][$key]))?1:0; 
        $sql_update .= "WHERE Code =" .$Fcode;
        if(!odbc_exec($conexion, $sql_update)){
           $errores = true;
        }
    }
    if($errores){
        echo "Algo Paso, No se Guardaron todos";
    }else{
        echo "Se han actualizado Correctamente todos los registros";    
    }

}

echo "<br><a href='usuarios.php'>Volver al listado</a>";

odbc_close($conexion);
?>


Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.