Foros del Web » Programando para Internet » PHP »

mostrar registros segun la opcion del select

Estas en el tema de mostrar registros segun la opcion del select en el foro de PHP en Foros del Web. Buenas a todos!!Necesito vuestra ayudara para resolver un ejercicio que nose por donde cogerlo, ya que no llevo mucho tiempo en este mundo de php ...
  #1 (permalink)  
Antiguo 28/01/2010, 17:10
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 13 años
Puntos: 3
mostrar registros segun la opcion del select

Buenas a todos!!Necesito vuestra ayudara para resolver un ejercicio que nose por donde cogerlo, ya que no llevo mucho tiempo en este mundo de php y aun me cuesta. Os explico un poco lo que tengo y espero que me podais ayudar.

Primero de todo tengo dos tablas en mi base de datos:

distributor(id_distributor,distributor_name)
y
client(id_client, client_name, id_distributor, contracted_space, registration_date, type_of_client).

Y segundo os cuento un poco lo que intento hacer.
Bueno yo tengo un formulario con un select que muestra los distribuidores sacados de la tabla distributor de la base de datos y un segun select introducido por mi con varios años(2005,2006...).
Ahora bien yo quiero que al elegir un distributor y un año me muestre una tabla con todos los meses del año, y mediante una consulta(me imagino) me mire en que fecha se registraron los clientes y ponerlo en la tabla en su correspondiente mes.

Prefiero que sea en php, no me importa que se recargue la pagina o lo que sea, es simplemente una prueba.

Espero vuestra ayuda, pero sin animo de abuso.

Perdonarme si no he dejado las cosas claras, cualquier duda no teneis mas que postear.

Un saludo y mil graciasssssssssssssssss!!!!
  #2 (permalink)  
Antiguo 28/01/2010, 17:30
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 13 años, 5 meses
Puntos: 27
Respuesta: mostrar registros segun la opcion del select

