instalé xampp en ubuntu 8.04
cuando hago 2 consultas iguales a la base de datos la primera la hace bien, pero la segunda da error, devuelve
CitarWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../index.php on line 9
y si comento la primera de las consultas anda todo bien
tengo instalado un foro smf+mkportal y anda bien.
ni idea qué puede ser.
para sacarme la duda probé otras cosas que hice antes en php y hace lo mismo (y en windows me andaba).
CitarWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../index.php on line 9
generalmente ocurre cuando llamas a la funcion sin tener el resultado de la consulta
(ie. cuando la consulta que realizaste falla por algo)
pega un cacho de codigo para ver mejor...
:up:
Cita de: focojoaco en Agosto 18, 2008, 20:19:02
CitarWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../index.php on line 9
generalmente ocurre cuando llamas a la funcion sin tener el resultado de la consulta
(ie. cuando la consulta que realizaste falla por algo)
pega un cacho de codigo para ver mejor...
:up:
si yo comento la primer llamada (que aśi muestra resultados), la segunda anda, sino sólo carga el primer combo y el segundo queda vacío
cargarCombo("id", "nombre", "genero", "cmbGenero");
cargarCombo("id", "nombre", "formato", "cmbFormato");
function cargarCombo($id, $nombre, $tabla, $combo)
{
$ssql = "SELECT $id as id, $nombre as nombre FROM $tabla ORDER BY $nombre;";
$conn = conectar();
echo $ssql."<br>";
$rs = mysql_query($ssql,$conn);
echo "<select size='1' name='$combo' id='$combo'>";
while ( $a_row = mysql_fetch_assoc($rs ) )
{
echo "<option value='$a_row[id]'>$a_row[nombre]</option>\n";
}
echo "</select><br>";
mysql_close($conn);
}
Tenes un conflicto haciendo las consultas, te diriá, que pruebes, o bien con conecciones persistentes, o abriendo la conexión fuera de la función cargar combo y la cerras al final
algo como
$conn = conectar();
cargarCombo("id", "nombre", "genero", "cmbGenero");
cargarCombo("id", "nombre", "formato", "cmbFormato");
mysql_close($conn);
function cargarCombo($id, $nombre, $tabla, $combo)
{
$ssql = "SELECT $id as id, $nombre as nombre FROM $tabla ORDER BY $nombre;";
//$conn = conectar();
echo $ssql."<br>";
$rs = mysql_query($ssql,$conn);
echo "<select size='1' name='$combo' id='$combo'>";
while ( $a_row = mysql_fetch_assoc($rs ) )
{
echo "<option value='$a_row[id]'>$a_row[nombre]</option>\n";
}
echo "</select><br>";
//mysql_close($conn);
}
Cita de: Camello_AR en Agosto 18, 2008, 23:29:09
exactamente como dice el amigo
camellopara aclarar un poco:
el problema puede venir porque al llamar a cargarCombo(), abris y cerras la conexion.
pero fijate que vos tambien lo haces ANTES y DESPUES de llamar a la funcion (particularmente dos veces)
entonces, o lo haces por dentro o lo haces por fuera.
Particularmente yo lo hago desde afuera....
Decidi una forma u otra, si seguis con problemas seguimos probando
saludo :up:
Yo no vi que el abriera 2 veces la conexión (en dos partes distintas) sino que cada llamada hace un abrir y cerrar, por eso recomiendo que haga una apertura de conexión, luego todas las consutasl en esa conexión y al trminar el script cierre
De hecho, no recomendable, si no cerras la conexión al terminar el script igual la termina (slavo un tema de persistencias). En general yo he hecho un "framewok" con funciones cómunes, en rtre ellas un
<? include("framework.php")?>
framework:
<?
include("sql.php");
sql_conectar($sql_data);
//otras funciones, llamados, etc
?>
Si bien parece una serie de llamados a diversos archivos, prefiero, para poder editar y tener a la vista una función propia y parte del código donde se implementa por ejemplo tener un archivo marco, uno con funciones de sql (además de otro con las configuraciones del sql y servidor, que lo edito para cada servidor, y no necesito modificar nada cuando subo al servidor desde mi maquina. Eso va en el array $sql_data
Contenido del sql_data.php (ilustrativo)
<?
$sql_data['servidor'] = "sql.proveedor.com.ar";
$sql_data['puerto'] = "3166";
$sql_data['usuario'] = "usuario";
$sql_data['clave'] = "miclave";
$sql_data['base'] = "base_de_datos";
$sql_data['ruta'] = "/home/camello/public_html/aplicacion"; //esto ultimo no es dato del servidor especificamente, pero es parte de la configuración "especifica"
?>
en ciertos casos me inclino por el uso de arrays para pasar parametros indefinidos a una función, sin esperar deteminados datos, sino que la función actua en función del contenido del array