Foros del Web » Programando para Internet » PHP »

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

Estas en el tema de Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource en el foro de PHP en Foros del Web. Estoy haciendo un trabajo en el cual tengo que filtrar docentes por una categoría la cual la elijo desde un combobox y envio su ID ...
  #1 (permalink)  
Antiguo 14/04/2012, 01:35
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

Estoy haciendo un trabajo en el cual tengo que filtrar docentes por una categoría la cual la elijo desde un combobox y envio su ID por metodo GET a este script PHP:


PROCFILTRARdocCATEGORIA.php

Código PHP:
Ver original
  1. <?php
  2.     //CAPTURO LA CATEGORÍA
  3. $cat = $_GET['SELECTCAT'];
  4.     echo "<th><a href=PROCFILTRARdocCATEGORIA.php?ord=docenteNOM&categoria=$cat>Nombre</a></th>";
  5.     echo "<th><a href=PROCFILTRARdocCATEGORIA.php?ord=cursoNOM&categoria=$cat>Curso</a></th>";
  6.     echo "</tr>";
  7.    
  8.  
  9. //LLAMO A CONEXION.INC
  10. include "Conexion.inc";
  11.  
  12. //SI EXISTE LA VARIABLE ORD CREO EL ORDENADOR
  13. if(isset($_GET["ord"])){
  14.    
  15.     $ordenador = $_GET["ord"];
  16.     }
  17.     else{
  18.         $ordenador = "docenteNOM";
  19.     }
  20.  
  21. //PREPARO LA CONSULTA
  22. $sql = "select docenteNOM, cursoNOM from cursosdocs where idCATEGORIA = $cat order by $ordenador";                      
  23.  
  24. //EJECUTO LA CONSULTA
  25. $consulta = mysql_query($sql,$conexion);
  26.  
  27. //MUESTRO CONTENIDO DE CONSULTA
  28. while($reg = mysql_fetch_assoc($consulta)){
  29.  
  30. echo "<tr>";
  31. echo "<td style='Font-size:15px;'>$reg[docenteNOM]</td>\n";
  32. echo "<td style='Font-size:15px;'>$reg[cursoNOM]</td>\n";
  33. echo "</tr>";
  34.  
  35.                                 }                      
  36.                              
  37. mysql_close($conexion);
  38. ?>

Cuando doy click en el boton filtrar del form que contiene el combobox, me muestra lo que quiero perfectamente, o sea los docentes que cumplen con ese filtro, el problema es que cuando yo hago click sobre algunas de las columnas de la tabla, como Nombre, o Curso, no me muestra ningún docente y me dice :

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in... en la linea que contiene:

Código PHP:
Ver original
  1. while($reg = mysql_fetch_assoc($consulta)){

La verdad que no se porque me pasa eso, el problema pienso yo que lo tengo en la mysql_query(); pero cuando la ejecuto por 2da vez para ordenar por la columna que apreto, porque la primera vez sin ordernar los datos me muestra todo perfecto, el problema se da cuando presiono sobre algunas de estas 2 columnas:
Código PHP:
Ver original
  1. echo "<th><a href=PROCFILTRARdocCATEGORIA.php?ord=docenteNOM&categoria=$cat>Nombre</a></th>";
  2.     echo "<th><a href=PROCFILTRARdocCATEGORIA.php?ord=cursoNOM&categoria=$cat>Curso</a></th>";
O sea que al apretar en alguna de estas columnas voy hacia el mismo archivo pasando por metodo GET traves de la url los datos de categoria y el ordenador.


a ver si alguien me da una mano :D

Última edición por rodrigo791; 14/04/2012 a las 01:51
  #2 (permalink)  
Antiguo 14/04/2012, 02:23
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL resul

Amigos lo terminé resolviendo yo solo.

El problema lo tenia en la query era obvio, porque al organizar por alguna de las columnas no llegaban datos a la query, entonces aplique un condicional en el cual si existe una variable llamada 'categoriaGET' que es la que me llega por url por metodo GET entonces creo la variable '$categoria' y su contenido es igual a esa variable 'categoriaGET' de lo contrario si no existe la variable por GET, es porque es la primera vez que veo los datos,o sea sin ordenarlos :D, por lo tanto en ese caso muestro los datos ordenados por el nombre del docente 'docenteNOM' en este caso.

Código PHP:
Ver original
  1. if(isset($_GET["categoriaGET"])){
  2. $categoria = $_GET["categoriaGET"];
  3. }
  4. else{
  5. $categoria = $_GET['SELECTCAT'];
  6. }

Esa es la línea agregada.

Acá dejo el script completo, ¡por ahí a alguien le sirve!

Código PHP:
Ver original
  1. <?php
  2.     //CAPTURO LA CATEGORÍA
  3. //LLAMO A CONEXION.INC
  4. include "Conexion.inc";
  5.  
  6. //SI EXISTE LA VARIABLE ORD CREO EL ORDENADOR
  7. if(isset($_GET["ord"])){
  8.    
  9.     $ordenador = $_GET["ord"];
  10.     }
  11.     else{
  12.         $ordenador = "docenteNOM";
  13.     }
  14.  
  15.    
  16. if(isset($_GET["categoriaGET"])){
  17.     $categoria = $_GET["categoriaGET"];
  18.     }
  19.     else{
  20.         $categoria = $_GET['SELECTCAT'];
  21.     }
  22.  
  23.     echo "<th><a href=PROCFILTRARdocCATEGORIA.php?ord=docenteNOM&categoriaGET=$categoria>Nombre</a></th>";
  24.     echo "<th><a href=PROCFILTRARdocCATEGORIA.php?ord=cursoNOM&categoriaGET=$categoria>Curso</a></th>";
  25.     echo "</tr>";
  26.  
  27.  
  28. //PREPARO LA CONSULTA
  29. $sql = "select docenteNOM, cursoNOM from cursosdocs where idCATEGORIA = $categoria order by $ordenador";                      
  30.  
  31. //EJECUTO LA CONSULTA
  32. $consulta = mysql_query($sql,$conexion);
  33. //MUESTRO CONTENIDO DE CONSULTA
  34. while($reg = mysql_fetch_assoc($consulta)){
  35.  
  36. echo "<tr>";
  37. echo "<td style='Font-size:15px;'>$reg[docenteNOM]</td>\n";
  38. echo "<td style='Font-size:15px;'>$reg[cursoNOM]</td>\n";
  39. echo "</tr>";
  40.  
  41.                                 }                      
  42.                              
  43. mysql_close($conexion);
  44. ?>

¡De todas formas muchas gracias!

Etiquetas: mysql, result, sql, tabla, warning, variables
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:45.