Foros del Web » Programando para Internet » PHP »

como trabajar con multiples valores

Estas en el tema de como trabajar con multiples valores en el foro de PHP en Foros del Web. Hola Tengo problemas con la creacion de un filtro de datos como pueden ver en el codigo, las primeras dos consultas son para obtener los ...
  #1 (permalink)  
Antiguo 16/01/2008, 14:52
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación como trabajar con multiples valores

Hola

Tengo problemas con la creacion de un filtro de datos
como pueden ver en el codigo, las primeras dos consultas son para obtener los id a traves del nombre del filtro y del dato, con esos valores que son muchos alrededor de 30 en idfiltro y 3000 en iddato, son las condiciones para las consultas de contadores


Código PHP:
<?php
 
    $sql
=("SELECT idfiltro 
    FROM `filtro`  
    WHERE nombre = '"
.$nom."'"); 
    
    
$result=mysql_query($sql,$link);
    
$rowmysql_fetch_array($result);

        
$var=$row[];

    
$sql1=("SELECT iddato 
    FROM `datos`  
    WHERE datoreal = '"
.$dat."'"); 
    
    
$result1=mysql_query($sql1,$link);
    
        
$valor=$row[];


if (
$valor <> NULL){

if (
$var <> NULL){

    
    
$consulta=("SELECT COUNT(*) FROM registo 
    WHERE YEAR(fecha) = YEAR(DATE_ADD(NOW(), INTERVAL 0 YEAR))
    AND MONTH(fecha) = MONTH(DATE_ADD(NOW(), INTERVAL 0 MONTH))
    AND idfiltro='"
.$var."'
    AND iddato='"
.$valor."'");

    
$resultado=mysql_query($consulta,$link);
    
$countmysql_fetch_array($resultado);
    
    
?>
        
    <tr>
    <td><? echo $count[0];?></td>
    </tr>
    }
}?>


, la consulta ahora bien es como tomo estos valores del arreglo para asignarlos a la condicion de la consulta, es decir para el idfiltro 1,comparar el iddato1, iddato 2 etc, y el idfiltro2 comparar con iddato1,iddato2 etc, ...

espero entiendan la problematica

saludos
  #2 (permalink)  
Antiguo 16/01/2008, 16:31
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: como trabajar con multiples valores

Hola, como tu lo mencionas puedes generar una consulta para meter todos los valores de tu tabla registro en una arreglo y despues solamente recorrer el arreglo en base a los filtros que el usuario designe.

Podrias explicar un poco mejor tu problema, para ayudarte mejor =).

salu2
__________________
"Eres grande por que caminas entre gigantes"
  #3 (permalink)  
Antiguo 16/01/2008, 18:44
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como trabajar con multiples valores

hola

mira lo que yo qro hacer es que en la consulta

me tome los valores obtenidos de las consultas anteriores


ejemplo
SELECT COUNT(*) FROM registo
WHERE YEAR(fecha) = YEAR(DATE_ADD(NOW(), INTERVAL 0 YEAR))
AND MONTH(fecha) = MONTH(DATE_ADD(NOW(), INTERVAL 0 MONTH))
AND idfiltro='1'
AND iddato='2'");


SELECT COUNT(*) FROM registo
WHERE YEAR(fecha) = YEAR(DATE_ADD(NOW(), INTERVAL 0 YEAR))
AND MONTH(fecha) = MONTH(DATE_ADD(NOW(), INTERVAL 0 MONTH))
AND idfiltro='1'
AND iddato='3'");

etc ...

es eso el punto es como hacer q tome los valores en orden y los conjuegue es decir el primer idfiltro con todos los iddato y asi sucesivamente
  #4 (permalink)  
Antiguo 16/01/2008, 18:59
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: como trabajar con multiples valores

los id's se pueden repetir??, porque de no hacerlo no veo el porque hacer dos consultas, ademas al utilizar el "=" no creo que que devuelva un arreglo(aclaro, si no se repiten los id's), a lo mejor lo que necesitas es el between, ejemplo:
Código:
SELECT COUNT(*) FROM registo
WHERE YEAR(fecha) = YEAR(DATE_ADD(NOW(), INTERVAL 0 YEAR))
AND MONTH(fecha) = MONTH(DATE_ADD(NOW(), INTERVAL 0 MONTH))
AND idfiltro='1'
AND iddato BETWEEN '1' AND '3'";
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 16/01/2008, 19:07
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como trabajar con multiples valores

