Foros del Web » Programando para Internet » PHP »

Select y checkbox para consultar las columnas de 3 tablas

Estas en el tema de Select y checkbox para consultar las columnas de 3 tablas en el foro de PHP en Foros del Web. Hola a tod@s! Tengo una pagina en php que muestra 3 tablas de una base de datos en Mysql que se llama "contactos", pero la ...
  #1 (permalink)  
Antiguo 21/09/2009, 10:26
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Select y checkbox para consultar las columnas de 3 tablas

Hola a tod@s!

Tengo una pagina en php que muestra 3 tablas de una base de datos en Mysql que se llama "contactos", pero la información que sale, es demasiado.
Y me gustaría darle la posibilidad al usuario, de que muestre solo la informacion que desea y no todo,
¿podria alquien ayudarme a crear una pagina previa, que de opciones al usuario? deberia tener esto:

- Un select que permita escoger; tabla1, tabla2, tabla3

- Unos checkbox que permitan mostrar u ocultar, el Nombre, Email, Telefono.

- Además las tablas tienen, 7 columnas; dia1, dia2, dia3, dia4, dia5, dia6, dia7. Y aqui me gustaria que hubiese otro select, para que mostrase solo el primer dia, o los 2 primeros días, ...

Me gustaria que fuese asi el primer paso, se agradece, si poneis el codigo lo mas completo posible :)
Código PHP:
<form name="form1">
    <
p>¿A que tabla deseas conectarte? <select name="contactos" size="1">
        <
option value="tabla1">tabla1</option>
        <
option value="tabla2">tabla2</option>
        <
option value="tabla3">tabla3</option>
</
select></p>
    <
p>¿Que columnas&nbsp;quieres que aparezcan?</p>
    <
p><input type="checkbox" name="Nombre" value="Nombre">Nombre <input type="checkbox" name="Email" value="Email">Email <input type="checkbox" name="Telefono" value="Telefono">Telefono</p>
    <
p>¿Cuantos dias quieres que se muestren?<select name="dias" size="1">
        <
option>1 dia</option>
        <
option>2 dias</option>
        <
option>3 dias</option>
        <
option>4 dias</option>
        <
option>5 dias</option>
        <
option>6 dias</option>
        <
option>7 dias</option>
</
select></p>
</
form
En el codigo de PHP que tengo, cuando pongo estos codigos, las columnas aparecen, y si quito una de las lineas desaparece, aqui está la trama :)
¿Cómo hacer aparecer y desaparecer estas lineas?
Código PHP:
...
...
$objGrid-> FormatColumn("Nombre");
$objGrid-> FormatColumn("Email");
$objGrid-> FormatColumn("Telefono");
$objGrid-> FormatColumn("dia1");
$objGrid-> FormatColumn("dia2");
$objGrid-> FormatColumn("dia3");
$objGrid-> FormatColumn("dia4");
$objGrid-> FormatColumn("dia5");
$objGrid-> FormatColumn("dia6");
$objGrid-> FormatColumn("dia7");
...
... 

Os paso la base de datos

