Foros del Web » Programando para Internet » PHP »

Error mysql_fetch_assoc() dentro de función

Estas en el tema de Error mysql_fetch_assoc() dentro de función en el foro de PHP en Foros del Web. Hola Tengo el error mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in managecats.php on line 48 aquí el código Código PHP: function  ...
  #1 (permalink)  
Antiguo 17/01/2009, 15:13
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
Error mysql_fetch_assoc() dentro de función

Hola

Tengo el error mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in managecats.php on line 48

aquí el código
Código PHP:
function flistas($id){
    
$listas="<select name=\"".$id."\" id=\"".$id."\"><option value=\"-1\" selected=\"selected\">Seleccione</option>";
    
$dblistasmanage mysql_query("SELECT * FROM $tablaCategorias WHERE idpadre='0' ORDER BY nombre ASC");
    while(
$rlm=mysql_fetch_assoc($dblistasmanage)){ //linea 48
        
$listas.="<option style=\"font-weight:bolder\" value=\"".$rlm['id']."\">".$rlm['nombre']."</option>";
        
$dblistasmanage2 mysql_query("SELECT * FROM $tablaCategorias WHERE idpadre='".$rlm['id']."' ORDER BY nombre ASC");
        while(
$rlm2 mysql_fetch_assoc($dblistasmanage2)){
            
$listas.="<option value=\"".$rlm2['id']."\">- ".$rlm2['nombre']."</option>";
        }
    }
    
$listas.="</select>";
    
mysql_free_result($dblistasmanage2);
    
mysql_free_result($dblistasmanage);
    return 
$listas;

es para generar listas desplegables, todo bien salvo por aquel error de mysql_fetch_assoc(), el problema creo está en la consulta SELECT * FROM $tablaCategorias, ya que si reemplazo $tablaCategorias por el nombre de la base de datos funciona bien, es decir, si coloco SELECT * FROM categorias, el script no da error, pero necesito que sea con la variable ya que obtengo los valores de un archivo config.php

¿Cómo debe ser la sintaxis para que no de error?

Gracias
  #2 (permalink)  
Antiguo 17/01/2009, 15:30
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Error mysql_fetch_assoc() dentro de función

"mysql_query" te está regresando "false" o "null". Verifica la consulta que le haces.

Por lo que veo la variable $tablaCategorias no está definida.
  #3 (permalink)  
Antiguo 17/01/2009, 19:24
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Error mysql_fetch_assoc() dentro de función

Cita:
Iniciado por codecweb98 Ver Mensaje
Por lo que veo la variable $tablaCategorias no está definida.
jejeje por ahí estaba la solución, $tablaCategorias está definida en un archivo config.php que lo incluyo al principio de la página, pero dentro de la función pierde el valor :P

La solución: llamar a la función con un nuevo parámetro

function flistas($id,$tablaCategorias){

saludos, gracias.
  #4 (permalink)  
Antiguo 17/01/2009, 19:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Error mysql_fetch_assoc() dentro de función

Para un futuro, revisa esto:
http://www.php.net/manual/es/languag...bles.scope.php

El problema se puede solucionar definiendo la variable $tablaCategorias como global dentro de la funcion.

Código PHP:
<?php
$a 
1/* ámbito global */

function test()
{
    echo 
$a/* referencia a una variable del ámbito local */
}

test();
?>
Cita:
Este script no producirá salida, ya que la sentencia echo utiliza una versión local de la variable $a, a la que no se ha asignado ningún valor en su ámbito. Puede que usted note que hay una pequeña diferencia con el lenguaje C, en el que las variables globales están disponibles automáticamente dentro de la función a menos que sean expresamente sobreescritas por una definición local. Esto puede causar algunos problemas, ya que la gente puede cambiar variables globales inadvertidamente. En PHP, las variables globales deben ser declaradas globales dentro de la función si van a ser utilizadas dentro de dicha función.
  #5 (permalink)  
Antiguo 17/01/2009, 19:33
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Error mysql_fetch_assoc() dentro de función

excelente, fue precisamente ese comentario que se hace sobre como el lenguaje C maneja las variables globales lo que me produjo aqui el inconveniente :P

aja, precisamente fue asi como lo deje

function flistas($id){
global $tablaCategorias;
//resto del codigo

saludos, gracias

Última edición por Mauri1; 17/01/2009 a las 19:40
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 13:42.