Foros del Web » Programando para Internet » PHP »

Generar Consulta desde Formulario

Estas en el tema de Generar Consulta desde Formulario en el foro de PHP en Foros del Web. Hola compañeros Foreros, vuelvo aqui con un problema que no he podido resolver desde hace unas cuantas horas. Tengo un formulario de busqueda, donde envio ...
  #1 (permalink)  
Antiguo 30/06/2011, 10:58
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 3 meses
Puntos: 2
Generar Consulta desde Formulario

Hola compañeros Foreros, vuelvo aqui con un problema que no he podido resolver desde hace unas cuantas horas.

Tengo un formulario de busqueda, donde envio se 6 datos, en el archivo donde hace la consulta a la base datos lo hago dependiendo de los datos, ya que ningun campo es obligatorio y la consulta se va generando dependiendo de lo que le estoy mandando, por aqui el script

Código PHP:
<?php
session_start
();
if(!isset(
$_SESSION['us_id'])){
header("Location: ../index.php"); 
} else { 
$usuario=$_SESSION['us_id'];
$admin=$_SESSION['us_tipo'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<link rel=stylesheet href="./Style/default.css" type="text/css">
<link rel=stylesheet href="./Style/menuH.css" type="text/css">
<script type="text/javascript" src="accion.js"></script>

<?php
include("conexion.php");
include(
'./Scripts/funcion.php');
$conexion = new ControlBD();
$conexion->conectar();
$conexion->seleccionarBD();

$estatus=$_POST['estatus'];
$recursos=$_POST['recursos'];
$ticket=$_POST['ticket'];
$empresa=$_POST['empresa'];
$descrip=$_POST['descripcion'];
$fecha=cambiar_a_mysql($_POST['fecha']);

$query="SELECT ta_id, ta_fechalimite, ta_fechaentrega, ta_status, ta_comentario, ta_prioridad, ta_idreq, us_nombre,
             us_apellido, ta_accionC, req_descripcion,em_nombre FROM cgtarea 
               INNER JOIN cgrequerimientos on ta_idreq=req_id 
               INNER JOIN cgusuarios ON ta_idrecurso=us_id
               INNER JOIN cgempresa ON em_id=req_idempresa"
;
//* Se agregaron los 2 guines a la condicion de la Fehca para tomara en cuenta la mascara creada en buscar.php*//
if(($estatus!='0') || ($recursos!='0') || ($ticket!='') || ($empresa!='0') || ($descrip!='') || ($fecha!='--')){
    
$query.= " WHERE ";
}
if(
$estatus!='0'){
    
$query.= "ta_status = '$estatus'";
}
if(
$recursos!='0'){
    if(
$estatus!='0'){
        
$query.= " AND us_id ='$recursos'";
    } else {
        
$query.= " us_id ='$recursos'";
    }
}
if(
$ticket!=''){
    if((
$estatus!='0') || ($recursos!='0')){
        
$query.= " AND ta_id = '$ticket'";
    } else {
        
$query.= " ta_id ='$ticket'";
    }
}
if(
$empresa!='0'){
    if((
$estatus!='0') || ($recursos!='0') || ($ticket!='')){
        
$query.= " AND em_id = '$empresa'";
    }else{
        
$query.= " em_id = '$empresa'";
    }
}
if(
$descrip!=''){
    if((
$estatus!='0') || ($recursos!='0') || ($ticket!='') || ($empresa!='0')){
           
$query .= " AND req_descripcion LIKE '%$descrip%'";
        
    }else{
           
$query .= " req_descripcion LIKE '%$descrip%'";
    }
}
if(
$fecha!='--'){
    if((
$estatus!='0') || ($recursos!='0') || ($ticket!='') || ($empresa!='0') || ($descrip!='')){
           
$query .= " AND ta_fechaentrega = '$fecha'";
        
    }else{
           
$query .= " ta_fechaentrega = '$fecha'";
    }
}
/*---------------Query para Contar---------------------*/ 
$contar "SELECT COUNT(ta_id) AS 'CONTAR' FROM cgtarea 
               INNER JOIN cgrequerimientos on ta_idreq=req_id 
               INNER JOIN cgusuarios ON ta_idrecurso=us_id
               INNER JOIN cgempresa ON em_id=req_idempresa
               GROUP BY 'CONTAR'"
;

if((
$estatus!='0') || ($recursos!='0') || ($ticket!='') || ($empresa!='0') || ($descrip!='') || ($fecha!='--')){
    
$contar.= " WHERE ";
}
if(
$estatus!='0'){
    
$contar.= "ta_status = '$estatus'";
}
if(
$recursos!='0'){
    if(
$estatus!='0'){
        
$contar.= " AND us_id ='$recursos'";
    } else {
        
$contar.= " us_id ='$recursos'";
    }
}
if(
$ticket!=''){
    if((
$estatus!='0') || ($recursos!='0')){
        
$contar.= " AND ta_id = '$ticket'";
    } else {
        
$contar.= " ta_id ='$ticket'";
    }
}
if(
$empresa!='0'){
    if((
$estatus!='0') || ($recursos!='0') || ($ticket!='')){
        
$contar.= " AND em_id = '$empresa'";
    }else{
        
$contar.= " em_id = '$empresa'";
    }
}
if(
$descrip!=''){
    if((
$estatus!='0') || ($recursos!='0') || ($ticket!='') || ($empresa!='0')){
           
$contar.= " AND req_descripcion LIKE '%$descrip%'";
        
    }else{
           
$contar.= " req_descripcion LIKE '%$descrip%'";
    }
}
if(
$fecha!='--'){
    if((
$estatus!='0') || ($recursos!='0') || ($ticket!='') || ($empresa!='0') || ($descrip!='')){
           
$contar.= " AND ta_fechaentrega = '$fecha'";
        
    }else{
           
$contar.= " ta_fechaentrega = '$fecha'";
    }
}

$result=$conexion->ejecutarQuery($query);
$resultado=$conexion->ejecutarQuery($contar);
$busq=mysql_fetch_array($resultado);
 
?>
</br>
<div align="center"> <strong> <?php echo $busq[0]; ?></strong> REGISTROS ENCONTRADOS </div>
<form>
<div class="centrado">
<table class="tablas" style="font-family:Tahoma, Geneva, sans-serif; font-size:12px;">
    <tr>
        <th>Empresa</th>
        <th>Ticket</th>
        <th>Ticket Requerimiento</th>
        <th>Descripcion del Requerimeinto</th>
        <th>Recurso</th>
        <th>Estatus</th>
        <th>Comentario</th>
        <th>Accion Cliente</th>
        <th>Fecha Limite</th>
        <th>Fecha Entrega</th>
       </tr>
    <? while($array=mysql_fetch_array($result))
    {
      
$id=$array['ta_id'];
      
$cstatus=$array['ta_status'];
    
?>
    <tr>
        <td><?=$array['em_nombre']; ?></td>
        <td><?=$array['ta_id']; ?></td>
        <td><?=$array['ta_idreq']; ?></td>
        <td><?=str_ireplace($descrip,"<span style='background-color: #88AAEE'>$descrip</span>",$array['req_descripcion']);?></td>
        <td><?=$array['us_nombre']." ".$array['us_apellido']; ?></td>
        <td><?=$array['ta_status']; ?></td>
        <td><?=$array['ta_comentario']; ?></td>
        <td><?=$array['ta_accionC']; ?></td>
        <td><?=cambiar_fecha($array['ta_fechalimite']); ?></td>
        <td><?=cambiar_fecha($array['ta_fechaentrega']); ?></td>
    </tr>
<?  }?>
</table>
</div>
</form>
<? ?>
El problema me da en la segunda consulta, que es donde quiero contar la cantidad de registros encontrados, si envio el formulario vacio, me muestra todos los registros y me cuenta todos, pero si le envio 2 criterios y el resultado es 4, en la parte donde debe mostrar la cantidad que encontro me muestra el siguiente warning:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\gestor\Gestor\buscar_BD.php on line 137

En realidad no se a que se debe ese warning, he leido y he cambiado, pero me sigue dando el warning

Espero puedan ayudarme, SALUDOS
  #2 (permalink)  
Antiguo 30/06/2011, 11:04
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Generar Consulta desde Formulario

Si lo que quieres saber es el número de filas que devuelve una consulta no es necesario que realices otra consulta más, puedes usar la funciona mysql_num_rows:

http://php.net/manual/es/function.mysql-num-rows.php

[EDITO]

Por lo que veo es posible que no quieras saber el número de filas que devuelve la primera consulta (eso lo dirás tú), en ese caso, para ver que errores puedes tener yo realizaría un echo de la variable $contar para ver si la sentencia sql formada es correcta, porque el error que te devuelve tiene toda la pinta de ser por eso.
  #3 (permalink)  
Antiguo 30/06/2011, 11:28
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Generar Consulta desde Formulario

Hola alexg88 muchas gracias por tu respuesta, de verdad me ahogue en un vaso de agua, me funciono perfecto, me muestra la cantidad que consigue en la consulta.

Mil gracias amigo

Saludos

Etiquetas: formulario
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 22:01.