Foros del Web » Programando para Internet » PHP »

Filtrar de formulario por fecha y mostrar resultados en la misma pagina

Estas en el tema de Filtrar de formulario por fecha y mostrar resultados en la misma pagina en el foro de PHP en Foros del Web. Hola amigos, quiero hacer un filtro por fecha desde un select de un formulario de la siguiente manera: consultas: if(isset($mes)){ $res_pac=mysql_db_query ($sql_db,"select *, date_format(fecha_cur, '%m/%Y') ...
  #1 (permalink)  
Antiguo 06/04/2009, 23:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 10 años, 11 meses
Puntos: 0
Filtrar de formulario por fecha y mostrar resultados en la misma pagina

Hola amigos, quiero hacer un filtro por fecha desde un select de un formulario de la siguiente manera:

consultas:

if(isset($mes)){



$res_pac=mysql_db_query ($sql_db,"select *, date_format(fecha_cur, '%m/%Y') as mes1 from cursos where publi=1 and mes1='$mes' order by fecha_cur desc limit $variab,10");

}

$pac7=mysql_db_query ($sql_db,"select *, date_format(fecha_cur, '%m/%Y') as mes from cursos group by mes order by mes desc");

y este este es el formulario:

<form name="cursos" method="post" action="evento.php">
<select name="mes" style="width:250px" onchange="javascript: document.cursos.submit();">
<option value="" selected="selected">Seleccione un Mes</option>
<?php while($registros3=mysql_fetch_array($pac7)){?>
<option value="<?php echo $registros3['mes'];?>"><?php echo $registros3['mes'];?></option>
<?php }?>
</select>
</form>

la idea es que al seleccionar una opcion en el formulario se envie la variable mes a la misma pagina y me filtre un listado que tengo mas abajo....El problema esta en que me muestra este error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\ipm\sitio4\evento.php on line 51

En la linea 51 es donde utilizo el $res_pac

Me imagino que es algun error en el query....

Gracias!
  #2 (permalink)  
Antiguo 06/04/2009, 23:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.712
Antigüedad: 14 años, 9 meses
Puntos: 836
Respuesta: Filtrar de formulario por fecha y mostrar resultados en la misma pagina

La función mysql_db_query no te sirve por dos razones: no devuelve un recurso, más bien un entero. Y segundo:
Cita:
Iniciado por Manual de PHP
Note: Esta función es obsoleta desde PHP 4.0.6 no use esta función. Use mysql_select_db() y mysql_query().
Véase:
http://www.php.net/mysql_db_query
http://www.php.net/mysql_select_db
http://www.php.net/mysql_query
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 07/04/2009, 01:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 10 años, 11 meses
Puntos: 0
Gracias por la sugerencia...pero estas seguro que el error esta en ese detalle, porque he venido trabajo con el mysql_db_query y no me habia dado problemas...Por que los dara ahora?

Ya probe con el mysql_query y no sirve igual....

como seria el query?

gracias!

Última edición por GatorV; 07/04/2009 a las 10:03
  #4 (permalink)  
Antiguo 07/04/2009, 09:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.712
Antigüedad: 14 años, 9 meses
Puntos: 836
Respuesta: Filtrar de formulario por fecha y mostrar resultados en la misma pagina

¿Cómo tienes el código ahora mismo? Si nos muestras podemos ayudar a corregirlo.

Además, cuando hay un error en la consulta haz esto:
Código php:
Ver original
  1. $resultado = mysql_query(/* Consulta */) or die(mysql_error());
Así te mostrará el error exacto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 07/04/2009, 10:03
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
Respuesta: Filtrar de formulario por fecha y mostrar resultados en la misma pagina

Tema trasladado desde MySQL.

http://www.forosdelweb.com/f21/funci...-datos-413499/
  #6 (permalink)  
Antiguo 07/04/2009, 11:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Filtrar de formulario por fecha y mostrar resultados en la misma pagina

Este es todo mi codigo:

<?php

if(!isset($variab)){
$variab=0;
}else{
$variab=$variab;
}

if(!isset($acum)){
$acum=0;
}else{
$acum=$acum;
}

$secuencia=0;

if (isset($_POST['id_pais']) or isset($_POST['id_especi']) or isset($_POST['mes'])) {

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

$res_pac=mysql_db_query ($sql_db,"select * from cursos where publi=1 and id_pais='$id_pais' order by fecha_cur desc limit $variab,10");

}

if(isset($id_especi)){

$res_pac=mysql_db_query ($sql_db,"select * from cursos where publi=1 and id_especi='$id_especi' order by fecha_cur desc limit $variab,10");

}

if(isset($mes)){



$res_pac=mysql_query("select *, date_format(fecha_cur, '%m/%Y') as mes1 from cursos where publi=1 and mes1='$mes' order by fecha_cur desc limit $variab,10") or die(mysql_error());
}

}

else {

$res_pac=mysql_db_query ($sql_db,"select * from cursos where publi=1 order by fecha_cur desc limit $variab,10");

}


$secuencia=mysql_num_rows($res_pac);

$res_pact=mysql_db_query ($sql_db," select * from cursos");
$acum=$secuencia+$acum;
$tot=mysql_num_rows($res_pact);

$resto=$tot-$acum;
$antes=$tot-10;

$variab=$variab+10;



$pac5=mysql_db_query ($sql_db," select * from pais");
$pac6=mysql_db_query ($sql_db," select * from especialidad");
$pac7=mysql_query("select *, date_format(fecha_cur, '%m/%Y') as mes from cursos group by mes order by mes desc");

?>


y en el body los formularios:

<td height="42"><form id="pais" name="pais" method="post" action="evento.php">
<select name="id_pais" style="width:250px" onchange="javascript: document.pais.submit();">
<option value="" selected="selected">Seleccione un pais</option>
<?php while($registros1=mysql_fetch_array($pac5)){?>
<option value="<?php echo $registros1['id_pais'];?>"><?php echo $registros1['pais'];?></option>
<?php }?>
</select>
</form></td>
<td><form id="especialidad" name="especialidad" method="post" action="evento.php">
<select name="id_especi" style="width:250px" onchange="javascript: document.especialidad.submit();">
<option value="" selected="selected">Seleccione una especialidad</option>
<?php while($registros2=mysql_fetch_array($pac6)){?>
<option value="<?php echo $registros2["id_especi"];?>"><?php echo $registros2["especi"];?></option>
<?php }?>
</select>
</form></td>
<td><form action="evento.php" method="post" name="cursos" id="cursos">
<select name="mes" style="width:250px" onchange="javascript: document.cursos.submit();">
<option value="" selected="selected">Seleccione un Mes</option>
<?php while($registros3=mysql_fetch_array($pac7)){?>
<option value="<?php echo $registros3['mes'];?>"><?php echo $registros3['mes'];?></option>
<?php }?>
</select>
</form></td>

Mas abajo los resultados en una tabla:

<tr>
<td class="Estilo_flecha"><a href="javascript:history.go(-1)" class="Estilo12">
<?php if($variab>10){?>
&lt;&lt; Anterior
<?php }?>
</a></td>
<td><span class="Estilo13"></span></td>
<td class="Estilo_flecha"><?php if($resto>0){?>
<a href="noti.php?variab=<?php echo $variab;?>&amp;acum=<?php echo $acum; ?>" class="Estilo4">Siguiente &gt;&gt;</a>
<?php }?></td>
</tr>

<?php while($registros1=mysql_fetch_array($res_pac)){?>
<tr>
<td height="20" class=" Estilo_titu_l"><span class=" Estilo_subt_l"><a href="noti_des.php?id_noti=<?php echo $registros1["id_cur"];?>"><?php echo $registros1["evento"];?></a></span></td>
<td height="20" class=" Estilo_res_l"><a href="noti_des.php?id_noti=<?php echo $registros1["id_cur"];?>"><?php echo $registros1["fecha_cur"];?> / <?php echo $registros1["fecha_curf"];?></a></td>
<td height="20" class=" Estilo_titu_l"><span class=" Estilo_res_l"><a href="noti_des.php?id_noti=<?php echo $registros1["id_cur"];?>"><?php echo $registros1["res_noti"];?></a></span></td>
</tr>
<tr>
<td height="21" colspan="3" class=" Estilo_ver_mod"><a href="noti_des.php?id_noti=<?php echo $registros1["id_cur"];?>">ver toda la informaci&oacute;n del curso</a></td>
</tr>
<tr>
<td height="3" colspan="3" ><span class="Estilo_prolist"><img src="linea.png" width="870" height="1" /></span></td>
</tr>
<?php }?>

Este es todo mi codigo....

Gracias!
  #7 (permalink)  
Antiguo 07/04/2009, 11:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.712
Antigüedad: 14 años, 9 meses
Puntos: 836
Respuesta: Filtrar de formulario por fecha y mostrar resultados en la misma pagina

Usa mysql_query para todas las consultas, y en todas coloca mysql_error(), luego, revisa en la página si muestra un error de MySQL.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 07/04/2009, 12:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Filtrar de formulario por fecha y mostrar resultados en la misma pagina

Alli lo que quiero hacer son tres filtros de un listado de eventos: por pais, por especialidad y por fecha. El filtro por pais y especialidad funciona bien el problema esta en el filtro por fecha, el cual hice asi:

En mi tabla "cursos" tengo un campo llamado "fecha_cur" que es el que contiene la fecha : "año/mes/dia". Yo quiero que el usuario pueda filtrar por mes todos los eventos, es decir al seleccionar del select el mes enero que filtre y muestre los eventos de este mes.

Para lograr que en el formulario del select me mustre los meses hago esto:

$pac7=mysql_query("select *, date_format(fecha_cur, '%m/%Y') as mes from cursos group by mes order by mes desc");

Asi me los muestra: 05/2009, 04/2009 (quiero que me los muestre en letras pero eso lo solucionare luego)

y para lograr el filtro hago:

$res_pac=mysql_query("select *, date_format(fecha_cur, '%m/%Y') as mes1 from cursos where publi=1 and mes1='$mes' order by fecha_cur desc limit $variab,10") or die(mysql_error());
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:20.