Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problema pasando consultas sql a funciones (urgente)

Estas en el tema de Problema pasando consultas sql a funciones (urgente) en el foro de Bases de Datos General en Foros del Web. Hola, estoy haciendo un foro en php usando mysql y tengo un problema intentando pasar consultas a funciones, me explico: tengo el siguiente codigo para ...
  #1 (permalink)  
Antiguo 17/02/2005, 10:47
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años, 1 mes
Puntos: 1
Problema pasando consultas sql a funciones (urgente)

Hola, estoy haciendo un foro en php usando mysql y tengo un problema intentando pasar consultas a funciones, me explico: tengo el siguiente codigo para mostrar todas las respuestas de un tema:

$sql="select * from respuesta where codtema=".$_REQUEST["id"]. " order by fecha";
$res=mysql_query($sql)or die ("ERROR accediendo a la base de datos.".mysql_error());
while($row2=mysql_fetch_array($res))
{
// aqui se muestran todas las respuestas
}

de esa manera funciona perfectamente... el problema es que al pasarlo a la siguiente funcion:

function selecciona_todas_respuesta($id)
{
$sql="select * from respuesta where codtema=".$id. " order by fecha";
$res=mysql_query($sql)or die ("ERROR accediendo a la base de datos.".mysql_error());
return mysql_fetch_array($res);

};

al llamarlo de la siguiente manera desde la pagina donde se muestran las respuestas:

$respuestas=selecciona_todas_respuestas($id)
while($row2=$respuestas)
{
//aqui igual que antes, se muestran las respuestas
}

solo se me muestra la primera fila de respuestas, es decir solo una pero repetida.. entra en un blucle al final me da un error de tiempo sobrepasado.

¿que puedo estar haciendo mal? En el caso de mostra una sola respuesta funciona perfectamente al pasarlo a función... ¿Será que me falta algo por poner dentro del bucle while para que coja el siguiente registro? En ese caso.. ¿que sería?

No me vale que me digais que lo deje como está... porque me exigen que lo haga con funciones para despues hacer un "diagrama de clases", entre comillas porque no utilizaria clases, pero sería algo parecido

a ver si me podeis ayudar... que estoy bastante apurao

venga.. un saludo

Última edición por Azrael666; 17/02/2005 a las 12:20
  #2 (permalink)  
Antiguo 18/02/2005, 08:22
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años, 1 mes
Puntos: 1
nadie lo sabe????
  #3 (permalink)  
Antiguo 21/02/2005, 04:24
 
Fecha de Ingreso: diciembre-2004
Ubicación: Pamplona
Mensajes: 71
Antigüedad: 20 años
Puntos: 0
No se tú pero yo haría un for. Creo que el tuyo sería algo así;

function selecciona_todas_respuesta($id)
{
$sql="select * from respuesta where codtema=$id order by fecha";
$res=mysql_query($sql);
$num=mysql_num_rows($resultado);
return mysql_fetch_array($res);
return $num;
};

for ($i=0; $i < $num; $i++){
echo $res[$i];
}

Yo intentaría algo así, espero haberte ayudado;

Spi
  #4 (permalink)  
Antiguo 21/02/2005, 04:33
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 21 años, 5 meses
Puntos: 2
Lo que estás haciendo mal es que la función te devuelve una fila del resultado, no el resultado de la consulta.
Esto no es un problema de base de datos si concepto de programación.

Código PHP:
function selecciona_todas_respuesta($id)
{
$sql="select * from respuesta where codtema=".$id" order by fecha";
$res=mysql_query($sql)or die ("ERROR accediendo a la base de datos.".mysql_error());
return 
$res;
};

$respuestas=selecciona_todas_respuestas($id)
while( 
mysql_fetch_array($row2=$respuestas) )
{
//aqui igual que antes, se muestran las respuestas

Un saludo.
__________________
Estoy contagiado de Generación-I

Última edición por Vice; 21/02/2005 a las 04:53
  #5 (permalink)  
Antiguo 21/02/2005, 09:08
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años, 1 mes
Puntos: 1
vale.. gracias a los dos... voy a probar lo que me decis...
un saludo
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 01:08.