Consulta con me genera nada :S

Iniciado por ZharkD, 8 Mayo 2010, 23:48 PM

0 Miembros y 1 Visitante están viendo este tema.

ZharkD

Buenas,

Pues aqui esta el codigo del sql/php:
Código (php) [Seleccionar]

//Aqui la config de la db...
function test()
{
$consulta = mysql_query("SELECT MAX(num) FROM miembros");
$temporal = mysql_num_rows($consulta);
mysql_free_result($consulta);
return 1;
}


Este es el index:
Código (php) [Seleccionar]

include(archivo.php);
if(function test()==1)
echo $temporal;


Es el unico codigo que no me genera nada :S
No logro entender porque... :S

Skeletron

#1
Porque en vez de hacer ese IF, haces un ECHO en la funcion, y desde el index, imprimis el TEST()

Algo asÍ:
Código (php) [Seleccionar]

function test()
{
$consulta = mysql_query("SELECT MAX(num) FROM miembros");
echo mysql_num_rows($consulta);
mysql_free_result($consulta);
}

//otro archivo:

include(archivo.php);
test();



PD.: En el IF, no tienes que escribir la palabra FUNCTION

Nakp

tu funcion retorna 1 en vez de $temporal y no es asignada... ademas select max devuelve un valor y no es mas de una fila
Ojo por ojo, y el mundo acabará ciego.

^Tifa^

Exactamente lo que te dicen, sino imprimes el valor no tienes nada.

Otra cosa no se que andas buscando con la funcion SQL MAX ya que esto te retorna 1 solo registro que vendria siendo el numero mayor (si hablamos de un campo integer) encontrado en toda la tabla.... y si hablamos de un campo alfanumerico entonces te retorna de todos los registro la palabra que comienze y le sigan los caracteres mas alto del abecedario (diciendo por alto los que mas se hacerquen a la letra Z) por ejemplo si tienes registros llamado 'Maria', 'Juana', 'Zoe' la funcion MAX te retorna a 'Zoe' ya que es el nombre donde el inicial mas se acerca a la 'Z' del abecedario...

Si es numerico no hay mucho que abundar te retorna el numero mayor encontrado en la tabla completa (al menos que uses indices en tu consulta) pero asi como la tienes no estas usando ninguno asi que.... auch  :-X

ZharkD

#4
Cita de: Skeletron en  8 Mayo 2010, 23:56 PM
Porque en vez de hacer ese IF, haces un ECHO en la funcion, y desde el index, imprimis el TEST()

Algo asÍ:
Código (php) [Seleccionar]

function test()
{
$consulta = mysql_query("SELECT MAX(num) FROM miembros");
echo mysql_num_rows($consulta);
mysql_free_result($consulta);
}

//otro archivo:

include(archivo.php);
test();


PD.: En el IF, no tienes que escribir la palabra FUNCTION
Ohh,
No habia pensado en eso, intentare mezclar eso con algo un poco mas complejo que tengo en localhost =D

El PD del if, cierto, en local no lo tengo asi jeje nose porque aqui se me fue XD


Cita de: Nakp en  9 Mayo 2010, 00:15 AM
tu funcion retorna 1 en vez de $temporal y no es asignada... ademas select max devuelve un valor y no es mas de una fila

Creo que es eso... en  ese caso, deberia hacerlo fuera de una funcion cierto? O bien se pueden mandar DOS valores desde una funcion (ya que agregaria otra cosa para mandar esos DOS valores).

Cita de: ^Tifa^ en  9 Mayo 2010, 01:24 AM
Exactamente lo que te dicen, sino imprimes el valor no tienes nada.

Otra cosa no se que andas buscando con la funcion SQL MAX ya que esto te retorna 1 solo registro que vendria siendo el numero mayor (si hablamos de un campo integer) encontrado en toda la tabla.... y si hablamos de un campo alfanumerico entonces te retorna de todos los registro la palabra que comienze y le sigan los caracteres mas alto del abecedario (diciendo por alto los que mas se hacerquen a la letra Z) por ejemplo si tienes registros llamado 'Maria', 'Juana', 'Zoe' la funcion MAX te retorna a 'Zoe' ya que es el nombre donde el inicial mas se acerca a la 'Z' del abecedario...

Si es numerico no hay mucho que abundar te retorna el numero mayor encontrado en la tabla completa (al menos que uses indices en tu consulta) pero asi como la tienes no estas usando ninguno asi que.... auch  :-X
Efectivamente es un valor numerico (int) :)

Gracias a todos por su colaboracion, me es muy util :D

Nakp

fuera de una funcion o retorna un objeto/array

ojo.. la query devuelve 1 numero y no varias filas asi que num_rows esta de mas... hazle un fetch_array e imprime el primer elemento ($row[0])
Ojo por ojo, y el mundo acabará ciego.

ZharkD

Cita de: Nakp en  9 Mayo 2010, 03:07 AM
fuera de una funcion o retorna un objeto/array

ojo.. la query devuelve 1 numero y no varias filas asi que num_rows esta de mas... hazle un fetch_array e imprime el primer elemento ($row[0])

Si efectivamente lo eh solucionado de esa manera :)

Gracias a todos por su colaboracion :)