Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/11/2010, 06:52
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Que falla en esta consulta tan simple?

Cita:
debo decir que esa consulta arroja mas de 60 resultados desde phpmyadmin asique no puede ser por falta de datos. Curiosamente me acabo de dar cuentar que los esta ordenador por el titulo.
Que los responda por phpMyAdmin, te advierto, no implica que en el script algo funcione bien. Sólo que no hay errores de sintaxis, porque en el phpMyAdmin no puedes poner la variable $_SESSION["noticia"] que estás usando, sino en todo caso un valor fijo, que has debido poner a mano y por tanto puede ser distinto a lo que la sentencia está tomando en el script (1 byte de diferencia ya es significativo).

Una de las razones por la que insistimos en que no se ponga código de programación (PHP o lo que sea, las reglas de este foro así lo dicen) en este foro es porque el código de las aplicaciones esconde los problemas que puedan provenir del uso de variables. En tu caso, yo insisto en que si se produce que
Cita:
Da error en la linea donde esta el WHILE, la cosa es que la hago desde phpmyadmin y funcina perfectamente
El problema es qué puede producir un error así en el WHILE. Por mi experiencia personal y lo que sé del funcionamiento interno del while en este y otros lenguajes (en todos opera de la misma forma), un error como lo describes se da cuando no hay registros en la tabla devuelta.
Ahora bien, y esto lo tienes que analizar: si la variable que usas llega vacía por alguna razón, o contiene valores que puedan devolver vacío (dar FALSE), la tabla vendrá con los encabezados, pero sin datos...

¿Has consierado esa posibilidad?

No sirve, como dije, usar de referencia el phpMyAdmin para comprobarlo, porque no tienes acceso al valor que tomas en la variable; por ello estás reproduciendo mal el problema.

Lo que debes hacer es una de dos cosas:
1) Verifica el valor de la variable antes y después de insertarla:
Código PHP:
Ver original
  1. echo $_SESSION["noticia"];
  2. $consulta='SELECT * FROM car WHERE Nnoticia ='.$_SESSION["noticia"].'ORDER BY fecha DESC';
  3. echo $consulta;
  4. $resultado = mysql_query($consulta, $conexion);
  5. while($array = mysql_fetch_array($resultado)){}

2) Verifica realmente lo que está volviendo, y en todo caso si MySQL está retornando un error que no se vea:
Código PHP:
Ver original
  1. $consulta='SELECT * FROM car WHERE Nnoticia ='.$_SESSION["noticia"].'ORDER BY fecha DESC';
  2. $resultado = mysql_query($consulta,$conexion);
  3. if (!$resultado) {
  4.     die('Error de MySQL: ' . mysql_error());
  5. }
  6. else
  7.     {
  8.      if(mysql_num_rows($resultado)>0)
  9.         {
  10.          while($array = mysql_fetch_array($resultado)){}
  11.          }
  12.     }

Si no da error, pero tampoco obtiene registros... la variable está vacía o da False. ¿OK?

En cualquier caso, el primer ejemplo te permitirá recuperar la sentencia que realmente estás enviando, y usar eso para probarlo en MySQL...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)