Foros del Web » Programando para Internet » PHP »

If elseif en consulta mysql

Estas en el tema de If elseif en consulta mysql en el foro de PHP en Foros del Web. Estoy haciendo una consulta MySQL en un PHP por la cual quiero que me imprima un resultado dependiendo de la cantidad. Es decir if (resultado ...
  #1 (permalink)  
Antiguo 19/04/2012, 05:11
 
Fecha de Ingreso: agosto-2008
Ubicación: Madrid
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
If elseif en consulta mysql

Estoy haciendo una consulta MySQL en un PHP por la cual quiero que me imprima un resultado dependiendo de la cantidad. Es decir

if (resultado mayor que 0 y menor que 10) {
print 'menor que 10';
}

Problema?
Que siempre me sale el mismo resultado

Aquí está mi consulta:

Código:
 $sql = "SELECT sum(cantidad) as suma FROM items WHERE id_user='".$_SESSION['myusername']."' ";
$resultado = mysql_fetch_assoc(mysql_query($sql));


if ($resultado > 10) {
print 'mayor';
}
elseif ($resultado < 50 ) {
print 'menor';
}
else {
print 'nada';
}
Qué estoy haciendo mal?
  #2 (permalink)  
Antiguo 19/04/2012, 05:37
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: If elseif en consulta mysql

Pues haces mal en no consultar el manual de php.
Fíjate que es muy simple tu error:

mysql_fetch_assoc() devuelve un array asociativo no un número.
Si quisieras saber el número de filas que devuelve una consulta hay que usar mysql_num_row PERO como en tu consulta lo que quieres es recuperar el Alias 'suma' tienes que hacer lo siguiente:

Código PHP:
<?php

$sql 
"SELECT sum(cantidad) as suma FROM items WHERE id_user='".$_SESSION['myusername']."' ";
$resultado mysql_fetch_assoc(mysql_query($sql));


if (
$resultado['suma'] > 10) {
print 
'mayor';
}
elseif (
$resultado['suma'] < 50 ) {
print 
'menor';
}
else {
print 
'nada';
}
   
?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 19/04/2012, 06:18
 
Fecha de Ingreso: agosto-2008
Ubicación: Madrid
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: If elseif en consulta mysql

uff no puedo creer que haya sido tan simple

Muchas gracias IEKK

Una consulta más, si no es mucha molestia

Cómo puedo hacer la consulta desde PHP para un "mayor que" y "menor que"?

Es decir, algo como

Código PHP:
Ver original
  1. if ($resultado['suma'] > 10 AND < 20)

  #4 (permalink)  
Antiguo 19/04/2012, 07:33
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: If elseif en consulta mysql

Código PHP:
Ver original
  1. if ($resultado['suma'] > 10 && $resultado['suma'] < 20) {
  2.  
  3. }
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 19/04/2012, 07:59
 
Fecha de Ingreso: agosto-2008
Ubicación: Madrid
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: If elseif en consulta mysql

Gracias!!

Justo en este momento lo estaba haciendo igual (aunque con un "and" en lugar del &&)

Soy un poco bruto y torpe, pero como quiero aprender pregunto. Estoy haciendo una chapuza que hará que tenga un elseif infinito ¿cómo meto esto en un while o en un bucle for?

Código PHP:
Ver original
  1. $sql = "SELECT sum(cantidad) as suma FROM items WHERE id_user='".$_SESSION['myusername']."' ";
  2. $resultado = mysql_fetch_assoc(mysql_query($sql));
  3.  
  4.  
  5.  
  6. if ($resultado['suma'] > 10 and $resultado['suma'] < 20 ) {
  7. print '1 punto';
  8. }
  9.  
  10. elseif ($resultado['suma'] > 20 and $resultado['suma'] < 30 ) {
  11. print '2 puntos';
  12. }
  13.  
  14. elseif ($resultado['suma'] > 30 and $resultado['suma'] < 40 ) {
  15. print '3 puntos';
  16. }
  17. ...
  #6 (permalink)  
Antiguo 19/04/2012, 08:05
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: If elseif en consulta mysql

Imposible que sea infinito, tiene que tener un corte el bucle porque sino no saldria nunca. Cual es tu idea? porque no se si con un bulce te funcionaria...
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 19/04/2012, 08:12
 
Fecha de Ingreso: agosto-2008
Ubicación: Madrid
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: If elseif en consulta mysql

Ahora eso me sale y no tiene problemas, pero la idea es no escribir un código interminable para que me evalúe de 10 en 10 hasta el 100.000 o lo que sea.

Ahora le digo: si es mayor que 0 y menor que diez imprime 1
si es mayor que 10 y menor que 20 imprime 2

Pero si siguiera andaría por la lína mil diciendo:
si es mayor que 100.010 imprime 1001

No sé si se entiende.
  #8 (permalink)  
Antiguo 19/04/2012, 08:22
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: If elseif en consulta mysql

A grandes razgos podes hacer algo asi:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $suma = 12; // Yo defini $suma, pero vos tendrias que utilizar el que traes de la base de datos
  4. $cada = 10;
  5.  
  6. for ($i = 1; $i <= 100; $i++) {
  7.     $comp = $i * $cada;
  8.     if ($suma > $comp && $suma < ($comp + $cada)) {
  9.         echo $i;
  10.     }
  11. }
  12.  
  13. ?>

Fijate si te sirve
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 19/04/2012, 08:34
 
Fecha de Ingreso: agosto-2008
Ubicación: Madrid
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: If elseif en consulta mysql

Hola linuxzero
Siguiendo con tu ejemplo siempre me arroja como resultado 1

Código PHP:
Ver original
  1. $sql = "SELECT sum(cantidad) as suma FROM items WHERE id_user='".$_SESSION['myusername']."' ";
  2. $resultado = mysql_fetch_assoc(mysql_query($sql));
  3.  
  4.  
  5. $suma = 12; // Yo defini $suma, pero vos tendrias que utilizar el que traes de la base de datos
  6. $cada = 10;
  7.  
  8. for ($i = 1; $i <= 100; $i++) {
  9.     $comp = $i * $cada;
  10.     if ($suma > $comp && $suma < ($comp + $cada)) {
  11.         echo $i;
  12.     }
  13. }


Y si pongo el resultado con la suma no me arroja resultado

Código PHP:
 $sql "SELECT sum(cantidad) as suma FROM items WHERE id_user='".$_SESSION['myusername']."' ";
$resultado mysql_fetch_assoc(mysql_query($sql));


$resultado['suma']  = 12// Yo defini $suma, pero vos tendrias que utilizar el que traes de la base de datos
$cada 10;
 
for (
$i 1$i <= 100$i++) {
    
$comp $i $cada;
    if (
$resultado['suma']  > $comp && $resultado['suma']  < ($comp $cada)) {
        echo 
$i;
    }

perdón, pero estoy perdido con esto :(
  #10 (permalink)  
Antiguo 19/04/2012, 08:39
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: If elseif en consulta mysql

El codigo que te pase yo es a modo de ejemplo, y esta bien ya que 12 es mayor a 10 y a su vez es menor a 20, por ende te imprime 1 que es el numero de la iteracion, y repito, es a modo de ejemplo.

En tu caso, hiciste mal en modificar el valor que te viene de la base por un 12 :S, vos lo tenias que hacer al reves, a la variable $suma debias asignarle $resultado['suma']. Para hacertelo mas facil debias hacer lo siguiente:

Código PHP:
Ver original
  1. $sql = "SELECT sum(cantidad) as suma FROM items WHERE id_user='".$_SESSION['myusername']."' ";
  2. $resultado = mysql_fetch_assoc(mysql_query($sql));
  3.  
  4. $suma  = $resultado['suma']; // Yo defini $suma, pero vos tendrias que utilizar el que traes de la base de datos
  5. $cada = 10;
  6.  
  7. for ($i = 1; $i <= 100; $i++) {
  8.     $comp = $i * $cada;
  9.     if ($suma  > $comp && $suma  < ($comp + $cada)) {
  10.         echo $i;
  11.     }
  12. }

o bien, para ahorrar la variable $suma:

Código PHP:
Ver original
  1. $sql = "SELECT sum(cantidad) as suma FROM items WHERE id_user='".$_SESSION['myusername']."' ";
  2. $resultado = mysql_fetch_assoc(mysql_query($sql));
  3.  
  4. $cada = 10;
  5.  
  6. for ($i = 1; $i <= 100; $i++) {
  7.     $comp = $i * $cada;
  8.     if ($resultado['suma']  > $comp && $resultado['suma']  < ($comp + $cada)) {
  9.         echo $i;
  10.     }
  11. }
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #11 (permalink)  
Antiguo 19/04/2012, 08:43
 
Fecha de Ingreso: agosto-2008
Ubicación: Madrid
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: If elseif en consulta mysql

Muchísimas muchas gracias!!!

Hoy me llevo aprendido algo más, que es para lo que he venido

Ahora sí funcionó ;)
  #12 (permalink)  
Antiguo 19/04/2012, 08:44
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: If elseif en consulta mysql

Cita:
Iniciado por arolfritz Ver Mensaje
Muchísimas muchas gracias!!!

Hoy me llevo aprendido algo más, que es para lo que he venido

Ahora sí funcionó ;)
Me alegro mucho!, te mando un abrazo ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #13 (permalink)  
Antiguo 19/04/2012, 12:02
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: If elseif en consulta mysql

Llego tarde al hilo, pero quizá te interese la siguiente sintaxi sql que para condiciones sencillas funciona bién.

Código PHP:
$sql "SELECT CASE WHEN sum(cantidad)>10 THEN 'MAYOR QUE 10' ELSE 'MENOR O IGUAL' END AS RESULTADO as suma FROM items WHERE id_user='".$_SESSION['myusername']."' "
SALUDOS.
  #14 (permalink)  
Antiguo 19/04/2012, 12:23
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: If elseif en consulta mysql

Cita:
Iniciado por oscartt67 Ver Mensaje
Llego tarde al hilo, pero quizá te interese la siguiente sintaxi sql que para condiciones sencillas funciona bién.

Código PHP:
$sql "SELECT CASE WHEN sum(cantidad)>10 THEN 'MAYOR QUE 10' ELSE 'MENOR O IGUAL' END AS RESULTADO as suma FROM items WHERE id_user='".$_SESSION['myusername']."' "
SALUDOS.
Pero en ese caso deberia realizar un bucle sobre esa consulta para ir variando el "de 10 en 10", y es mucho menos performante que traerte el resultado y trabajarlo en el lado del servidor, que hacer una consulta tantas veces, se entiende?
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #15 (permalink)  
Antiguo 19/04/2012, 12:54
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: If elseif en consulta mysql

Correcto lo que dices.

Solo quise aportar a arolfritz la existencia de 'case when ..then else end' en mysql, que responde justo al título del hilo: If elseif en consulta mysql....sin php por medio.
saludos.
  #16 (permalink)  
Antiguo 19/04/2012, 12:56
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: If elseif en consulta mysql

Cita:
Iniciado por oscartt67 Ver Mensaje
Correcto lo que dices.

Solo quise aportar a arolfritz la existencia de 'case when ..then else end' en mysql, que responde justo al título del hilo: If elseif en consulta mysql....sin php por medio.
saludos.
;) me parece excelente, yo solo te queria aclarar por las dudas :D
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: elseif, mysql
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 00:30.