Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-07-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
Lista de checkboxes

Buenos dias, señores.
He hecho un documento PHP que me muestra una lista con todas las noticias que tengo en un servidor mysql. Bueno, al lado del nombre de cada noticia aparece un checkbox para seleccionar la noticia si se desea eliminar o editar. Aquí muestro el código que crea la lista:
Código PHP:
          $result=mysql_query("SELECT * FROM `news`");
          
$numrows=mysql_num_rows($result);
          
          
$news = array();
          for(
$i=0$i<$numrows$i++){
            
$id mysql_result($result$i"id");
            
$news array_pad($news$i+1"nw".$id);
            echo 
"<input name='".$news[$i]."' type='checkbox' id='".$news[$i]."' value='checkbox'> ";
            echo 
mysql_result($result$i"title")."<br>";
          } 
Explico el código del for que es el más lioso. Había pensado que cada checkbox se lamase 'nwID'. Por ejemplo, para la noticia con el ID 1 su checkbox se llamaría 'nw1', para la noticia 2: 'nw2' y así sucesivamente con todos los check boxes. Esto funciona perfectamente. Ahora viene mi duda...
Cómo puedo comprobar desde otro documento PHP que checkboxes hay seleccionados? yo había pensado de declarar una variable de tipo array global. ($news), que alberga el nombre de todos los checkboxes, después en el otro php recorrer todos los ítems de la variable $news i comprobar si estan activados. Pero... (y siempre hay un pero). No tengo ni cochina idea de como hacerlo.
Gracias.
__________________
l2prog.co.nr
Responder Con Cita
  #2  
Antiguo 05-07-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
No se si me equivoco, pero el valor que envian los checkbox son booleanos, de ser asi, esto podria funcionar:
Código PHP:
$tn=5;//total de noticias
for($i=0;$i<$tn;$i++){
  if(
$_POST["nw$i"]==true){
     ...
codigo...
  }

Saludos.
Responder Con Cita
  #3  
Antiguo 05-07-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
No se pk, pero cuando elimino más de un registro me da error.
__________________
l2prog.co.nr
Responder Con Cita
  #4  
Antiguo 05-07-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Cita:
Empezado por [Gunman]
No se pk, pero cuando elimino más de un registro me da error.
¿Que error?, ¿Como los eliminas?, ¿Cual es el código?

Saludos.
Responder Con Cita
  #5  
Antiguo 05-07-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
Ya está listo...
Aquí pongo el código, por si se puede mejorar:
Código PHP:
if(isset($DeleteNews)){
        
$result=mysql_query("SELECT * FROM `news`");
        
$numrows=mysql_num_rows($result);
        
$i 0;
        
$t 0;        
        
$max $numrows;
        while(
$i<$numrows && $t<$max){
            
$id mysql_result($result$i"id");
            if(
$_POST["nw$id"]==true){
                
$result mysql_query("DELETE FROM `news` WHERE `id` = ".$id);
                if(
$result==1){
                  echo 
"<br>Notícia [".$id."] eliminada!";
                }else echo 
"<br>Error al eliminar la notícia!"
                
$result=mysql_query("SELECT * FROM `news`");
                
$numrows=mysql_num_rows($result);                
                
$i $i-1;                
            }
            
$i $i+1;
            
$t $t+1;
        }
    } 
__________________
l2prog.co.nr
Responder Con Cita
  #6  
Antiguo 05-07-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Perfecto, lo único que creo conveniente agregarle sería que indicara que noticias no fueron eliminadas, se que ya muestra este mensaje:"<br>Error al eliminar la notícia!", pero no indica el id de la noticia que no se pudo eliminar, lo cual podría hacerso con algo asi:"<br>Error al eliminar la notícia $id!"

Edicion:
Aún no he entendido el porque de la siguiente consulta:
Código PHP:
$result=mysql_query("SELECT * FROM `news`"); 
Saludos.

Última edición por D-MO fecha: 05-07-2006 a las 22:01:41.
Responder Con Cita
  #7  
Antiguo 05-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Otro apunte al código que muestras, Gunman, sería el hecho de que no hay necesidad de solicitar todos los campos de todos los registros (SELECT * FROM) si únicamente vas a utilizar el campo "ID". ¿Para qué requerir entonces el resto de campos? Sobre todo cuando puedes hacerlo así: "SELECT ID FROM...".

Algo similar ocurre con la consulta posterior. Si necesitas saber el número de noticias ("news") puedes hacer una consulta tal que así: "SELECT COUNT(*) FROM news", sin necesidad de traer ningún registro, puesto que sólo necesitas saber el número de los mismos y no nada más.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 06-07-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
Cita:
Empezado por dec
Hola,

Otro apunte al código que muestras, Gunman, sería el hecho de que no hay necesidad de solicitar todos los campos de todos los registros (SELECT * FROM) si únicamente vas a utilizar el campo "ID". ¿Para qué requerir entonces el resto de campos? Sobre todo cuando puedes hacerlo así: "SELECT ID FROM...".

Algo similar ocurre con la consulta posterior. Si necesitas saber el número de noticias ("news") puedes hacer una consulta tal que así: "SELECT COUNT(*) FROM news", sin necesidad de traer ningún registro, puesto que sólo necesitas saber el número de los mismos y no nada más.
Bueno, yo es que no se mucho de PHP y voy un poco a lo bestia. gracias por el apunte. así optimizo my scrip.
__________________
l2prog.co.nr
Responder Con Cita
  #9  
Antiguo 06-07-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Perdonar por llegar tarde, el tema de los checks es mucho mas facil de lo que estáis haciendo, mexplico:

puedes crear la lista de checks de la siguiente forma:
Código PHP:
$query=mysql_query("SELECT * FROM `news`");
while ( 
$result mysql_fetch_array$query ) ) {
...
   echo 
"<intpu type='checkbox' value=1 name='nw["$result['id'] ."]'>"
....

Solo pongo la parte del check y un bucle mas mejor, como puedes ver paso paso del "for" y del "mysql_result".

Ahora cuando mandes el formulario se genera un array con llamado "nw[]" que como indice lleva el identificador de tu noticia, ahora solo queda recorrerlo:
Código PHP:
foreach ( $_POST["rw"] AS $k => $v ) { // $k es el indice y $v el valor que siempre será 1
......

Como solo se envían los checks que se han marcado no hace falta que pongas ningún tipo de "if"
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #10  
Antiguo 06-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Gunman
Bueno, yo es que no se mucho de PHP y voy un poco a lo bestia. gracias por el apunte. así optimizo my scrip.
Fíjate, Gunman, que lo que he referido no tiene que ver con PHP, sino con MySQL. Incluso diría que con SQL, así, en general.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Mejor heredar de una Lista o mejor introducir la Lista en un campo? Jome OOP 8 24-11-2005 17:11:16
Como puedo cambiar la apariencia de los checkboxes mostrados en un TListView??? abracadabra OOP 0 01-08-2005 18:31:30
Lista de reproduccion b3nshi Varios 9 06-03-2005 03:32:24
Componente que tenga checkboxes como items k_miragaya OOP 2 22-07-2004 09:55:54
Lista de tablas sur-se Firebird e Interbase 2 01-06-2004 19:00:30


La franja horaria es GMT +2. Ahora son las 11:16:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi