Foros del Web » Programando para Internet » PHP »

consulta de valores

Estas en el tema de consulta de valores en el foro de PHP en Foros del Web. Hola, Después de muchos intentos no consigo dar con una solución. Hago una consulta a la base de datos que siempre me devuelve una única ...
  #1 (permalink)  
Antiguo 29/08/2008, 16:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 8 meses
Puntos: 0
consulta de valores

Hola,

Después de muchos intentos no consigo dar con una solución.

Hago una consulta a la base de datos que siempre me devuelve una única fila, ésta contiene muchos valores y necesito saber el número de ellos que son igual a 0.


Espero haberme explicado bien!


Un saludo a todos!
  #2 (permalink)  
Antiguo 29/08/2008, 17:34
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: consulta de valores

a ver si entendi, tu consulta te trae un solo registro y el registro contiene muchos campos, lo que ti quieres saber es cuantos campos tienen 0??

Pues lo que se me ocurre es recorrer el arreglo (que te regresa la consulta) y validar el valor de cada uno (con codigo)

-- si es eso supongo que te moveran de foro pero mientras aqui te dejo una propuesta y tambien supongo usas php

<?php
$qry="select * from tabla where campo='valor'";
$result=mysql_query($qry);
$row=mysql_fetch_row($result);
$num=000; // aqui pones el total de campos que tiene tu tabla
$cont=0; // este es el contador de ceros
for($i=0; $i<$num; $i++)
{
if($row[$i]==0)
$cont++;
}
echo "El total de campos en 0 es :".$cont;
?>
  #3 (permalink)  
Antiguo 30/08/2008, 08:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta de valores

Ya lo he probado y me da este error: Warning: Division by zero

Te pongo el código para ver si ves dónde está el fallo. Los campos de la tabla son los siguientes: usuario, tipousuario, valor1, valor2, valor3, valor4....valor44

$qry="select * from encuesta where usuario='".$nom."' and tipousuario= 'participante'";
$result=mysql_query($qry);
$row=mysql_fetch_row($result);
$num=46; // aqui pones el total de campos que tiene tu tabla
$cont=0; // este es el contador de ceros
for($i=0; $i<$num; $i++)
{
if($row[$i]==0)
$cont++;
}
//echo "El total de campos en 0 es :".$cont;
$tot=44;

$medi=$total/($tot - $cont);
$media=round($medi,2);
  #4 (permalink)  
Antiguo 30/08/2008, 09:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: consulta de valores

Lo puedes hacer directamente con la base de datos. Supongamos que tienes cuatro campos en cada registro que pudieran tener cero.
Una consulta como esta te devolverá el número de ceros. Claro, tendrás que poner los campos que puedan tenerlos. Yo sólo te he puesto cuatro. También he puesto un id.

Cita:
SELECT id, (if(campo1=0,1,0)+ if(campo2=0,1,0)+if(campo3=0,1,0)+if(campo4=0,1,0) ) as numceros FROM tutabla
  #5 (permalink)  
Antiguo 30/08/2008, 09:37
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: consulta de valores

Jurena creo que no son 4 sino 44

Pues a mi si me funciona bien... prueba esto

<?
$qry="select * from encuesta where usuario='".$nom."' and tipousuario= 'participante'";
echo $qry.";<br>";
$result=mysql_query($qry);
$row=mysql_fetch_row($result);
$num=36; // aqui pones el total de campos que tiene tu tabla
$cont=0; // este es el contador de ceros
for($i=0; $i<$num; $i++)
{
if($row[$i]=="0")
{
$cont++;
echo "El campo ".$i." tiene valor ".$row[$i]."<br>";
}
}
echo "El total de campos en 0 es :".$cont."<br>";
$tot=24;

$medi=$total/($tot - $cont);
echo $medi."<br>";
$media=round($medi,2);
echo $media."<br>";
?>

Que es $total (donde se define)
Pues si te marca div entre 0 es pq de los 44 posibles los 44 son cero...



---------------------------- Resultado -----------------------------------

