Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] (mysql + php) Si es Null... quiero que seas 0 y luego 1

Estas en el tema de (mysql + php) Si es Null... quiero que seas 0 y luego 1 en el foro de PHP en Foros del Web. Hola a todos. Necesito ayuda con una variable... que me está arruinando la paciencia.. Quiero hacer una mysql_query con un Select, que en ocasiones me ...
  #1 (permalink)  
Antiguo 24/02/2013, 09:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 13
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta (mysql + php) Si es Null... quiero que seas 0 y luego 1

Hola a todos.
Necesito ayuda con una variable... que me está arruinando la paciencia..

Quiero hacer una mysql_query con un Select, que en ocasiones me dice NULL
(porque no hay registros que cumplan los requisitos) intentando buscar el valor máximo de un campo..

Y tras conseguir ese select...

Ejecutar otro mysql_query con un INSERT... con esa variable + 1...
La tabla tiene estos campos: ID(int), CAMPO(char), OTROCAMPO(char) y ORDEN(int).
Este es el codigo (es el API Mysql no el Mysqli...):

Código:
  $link = mysql_connect("sql2.freesqldatabase.com", "usuario","password")
      or die ("Error al conectar a la base de datos.");
  mysql_select_db("sql23917", $link)
      or die ("Error al conectar a la base de datos.");

$queorden= mysql_query("SELECT ORDEN FROM TABLA WHERE OTROCAMPO='lo que sea' ORDER BY ORDEN DESC LIMIT 1") or die("Error en SELECT: ".mysql_error());

switch ($queorden){
case 0;
$elorden = 1;
break;
case NULL;
$elorden = 1;
break;
default;
$elorden =$queorden++;
}

mysql_query("INSERT INTO TABLA (CAMPO, OTROCAMPO, ORDEN) VALUES ('.$unvalor.','.$otrovalor.','.$elorden.')";

  mysql_free_result($queorden);
  mysql_close($link);
Bueno, pues este código me dice (haya o no haya valores encontrados...) que $queorden vale 'Resource id #4' y me añade siempre el valor 0 o 5... nunca 1..
¿Por qué? ¿Qué hago mal? La QUERY en phpmyadmin me funciona perfectamente.. salvo cuando no hay valores..

he intentado cambiar la query "SELECT IFNULL(MAX(orden),0) FROM TABLA WHERE... patatin patatan..."
Tambien he intentado en vez del switch un simple If....else.. pero nada.. pasa igual..
¿Alguna idea, pleaseeee?

Última edición por cvander; 24/02/2013 a las 09:58
  #2 (permalink)  
Antiguo 24/02/2013, 09:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: (mysql + php) Si es Null... quiero que seas 0 y luego 1

Ahorrate pasos:

Código MySQL:
Ver original
  1. SELECT COUNT(ORDEN) total, IFNULL(MAX(ORDEN), 1) maximo
  2. FROM TABLA
  3. WHERE OTROCAMPO='lo que sea'
Con algo como:
Código PHP:
Ver original
  1. $orden = mysq_fetch_array($queorden);
  2. if($orden[0] == 0) {$elorden = $orden[1];}
  3. else {$elorden = $orden[0];}
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/02/2013 a las 11:21 Razón: Error de subíndices del array :P
  #3 (permalink)  
Antiguo 24/02/2013, 10:28
 
Fecha de Ingreso: febrero-2007
Mensajes: 13
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: (mysql + php) Si es Null... quiero que seas 0 y luego 1

Muchísimas Gracias gnzsoloyo
Tema solucionado, he cambiado un par de cosas por que con los arrays soy un poco torpe y necesito aclarar las cosas como $orden['maximo'] y $orden['total'] jajajaja...

Millonésimas y sinceras gracias de verdad.

Etiquetas: mysql, null, quiero, registro, select, sql, tabla
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 23:01.