Foros del Web » Programando para Internet » PHP »

Seleccion multiple de registros (como en phpMyAdmin)

Estas en el tema de Seleccion multiple de registros (como en phpMyAdmin) en el foro de PHP en Foros del Web. Hola! Necesito su ayuda, o grandes sabios del PHP, para resolver este problema. Tengo hecha una aplicacion que uso para controlar los pagos de mis ...
  #1 (permalink)  
Antiguo 11/10/2006, 14:57
Avatar de 2D6
2D6
 
Fecha de Ingreso: enero-2006
Ubicación: Posadas, Misiones
Mensajes: 60
Antigüedad: 14 años, 1 mes
Puntos: 4
Seleccion multiple de registros (como en phpMyAdmin)

Hola!
Necesito su ayuda, o grandes sabios del PHP, para resolver este problema. Tengo hecha una aplicacion que uso para controlar los pagos de mis clientes y a la hora de cancelar las deudas es un poco tedioso tener que abrir cada cuenta para hacerle click al botoncito "pagar cuenta", se me habia ocurrido hacer algo como tiene el phpMyAdmin cuando uno ve los datos en una tabla (el tilde a la izquierda y abajo de todo los botones de borrar, editar, etc)

No logre encontrar ningun script en internet para hacer esto e intente ver el codigo fuente del archivo de phpMyAdmin a ver si me hacia una idea y termine mas perdido de lo que estaba antes.

La pregunta es, como seria el update?

Cualquier ayuda/pista estare eternamente agradecido.

Gracias!

Última edición por 2D6; 11/10/2006 a las 15:48
  #2 (permalink)  
Antiguo 11/10/2006, 16:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 32
Antigüedad: 13 años, 5 meses
Puntos: 0
cada checkbox tiene asociado un value, que es la id principal, si te fijas en una tabla que no tenga id, estas opciones no se muestran para el phpmyadmin.
<input type="checkbox" name="registro1" value="3">
los update los hace en ciclo, preguntando por cada checkbox activado, no es una consulta para todos los cambios.

saludos,
  #3 (permalink)  
Antiguo 11/10/2006, 16:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 18 años, 1 mes
Puntos: 129
Sólo los "checkbox" seleccionados pasan al script PHP para su proceso .. así que el "ciclo" sólo ves los que seleccionastes.

Les recomiendo ver esta FAQ al respecto:

http://www.forosdelweb.com/showthrea...710#post518710

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 11/10/2006, 16:26
 
Fecha de Ingreso: septiembre-2006
Mensajes: 32
Antigüedad: 13 años, 5 meses
Puntos: 0
Cita:
Sólo los "checkbox" seleccionados pasan al script PHP para su proceso .. así que el "ciclo" sólo ves los que seleccionastes.

pero cuando se conocen cuantos checkbox existen, es decir que si los checkbox fueron generados "dinamicamente", se debe llevar en una variable cuantos fueron hechos, luego se debe hacer un ciclo para evaluar cuales cumplen isset($_POST["cheboxes".$i]);

saludos
  #5 (permalink)  
Antiguo 11/10/2006, 18:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 18 años, 1 mes
Puntos: 129
Cita:
Iniciado por cryptex Ver Mensaje
pero cuando se conocen cuantos checkbox existen, es decir que si los checkbox fueron generados "dinamicamente", se debe llevar en una variable cuantos fueron hechos, luego se debe hacer un ciclo para evaluar cuales cumplen isset($_POST["cheboxes".$i]);