select * from encuesta where usuario='16' and tipousuario= 'participante';
El campo 6 tiene valor 0
El campo 7 tiene valor 0
El campo 8 tiene valor 0
El campo 9 tiene valor 0
El campo 10 tiene valor 0
El campo 11 tiene valor 0
El campo 12 tiene valor 0
El campo 13 tiene valor 0
El campo 14 tiene valor 0
El campo 15 tiene valor 0
El campo 16 tiene valor 0
El campo 17 tiene valor 0
El campo 18 tiene valor 0
El campo 19 tiene valor 0
El campo 20 tiene valor 0
El campo 21 tiene valor 0
El campo 22 tiene valor 0
El campo 23 tiene valor 0
El campo 24 tiene valor 0
El campo 25 tiene valor 0
El campo 26 tiene valor 0
El campo 30 tiene valor 0
El campo 31 tiene valor 0
El campo 34 tiene valor 0
El total de campos en 0 es :24

Seguro que asi es la media no es alreves??

Última edición por Avatar810; 30/08/2008 a las 09:42
  #6 (permalink)  
Antiguo 30/08/2008, 10:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: consulta de valores

Avatar810,

llevas razón. Aquí habría que estudiar si compensa escribir los if de los 44 campos o no. Además, la solución que he propuesto no especifica cuáles son, y no sé si eso es necesario (por lo que dice martajg, parece que no); en cualquier caso eso se conseguiría fácilmente con otra consulta. Si no van a producirse cambios ni añadidos de campos, tal vez compensara escribirlos en la consulta: al fin y al cabo lo harías sólo una vez (también esto podría hacerse con ayuda de programación), aunque tampoco estoy seguro de ello; si no es así, una solución con programación, como tú sugieres, podría ayudar (hay que poner en el código una condicional para evitar la división por cero). Por lo demás, el problema es que los campos son 44, pero puede haber más: si tuvieran algún denominador común y exclusivo en el nombre, en su tipo o alguna otra característica, podrían ser traídos con una consulta, y se podría concretar otra consulta con esos nombres... Luego, la programación haría el resto, y para este caso parece más conveniente. De todas formas, me da la impresión de que margajg debe darnos algún dato más sobre lo que quiere hacer exactamente con esos datos.

Última edición por jurena; 30/08/2008 a las 11:29
  #7 (permalink)  
Antiguo 30/08/2008, 14:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta de valores

Hola,

Gracias por el interés. De momento esto no me funciona. Os doy más detalles.

Tengo una página con una encuesta y 44 textbox dónde el usuario escribe un respuesta en cada uno ellos (un número).
Desde otra página se ven las encuestas de todos los usuarios, con todos los valores introducidos, el total y la media. Las encuestas se pueden hacer en partes y ahí está el problema. Todos los textbox que quedan vacías Mysql las rellena con ceros y aunque no lo hiciera..para hacer la media necesito saber cuántos de los campos están rellenos para saber por cuánto dividir el total (44) para calcular la media.
  #8 (permalink)  
Antiguo 30/08/2008, 15:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta de valores

Hola de nuevo,

ya me funciona! con el código que ha enviado Avatar. No sé que estaba haciendo mal..

ya que estamos, una preguntita más, ¿para que no me salgan los ceros cuando el usuario no contesta la pregunta qué tengo que hacer?


Gracias a todos
  #9 (permalink)  
Antiguo 30/08/2008, 23:18
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: consulta de valores

como que para que no te salgan los ceros? dices que en la base de datos no se guarde un cero si no se da un valor?? pues definiendo el campos como tipo INT o FLOAT (segun lo necesites) y permitiendo que sea NULL, en este momento seguro lo tienes como NO NULL y en automatico te le pone un cero...

En lo personal creo que te conviene mas que se quede con cero pues despues tendras que validar si puso algo, si lo que puso no es un cero... ya que ese numero se supone es valido en tu encuesta...
  #10 (permalink)  
Antiguo 31/08/2008, 07:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta de valores

ok, gracias y hasta la próxima, que seguro que será pronto porque llevo muy poco en esto.
  #11 (permalink)  
Antiguo 31/08/2008, 20:18
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: consulta de valores

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #12 (permalink)  
Antiguo 31/08/2008, 21:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: consulta de valores

Tema solucionado.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:18.