proba con esto.
Código PHP:
// si se envio el form
if( isset($_POST['id_distributo']) ){
// conexion a la base
// el formato de las variables va a depener de tipo de dato
$desde $_POST['anio']."-01-31";
$hasta $_POST['anio']."-12-31";
$sql "select * from client where id_distributor='".$_POST['id_distributor']."' 
AND ( registration_date <='"
.$desde."' AND registration_date >='".$hasta."' ) 
order by registration_date "
;
$res mysql$sql );

#############
# verificas y mostras los datos
#############

Espero que te sirva.
  #3 (permalink)  
Antiguo 29/01/2010, 04:08
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 13 años
Puntos: 3
Respuesta: mostrar registros segun la opcion del select

Hola luis, primero de todo gracias por molestarte en leer el post y luego por contestar

He entendido tu codigo, pero lo que nose es como mostrar la consulta en la tabla, te adjunto lo que he intentado pero no me da resultado.


meses2.php
Código PHP:
<html>
    <body>
        <form action="m2.php" method="post">
                    <select name="distributor" id="distributor">
                    <optgroup label = "-Seleccione un distribuidor-">



<?php        

session_start
();
require (
'db_connect.php');
require (
'functions.php');
//require ('m2.php');

connectar_imc();


                    
                    
$query=mysql_query("SELECT distributor_name FROM distributor");                
                    while(
$row=mysql_fetch_row($query)){
                    echo 
'<option value="' $row[0] . '">' $row[0] . '</option>';
                    }
                    
?>
                    </select>  


                    <select name = "año">
                    <optgroup label = "-Selecciona un a&ntilde;o-">
                        <option value ="2005">2005</option>
                        <option value ="2006">2006</option>
                        <option value ="2007">2007</option>
                        <option value ="2008">2008</option>
                        <option value ="2009">2009</option>
                        <option value ="2010">2010</option>
                    </select>

                    <input type ="submit" value ="Ver" name = "enviar">


    </form>    

                
    </body>
</html>

m2.php
Código PHP:
<?php


if(isset($_POST['distributor'])){

$desde $_POST['año']."-01-31";
$hasta $_POST['año']."-12-31"

$sql "select type_of_client, count(type_of_client) from client where type_of_client="demo" AND id_distributor='".$_POST['id_distributor']."' 
        AND ( registration_date <='"
.$desde."' AND registration_date >='".$hasta."' ) 
        order by registration_date "
;
        
$res mysql_query($sql) or die ("Error no se puedo realizar la consulta: ".mysql_error());
    
        if(
$row=mysql_fetch_array($res)){
            
            echo 
"<table border = '1'> \n";

            echo 
"<tr> \n";

            echo 
"<td><b>Enero</b></td> \n";

            echo 
"<td><b>Febrero</b></td> \n";

            echo 
"<td><b>Marzo</b></td> \n";

            echo 
"<td><b>Abril</b></td> \n";

            echo 
"<td><b>Mayo</b></td> \n";

            echo 
"<td><b>Junio</b></td> \n";

            echo 
"<td><b>julio</b></td> \n";

            echo 
"<td><b>agosto</b></td> \n";

            echo 
"<td><b>septiembre</b></td> \n";

            echo 
"<td><b>octubre</b></td> \n";

            echo 
"<td><b>noviembre</b></td> \n";

            echo 
"<td><b>diciembre</b></td> \n";

            echo 
"</tr> \n";

        do{

            echo 
"<tr> \n";

            echo 
"<td>".$row[0]."</td> \n";

            echo 
"<td>".$row[0]."</td> \n";

            echo 
"</tr> \n";

        }while (
$row=mysql_fetch_array($res));

            echo 
"</table> \n";
        }else{
            echo 
"Error, no te ha salido bien";
        }

?>

Lo tengo en dos archivos porque en uno me liaba y terminaba cagandola, si sabes como reducirlo en uno estaria encantada.

Un saludo y de verdad mil gracias por las molestias
  #4 (permalink)  
Antiguo 02/02/2010, 02:25
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 13 años
Puntos: 3
Respuesta: mostrar registros segun la opcion del select

ok ya esta solucionado.
  #5 (permalink)  
Antiguo 03/02/2010, 02:31
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 13 años
Puntos: 3
Respuesta: mostrar registros segun la opcion del select

Pensaba que lo tenia solucionado pero me equivoque, ahora directamente no me sale nada en la pagina, dejo lo que tengo hasta ahora a ver si a alguien le doy penita y me ayuda :P (es broma)

Código PHP:
<html>
<body>
<form action="meses3.php" method="post">
                <select name="distributor" id="distributor">
                <option value="0">Seleccione un distribuidor</option>


<?php

session_start
();
require (
'db_connect.php');
require (
'functions.php');

connectar_imc();
                                
                    
$query=mysql_query("SELECT id_distributor, distributor_name FROM distributor WHERE deleted_distributor = '0'");
                    while(
$row=mysql_fetch_row($query)){
                        echo 
"<option value= $row[0] ";
                        if(
$_POST['distributor']==$row[0]) echo "selected";
                        echo 
">$row[1]</option>";
                        }

?>
                </select>  


                <select name = "año">
                    <optgroup label = "-Selecciona un a&ntilde;o-">
                        <option value ="2005">2005</option>
                        <option value ="2006">2006</option>
                        <option value ="2007">2007</option>
                        <option value ="2008">2008</option>
                        <option value ="2009">2009</option>
                        <option value ="2010">2010</option>
                    </select>

                <input type= "submit" value = "Ver" name = "enviar">
</form>


<?php  
         
if(isset($_POST['id_distributor'])){
        
        
//recoger valores
        
$id_distributor=$_POST['distributor'];
        
$desde $_POST['año']."-01-31";
        
$hasta $_POST['año']."-12-31"

            
$sql "select * from client where id_distributor='".$_POST['id_distributor']."' 
            AND ( registration_date <='"
.$desde."' AND registration_date >='".$hasta."' ) 
            order by registration_date "
;
            
$res mysql($sql) or die (.mysql_error()); 


            echo 
"<table border = "1"> \n";

            echo 
"<tr><td>Enero</td><td>Febrero</td><td>Marzo</td><td>Abril</td><td>Mayo</td><td>Junio</td><td>Julio</td><td>Agosto</td><td>Septiembre</td><td>Octubre</td><td>Noviembre</td><td>Diciembre</td></tr>";
    
            while (
$fila=mysql_fetch_array($res)){

            echo 
"<tr><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td><td>$fila[type_of_client]</td></tr>";
            }

            echo 
"</table>";
            }
?>
                                               
  </body>
</html>
un saludo y gracias!!
  #6 (permalink)  
Antiguo 03/02/2010, 17:47
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 13 años, 5 meses
Puntos: 27
Respuesta: mostrar registros segun la opcion del select

No se si lo resolviste.
Pero proba esto..

Código PHP:
<?
session_start
();
require (
'db_connect.php');
require (
'functions.php');
connectar_imc();
$query=mysql_query("SELECT id_distributor, distributor_name FROM distributor WHERE deleted_distributor = '0' ");

?>
<html>
<body>
<form action="meses3.php" method="post">
<select name="distributor"*id="distributor">
        <?
        
while($row=mysql_fetch_row($query)){
        
?>
            <option*value="<?=$row[0]?><?=($_POST['distributor']==$row[0]?'selected':'')?> 
                > <?=$row[1]?> </option>
        <?    
        
}
        
?>

</select>


<select name="anio">
<optgroup label="-Selecciona un a&ntilde;o-">
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
</select>

<input type="submit" value="Ver" name="enviar">
</form>


<?
if( $_POST ){
    
    
#recoger valores
    
$id_distributor=$_POST['distributor'];
    
$desde=$_POST['anio']."-01-01";
    
$hasta=$_POST['anio']."-12-31";
    
# el substring lo que hace es devolver el mes de la fecha
    # ej: si el formato del campo es "2005-03-27" devolveria 03
    
$sql "select *, SUBSTRING(registration_date,6,7) as mes from client 
        where id_distributor='"
.$id_distributor."'
        AND ( registration_date >='"
.$desde."' AND registration_date <='".$hasta."' )
        order by registration_date "
;
    
    
$res mysql_query$sql ) or die ( mysql_error() );
        
    
?>
    <table border="1">
    <?
    $meses
=array('01'=>'Ene','02'=>'Feb','03'=>'Mar','04'=>'Abr','05'=>'May','06'=>'Jun',
            
'07'=>'Jul','08'=>'Ago','09'=>'Sep','10'=>'Oct','01'=>'Nov','01'=>'Dic');
    while*( 
$fila mysql_fetch_array($res) ){
        
# si esta el mes en el array
        
if( in_array$fila['mes'], $meses ) ){
            
# imprimo el texto del mes que esta en el array meses[mes]
            
?> <tr><th><?=$meses[$fila['mes']]?></th></tr> <?
            
# quito el mes del array para que no se vuelva a imprimir
            
unset($meses[$fila['mes']]);
        }

        
?><tr><td>
        Nombre de Cliente : <?=$fila['client_name']?><br>
        Fecha de Registro : <?=$fila['registration_date']?><br>
        Tipo de Cliente : <?=$fila['type_of_client']?><br>
        </td></tr><?    
    
}
    
?>    
    </table<?
}
?>
Suerte..

Última edición por luis010182; 03/02/2010 a las 17:52
  #7 (permalink)  
Antiguo 05/02/2010, 02:13
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 13 años
Puntos: 3
Respuesta: mostrar registros segun la opcion del select

Hola luis, de nuevos gracias por responder!
mira puse tu codigo tal cual, revise los datos q coincidieran con los mios y estan bien, pero en el momento de ejecutarlo me sale la pagina en blanco, y no me muestra ningun error ni nada.
Por cierto si me puedes explicar el significado del (*) en las siguientes funciones..porque no lo habia visto nunca y me gustaria entenderlo.
Cita:
<select name="distributor"*id="distributor">
<option*value="<?=$row[0]?>" <?=($_POST['distributor']==$row[0]?'selected':'')?>
> <?=$row[1]?> </option>
un saludo y muchisimas gracias

Etiquetas: opcion, registros, select
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 13:48.