Código Base de Datos Mysql:
Ver original
  1. --
  2. -- Base de datos: `contactos`
  3. --
  4.  
  5. -- --------------------------------------------------------
  6.  
  7. --
  8. -- Estructura de tabla para la tabla `tabla1`
  9. --
  10.  
  11. CREATE TABLE IF NOT EXISTS `tabla1` (
  12.   `id_tabla1` smallint(100) NOT NULL DEFAULT '0',
  13.   `Nombre` varchar(100) NOT NULL,
  14.   `Telefono` varchar(100) DEFAULT NULL,
  15.   `Email` varchar(11) NOT NULL,
  16.   `dia1` int(11) NOT NULL,
  17.   `dia2` int(11) NOT NULL,
  18.   `dia3` int(11) NOT NULL,
  19.   `dia4` int(11) NOT NULL,
  20.   `dia5` int(11) NOT NULL,
  21.   `dia6` int(11) NOT NULL,
  22.   `dia7` int(11) NOT NULL,
  23.   PRIMARY KEY (`id_tabla1`)
  24. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  25.  
  26. --
  27. -- Volcar la base de datos para la tabla `tabla1`
  28. --
  29.  
  30. INSERT INTO `tabla1` (`id_tabla1`, `Nombre`, `Telefono`, `Email`, `dia1`, `dia2`, `dia3`, `dia4`, `dia5`, `dia6`, `dia7`) VALUES
  31. (1, 'Juan Pedro', '654987321', '[email protected]', 0, 1, 1, 1, 0, 1, 0),
  32. (2, 'Marisa Paredes', '789456123', 'maris@gmma.', 1, 1, 1, 0, 0, 1, 0);
  33.  
  34. -- --------------------------------------------------------
  35.  
  36. --
  37. -- Estructura de tabla para la tabla `tabla2`
  38. --
  39.  
  40. CREATE TABLE IF NOT EXISTS `tabla2` (
  41.   `id_tabla2` smallint(100) NOT NULL DEFAULT '0',
  42.   `Nombre` varchar(100) NOT NULL,
  43.   `Telefono` varchar(100) DEFAULT NULL,
  44.   `Email` varchar(11) NOT NULL,
  45.   `dia1` int(11) NOT NULL,
  46.   `dia2` int(11) NOT NULL,
  47.   `dia3` int(11) NOT NULL,
  48.   `dia4` int(11) NOT NULL,
  49.   `dia5` int(11) NOT NULL,
  50.   `dia6` int(11) NOT NULL,
  51.   `dia7` int(11) NOT NULL,
  52.   PRIMARY KEY (`id_tabla2`)
  53. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  54.  
  55. --
  56. -- Volcar la base de datos para la tabla `tabla2`
  57. --
  58.  
  59. INSERT INTO `tabla2` (`id_tabla2`, `Nombre`, `Telefono`, `Email`, `dia1`, `dia2`, `dia3`, `dia4`, `dia5`, `dia6`, `dia7`) VALUES
  60. (3, 'Maria Jimenez', '6549fg7321', 'msdfn@ggma.', 0, 1, 1, 1, 0, 1, 0),
  61. (4, 'Joan Pex', '789233123', 'msdaris@gmm', 1, 1, 0, 0, 1, 1, 0);
  62.  
  63. -- --------------------------------------------------------
  64.  
  65. --
  66. -- Estructura de tabla para la tabla `tabla3`
  67. --
  68.  
  69. CREATE TABLE IF NOT EXISTS `tabla3` (
  70.   `id_tabla3` smallint(100) NOT NULL DEFAULT '0',
  71.   `Nombre` varchar(100) NOT NULL,
  72.   `Telefono` varchar(100) DEFAULT NULL,
  73.   `Email` varchar(11) NOT NULL,
  74.   `dia1` int(11) NOT NULL,
  75.   `dia2` int(11) NOT NULL,
  76.   `dia3` int(11) NOT NULL,
  77.   `dia4` int(11) NOT NULL,
  78.   `dia5` int(11) NOT NULL,
  79.   `dia6` int(11) NOT NULL,
  80.   `dia7` int(11) NOT NULL,
  81.   PRIMARY KEY (`id_tabla3`)
  82. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  83.  
  84. --
  85. -- Volcar la base de datos para la tabla `tabla3`
  86. --
  87.  
  88. INSERT INTO `tabla3` (`id_tabla3`, `Nombre`, `Telefono`, `Email`, `dia1`, `dia2`, `dia3`, `dia4`, `dia5`, `dia6`, `dia7`) VALUES
  89. (5, 'Roman Rodriguez', '111987321', 'judrdan@ggm', 0, 1, 1, 1, 0, 1, 0),
  90. (6, 'Jonas Bernabe', '129456123', 'jons@gmma.', 0, 0, 1, 0, 0, 1, 0);
  #2 (permalink)  
Antiguo 21/09/2009, 10:44
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Select y checkbox para consultar las columnas de 3 tablas

Primero creo que tendrias que agregar un value a cada dia y luego hacer algo como esto:
Código PHP:
if(isset($_POST['Nombre']) && !empty($_POST['Nombre']){
    
$objGrid-> FormatColumn("Nombre");
    
$select[] = "Nombre";
}
if(isset(
$_POST['Email']) && !empty($_POST['Email']){
    
$objGrid-> FormatColumn("Email"); 
    
$select[] = "Email";
}
//etc ...

foreach($select as $sel){
    
$fin.= $sel.',';
}

$fin substr($fin,0,strlen($fin)-1);

$sql "SELECT ".$fin." FROM ".$_POST['contactos']; 
Con esto tienes filtrado todo excepto los dias.

Por ahora creo que podria servir para darte una idea de como continuar.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 21/09/2009, 15:19
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Select y checkbox para consultar las columnas de 3 tablas

Gracias Marvin,

pero llevo un par de horas, y no hay manera, no se como integralo bien en el codigo, con los checkbox, ...
¿Podrias escribirme un poco mas de codigo?

Muchas gracias.
  #4 (permalink)  
Antiguo 21/09/2009, 17:48
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Select y checkbox para consultar las columnas de 3 tablas

Ok.... lo que te decia era esto:
Código HTML:
<select name="dias" size="1"> 
	<option value="1">1 dia</option> 
	<option value="2">2 dias</option> 
	<option value="3">3 dias</option> 
	<option value="4">4 dias</option> 
	<option value="5">5 dias</option> 
	<option value="6">6 dias</option> 
	<option value="7">7 dias</option> 
</select> 
Por otro lado debes agregarle el method a tu etiqueta <form> que quedaria algo como esto:
Código HTML:
<form name="form1" method="post"> 
Y en tu php debes ir a buscar ese select.
Código PHP:
if(isset($_POST['dias'])){
    for(
$a=1;$a<$_POST['dias'];$a++){
        
$where[] = 'dia'.$a.' = 1';
    }
    foreach(
$where as $wher){ 
        
$w.= $wher.','
    }
    
$wsubstr($w,0,strlen($w)-1); 
}else{
    
$w false;

Entonces finalmente te quedaria algo como esto:
Código PHP:
if(isset($_POST['Nombre']) && !empty($_POST['Nombre']){ 
    
$objGrid-> FormatColumn("Nombre"); 
    
$select[] = "Nombre"

if(isset(
$_POST['Email']) && !empty($_POST['Email']){ 
    
$objGrid-> FormatColumn("Email");  
    
$select[] = "Email"

if(isset(
$_POST['Telefono']) && !empty($_POST['Telefono']){ 
    
$objGrid-> FormatColumn("Telefono");  
    
$select[] = "Telefono"
}
if(isset(
$_POST['dias'])){
    for(
$a=1;$a<$_POST['dias'];$a++){
        
$where[] = 'dia'.$a.' = 1';
        
$objGrid-> FormatColumn("dia".$a); 
    }
    foreach(
$where as $wher){ 
        
$w.= $wher.','
    }
    
$wsubstr($w,0,strlen($w)-1); 
}else{
    
$w false;
}
foreach(
$select as $sel){ 
    
$fin.= $sel.','


$fin substr($fin,0,strlen($fin)-1); 
if(!
$w){
    
$sql "SELECT ".$fin." FROM ".$_POST['contactos']." WHERE ".$w;  
}else{
    
$sql "SELECT ".$fin." FROM ".$_POST['contactos'];

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 22/09/2009, 03:02
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Select y checkbox para consultar las columnas de 3 tablas

Hola,
gracias, ya voy poco a poco perfilandolo.
Uso Netbeans y me sale en rojo las lineas que pone:

if(isset($_POST['Nombre']) && !empty($_POST['Nombre']){

¿me falta algo?

Otra duda es, en el otro archivo que tengo que se llama "columnas2.php", que muestra las columnas
¿Que tengo que poner en lugar de:?
....
$objGrid-> FormatColumn("Nombre");
$objGrid-> FormatColumn("Email");
...

Mira he podido hacer esto, todo en PHP:
Código PHP:
<?php
mysql_connect
("localhost""root""") or die(mysql_error());
mysql_select_db("") or die(mysql_error());

echo 
"<form name='form1' method='post' action='columnas2.php'>";
echo 
"<select name='dias' size='1'>";
echo 
"<option value='1'>1 dia</option>";
echo 
"<option value='2'>2 dias</option>";
echo 
"<option value='3'>3 dias</option>";
echo 
"<option value='4'>4 dias</option>";
echo 
"<option value='5'>5 dias</option>";
echo 
"<option value='6'>6 dias</option>";
echo 
"<option value='7'>7 dias</option>";
echo 
"</select>";
echo 
"<input type='checkbox' name='Nombre' value='Nombre'>Nombre";
echo 
"<input type='checkbox' name='Email' value='Email'>Email";
echo 
"<input type='checkbox' name='Telefono' value='Telefono'>Telefono</p>";
echo 
"<input type='submit' name='enviar' value='Enviar'>";
echo 
"</form>";

// DESPLEGABLE Y CHECKBOX PARA LAS OPCIONES
if(isset($_POST['Nombre']) && !empty($_POST['Nombre']){
    
$objGrid-> FormatColumn("Nombre");
    
$select[] = "Nombre";
}
if(isset(
$_POST['Email']) && !empty($_POST['Email']){
    
$objGrid-> FormatColumn("Email");
    
$select[] = "Email";
}
if(isset(
$_POST['Telefono']) && !empty($_POST['Telefono']){
    
$objGrid-> FormatColumn("Telefono");
    
$select[] = "Telefono";
}
if(isset(
$_POST['dias'])){
    for(
$a=1;$a<$_POST['dias'];$a++){
        
$where[] = 'dia'.$a.' = 1';
        
$objGrid-> FormatColumn("dia".$a);
    }
    foreach(
$where as $wher){
        
$w.= $wher.',';
    }
    
$wsubstr($w,0,strlen($w)-1);
}else{
    
$w false;
}
foreach(
$select as $sel){
    
$fin.= $sel.',';
}

$fin substr($fin,0,strlen($fin)-1);
if(!
$w){
    
$sql "SELECT ".$fin." FROM ".$_POST['contactos']." WHERE ".$w;
}else{
    
$sql "SELECT ".$fin." FROM ".$_POST['contactos'];
}


?>
Le he añadido al codigo lo de conectar a la base de datos y lo de action='columnas2.php' a la etiqueta form
¿Crees que esta bien?, aunque ahora no me furru

Muchas gracias!
  #6 (permalink)  
Antiguo 22/09/2009, 08:01
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Select y checkbox para consultar las columnas de 3 tablas

Fijate que:
Código PHP:
if(isset($_POST['Nombre']) && !empty($_POST['Nombre']){ 
El if parte con un(, pero al terminar la linea (o sea {) no cierra nunca.
Cambialo por esto:
Código PHP:
if(isset($_POST['Nombre']) && !empty($_POST['Nombre'])){ 
Abajo de todo y antes de ?> ponle esto:
Código PHP:
echo $sql
Prueba mirando la pagina y luego tomando el sql que te debe salir en pantalla y testearlo en tu cliente MySQL.

Lo otro que falta es que en esta linea que te digo que agregues para que pruebes si sirve el sql es que hagas la busqueda de datos.

Algo del tipo:
Código PHP:
$resultados mysql_query($sql);
while(
$datos mysql_fetch_array($resultados){
    echo 
''.$datos['Nombre'].'<br>'//etc...

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 22/09/2009, 11:35
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Select y checkbox para consultar las columnas de 3 tablas

Ahora si me funciona.
Por si a alguien le vale, donde ponia
....
$objGrid-> FormatColumn("Nombre");
$objGrid-> FormatColumn("Email");
...

ahora he puesto:

...
$nombre;
$email;
$telefono;
...

Muchas gracias, has sido una gran ayuda
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 04:36.