saludos
Si, eso es correcto .. pero igualmente sólo obtienes los que seleccionas que es realmente lo que te interesa en la mayoría de casos: tu seleccionas N checkbox que asocian N datos (ID's de registros, etc) para ejecutar un proceso sub-siguiente.

También fijate en la propuesta que hago .. yo genero esos "checkbox" dinámicamente también .. pero los trato como un Array:

nombre[]

Así que no uso más "contadores" por médio ni variables individuales sino que se genera un array con tantos elementos como checkbox seleccionastes. El tema de averigüar los que "No marcastes/seleccionastes" se trabajaría exactamente igual en función del conocimiento del total de los que generastes.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 12/10/2006, 09:19
 
Fecha de Ingreso: septiembre-2006
Mensajes: 32
Antigüedad: 13 años, 5 meses
Puntos: 0
Cita:
También fijate en la propuesta que hago .. yo genero esos "checkbox" dinámicamente también .. pero los trato como un Array:

nombre[]
bueno, tengo una duda, si tienes los checkbox en un archivo, por decir interfaz.html con form action=seleccionados.php como envias el array a seleccionados.php sin usar las variables globales,(opcion desahabilitada desde php4). siempre lo hago con un contador, no te he entendido. talvez lo que hago sea un "machetazo"(ordinario,chambon, etc..) palabras colombianas .

saludos
  #7 (permalink)  
Antiguo 12/10/2006, 09:23
Avatar de 2D6
2D6
 
Fecha de Ingreso: enero-2006
Ubicación: Posadas, Misiones
Mensajes: 60
Antigüedad: 14 años, 1 mes
Puntos: 4
Muchas gracias a todos!
El link que me pasaste Cluster me ayudo mucho, logre hacerlo sin ningun tipo de complicacion.
Si a alguien le interesa ver como quedo aca esta el codigo.

Form. donde se seleccionan los registros
Código PHP:
include ("conexion.php");

$result mysql_query ("SELECT * FROM pendientes_facturas");
$numeroRegistros=mysql_num_rows($result);
while(
$r=mysql_fetch_array($result))
{
    
$desc=$r["desc"];
    
$tipof=$r["tipof"];
    
$empresa=$r["empresa"];
    
$fecha=$r["fecha"];
    
$fechapago=$r["fechapago"];
    
$idfactura=$r["idfactura"];
    
$importe=$r["importe"];
    
$imprimir=$r["imprimir"];
    
$numfactura=$r["numfactura"];
    
$pendiente=$r["pendiente"];
    
$periodo=$r["periodo"];
    
$registro=$r["registro"];
    
$sucursal=$r["sucursal"];
    
$cliente=$r["cliente"];

    
$result2 mysql_query ("SELECT * FROM pendientes_empresas WHERE idempresa = '$empresa'");
    
$numeroRegistros2=mysql_num_rows($result2);
    while(
$r=mysql_fetch_array($result2))
        {
        
$nomempresa=$r["empresa"];
        }
    

if (
$pendiente == '01')
{
$pendiente "<font color=#0000FF>Pendiente</font>";
}
else if (
$pendiente == '02')
{
$pendiente "<font color=#00FF00>Paga</font>";
}
else
{
$pendiente "<font color=#FF0000>Anulada</font>";
}

$sucursalf "000$sucursal";

$iva $importe*21/100;

$importeiva1 $iva+$importe;

setlocale(LC_MONETARY'en_AR');
$importeiva money_format('%i'$importeiva1) . "\n"

echo 
"<table width='98%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor='#999999'>\n";
  echo 
"<tr>\n";
    echo 
"<td width='7%' bgcolor='#CCCCCC' class='Estilo3'><div align='center' class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$sucursalf</a></div></td>\n";
    echo 
"<td width='4%' bgcolor='#CCCCCC' class='Estilo3'><div align='center' class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$tipof</a></div></td>\n";
    echo 
"<td width='9%' bgcolor='#CCCCCC' class='Estilo3'><div align='center' class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$numfactura</a></div></td>\n";
    echo 
"<td width='19%' bgcolor='#CCCCCC' class='Estilo3'><div align='center' class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$nomempresa</a></div></td>\n";
    echo 
"<td width='17%' bgcolor='#CCCCCC' class='Estilo3'><div align='center' class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$cliente</a></div></td>\n";
    echo 
"<td width='15%' bgcolor='#CCCCCC' class='Estilo3'><div align='center' class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$importe</a></div></td>\n";
    echo 
"<td width='15%' bgcolor='#CCCCCC' class='Estilo3'><div align='center'><span class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$importeiva</a></span></div></td>\n";
    echo 
"<td width='10%' bgcolor='#CCCCCC' class='Estilo3'><div align='center' class='Estilo4'><a href='javascript:Abrir_ventana(\"ver_factura.php?idfactura=$idfactura\")'>$pendiente</a></div></td>\n";
    echo 
"<td width='4%' bgcolor='#CCCCCC' class='Estilo3'><div align='center'><span class='Estilo4'></span>\n";
        echo 
"<input type='checkbox' name='seleccion[]' value='$idfactura' />\n";
    echo 
"</div></td>\n";
  echo 
"</tr>\n";
echo 
"</table>\n";
}
?>

<table width="98%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#909DA5">
  <tr>
    <td height="30" bgcolor="#71828A" class="Estilo15"><div align="right">Cambiar facturas marcadas a:
        <select name="nuevoestadofactura" class="Estilo5" id="nuevoestadofactura">
            <option value="01">Pendiente</option>
            <option value="02">Paga</option>
            <option value="03">Anulada</option>
          </select>
  &nbsp;
  <input name="Submit" type="submit" class="Estilo5" value="Actualizar facturas" />
    </div></td>
  </tr>
</table>
</form> 
Script donde hago el update
Código PHP:
<? 
php 
include ("conexion.php");

$fechapago2 date ('Ymd');
$lista=implode(',',$_POST['seleccion']); 

mysql_query("UPDATE pendientes_facturas SET pendiente = '$nuevoestadofactura' WHERE idfactura IN(".$lista.")"); 
mysql_query("UPDATE pendientes_facturas SET fechapago = '$fechapago2' WHERE idfactura IN(".$lista.")"); 
?>
<style type="text/css">
<!--
.Estilo1 {font-family: Verdana, Arial, Helvetica, sans-serif;
    color: #000000;
    font-size: 12px;
    font-weight: bold;
}
-->
</style>
 
<p>&nbsp;</p>
<p><br>
</p>
<div align="center">
  <p><img src="img/icon_r2_c6.jpg" width="83" height="78" /><br />
      <span class="Estilo1">LAS FACTURAS N&ordm; <?php echo ("$lista"); ?> <br>
  FUERON ACTUALIZADAS CON EXITO. </span></p>
  <p><span class="Estilo1">[ <a href="index.php?seccion=vertodas&vertodas=si">VOLVER A TODAS LAS FACTURAS</a> ] <br>
        <br />
  </span></p>
</div>
Ahora, una preguntita mas...y el boton "marcar todas"?
Intente hacerlo con la opcion de Dreamwever de "cambiar propiedad" y no lo logre, supongo que porque cada checkbox tiene su propio nombre. Existe una funcion para marcar todos los checkboxs sin importar su nombre?

Gracias de nuevo!!!
  #8 (permalink)  
Antiguo 12/10/2006, 09:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 8 meses
Puntos: 2135
Si ves el link a las faqs que te publico cluster ahi te dice, usa un foreach:
Código PHP:
foreach( $_POST['nombre_de_los_checkbox'] as $clave ) {
     
// Aqui por cada vez que se hace el ciclo, $clave va a tener el valor del checkbox

y en tu HTML los tienes asi:
Código:
<input type="checkbox" name="nombre_del_checkbox[]" value="valor_de_estecheckbox1">
<input type="checkbox" name="nombre_del_checkbox[]" value="valor_de_estecheckbox2">
<input type="checkbox" name="nombre_del_checkbox[]" value="valor_de_estecheckbox3">
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:49.