| ||||
claudiovega.... gusto de saludarte.....pues aquí estoy de nuevo aporreandome con el php. Bueno te cuento tengo una clase proxy donde ejecuto y hago las consultas a la base de datos en ella existe una funcion consulta donde genera el $resultset y genera un return $resultset . En la página en cuestión ... tengo al comienzo <?session_register("resultset") ?> el problema es que en archivo de sessiondata del directorio php se genera el la variable resultset pero sin datos osea no registra los datos. Por lo anterior la pagina al ejecutarse por primera vez muestra los datos producto del return $resultset de la clase proxy explicada arriba.... al hacer submit a la misma página pero esta vez no llamo a la función consulta del proxy; ya que se supone que en la sessiondata quedó registrada esta variable $resultset me produce el error "supplied argument is not valid MySql result resource en ..." tipico cuando no se tiene datos el $resultset. Espero haberme explicado bien para no ponerte el script que creo que no es necesario para este caso a lo mejor no estoy utilizando bien esta variable que es un arreglo y no puede ser manejado como una variable comun y corriente , ya que las otras variables que usan session se registran sin problemas pero no así el el resultado de una consulta .... corrígeme si me equivo. |
| ||||
Para simplificar lo anterior, te muestro un script de ejemplo que tampoco me funciona, en el puedes ver que cuando ejecuto Repetir me arroja el típico mensaje "mysql_fetch_row(): supplied argument is not a valid MySQL ", la primera vez funciona, pero al repetir el flag evita que se vuelva a ejecutar la consulta, pero no reconoce los argumentos de $resultset. <?php session_register("resultset"); if (!isset($_REQUEST["flag"])) { mysql_connect("localhost","root",""); $sql="SELECT * FROM categorias WHERE IDIOMA__CAT='E'"; $resultset=mysql_db_query("valdivieso",$sql); } while($row=mysql_fetch_row($resultset)) { echo $row[1]."-".$row[2]."<br>"; } ?> <a href="prueba.php?flag=1">Repetir</a> Te agradecería indicar donde está mi falla. Última edición por ciberpato; 28/03/2006 a las 20:30 |
| ||||
1) No veo la llamada a session_start(), la cual es necesario colocar en todos los script que acceden a datos de la sesion. 2) La notación que usas para las sesiones está obsoleta y tambien lo está lo de seleccionar la BD, mejor usar esto: Código PHP: |
| ||||
claudio gracias por tu atención.... pero probé lo indicado pero sigue sin funcionar la variable que se registra en la sessiondata del php despues de ejecutar lo anterior es : resultset|i:0; lo que indica que creo la variable session y no registra datos. la verdad me he rebanado la cabeza y no logro ver donde está el problema. |
| ||||
He leido que al parecer no se puede, dado que no es posible serializar el resultset para que pueda ser asignado a una variable de sesion. Otra forma sería crear un array bidimensional al recorrer los datos del resultset. Este array si puede ser asignado a una variable de sesion. |
| ||||
Gracias claudio, para finalizar me podrías decir donde encontrar un arreglo bidireccional que cumpla con lo requerido, es decir sería algo así $a [1][0] en el fondo hacer una matriz, te pido esto porque se me acabó el tiempo para experimentar y un ejemplo simple para salir de este cacho. un saludo |
| ||||
Prueba esto: Código PHP: |
| ||||
Claudio el código funciona bien solo tendría que agregarle los nombre de campos en la fila 0, la verdad has sido de gran ayuda en este día ya que me encontraba entre la espada y la pared con respecto al tiempo. Gracias |