hola

si los id son unico

al utilizar el between en iddato como le dire cual es el final

xq ambos idfiltro e idddato son incrementales

saludos
  #6 (permalink)  
Antiguo 16/01/2008, 19:38
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: como trabajar con multiples valores

perdona, creo que no habia entendido

para lo que pretendes lograr, hay que crear un bucle y si efectivamente hay que hacer 2 consulta:
Código PHP:
$sql=("SELECT idfiltro FROM `filtro`WHERE nombre = '".$nom."'"); 
$result=mysql_query($sql,$link);
$varmysql_fetch_assoc($result);

$sql1=("SELECT iddato FROM `datos`WHERE datoreal = '".$dat."'"); 
$result1=mysql_query($sql1,$link);
$valor=mysql_fetch_assoc($result1);

$total=array();
foreach(
$var as $k => $v){
   foreach(
$valor as $k2 => $v2){
       
$sql="SELECT COUNT(*) FROM registo WHERE YEAR(fecha) = YEAR(DATE_ADD(NOW(), INTERVAL 0 YEAR)) AND MONTH(fecha) = MONTH(DATE_ADD(NOW(), INTERVAL 0 MONTH)) AND idfiltro='$v' AND iddato='$v2'";
        
$reg=@mysql_query($sql,$link);
         if(
$reg!=0){
               
$total[]=$reg;
         }
         else{
               
$total[]=0;
         }
   }
}
//para ver los valores de total
foreach($total as $a => $b){
     echo 
$b;

espero te de una idea saludos.

PD. $a, $b, $k, $k2, $v y $v2 son solo por darle nombre a las variables.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 16/01/2008 a las 19:47
  #7 (permalink)  
Antiguo 16/01/2008, 20:47
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como trabajar con multiples valores

hola

si es eso lo que necesito

graxx

te cuento q tal me va saludos
  #8 (permalink)  
Antiguo 16/01/2008, 21:17
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como trabajar con multiples valores

hola yo nuevamente

esta tomando correctamente todos los iddatos, pero el idfiltro solo toma el primero el resto no :(
hize casi un copy paste de tu codigo para probarlo y eso es lo q sucede

saludos
  #9 (permalink)  
Antiguo 17/01/2008, 07:19
Avatar de liliancita  
Fecha de Ingreso: diciembre-2007
Mensajes: 189
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como trabajar con multiples valores

hola

Código PHP:
<tr>
<td>Total registro</td>
</t>
<?
$sql
=("SELECT idfiltro FROM `filtro`WHERE nombre = '".$nom."'");  
$result=mysql_query($sql,$link); 
$varmysql_fetch_assoc($result); 

$sql1=("SELECT iddato FROM `datos`WHERE datoreal = '".$dat."'");  
$result1=mysql_query($sql1,$link); 
$valor=mysql_fetch_assoc($result1); 

$total=array();
foreach(
$var as $k => $v){
   foreach(
$valor as $k2 => $v2){
  
 
$v++; // toma el segundo y tercer valor

    
$sql=("SELECT COUNT(*) FROM registo 
    WHERE YEAR(fecha) = YEAR(DATE_ADD(NOW(), INTERVAL 0 YEAR))
    AND MONTH(fecha) = MONTH(DATE_ADD(NOW(), INTERVAL 0 MONTH))
    AND idfiltro='$v' 
    AND iddato='$v2'"
);
    
        
$result=mysql_query($sql,$link);
    
$rowmysql_fetch_array($result);
como ves le agregue un $v++, y asi me toma el segundo y tercer dato del arreglo, pero no el resto, y si no hago el $v++ solo toma un dato,

y el $v2 es lo mismo me toma solo el priemro :(


saludos
  #10 (permalink)  
Antiguo 17/01/2008, 10:22
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: como trabajar con multiples valores

eso es por que el resultado de tu consulta probablemente te este devolviendo un solo registro, prueba imprimiendo el resultado que te devuelven tus consultas y comentas.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
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:49.