Foros del Web » Programando para Internet » PHP »

Traduciendo rutinas de ASP a PHP

Estas en el tema de Traduciendo rutinas de ASP a PHP en el foro de PHP en Foros del Web. Hola, estoy traduciendo una Web ASP a PHP y ahora toca sustituir los bucles. El bucle más habitual es este: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ASP: Ver ...
  #1 (permalink)  
Antiguo 26/11/2015, 03:05
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 4 meses
Puntos: 6
Pregunta Traduciendo rutinas de ASP a PHP

Hola, estoy traduciendo una Web ASP a PHP y ahora toca sustituir los bucles. El bucle más habitual es este:

Código ASP:
Ver original
  1. Eventos_Sql = "Select * From Eventos Where Activo = 1 Order By Fecha "
  2.  
  3. Set Rs = Server.CreateObject("ADODB.Recordset")
  4. Rs.Open Eventos_Sql, Conn,3,1
  5.  
  6. Do While Not Rs.Eof
  7.  
  8.     Response.Write Rs("Id") & " - "
  9.     Response.Write Rs("Nombre") & "<br/>"
  10.  
  11.     Rs.MoveNext
  12.        
  13. Loop
  14.  
  15. Rs.close
  16. Set Rs = Nothing

Fácil, abro un recorset y lo recorro mientras que no sea fin de fichero, una vez concluido el bucle (no entra si devuelve EOF) cierro Recordset.
Bien, lo estoy sustituyendo por este código:

Código PHP:
Ver original
  1. $sql= "Select * From Eventos Where Activo = 1 Order By Fecha ";
  2. foreach ($conn->query($sql) as $rs)
  3. {
  4.     Echo $rs['Id'] . "\t";
  5.     Echo $rs['Nombre'] . "\n";
  6. }

Funciona de maravilla, pero si después del for pongo un $rs->free() o $rs->Close() me da error

¿NO hay que cerrar o liberar nada?
  #2 (permalink)  
Antiguo 26/11/2015, 03:36
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 13 años, 7 meses
Puntos: 20
Respuesta: Traduciendo rutinas de ASP a PHP

http://php.net/manual/es/function.mysql-close.php
__________________
CHOOO COOO LAAA TEEEEEEEEE
  #3 (permalink)  
Antiguo 26/11/2015, 04:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: Traduciendo rutinas de ASP a PHP

Sí sí, si la conexión con la DB la cierro al final de cada página, pero yo digo de el recordset o array que se crea

Código PHP:
Ver original
  1. <?php
  2. //Cierra conexión con la base de datos.
  3. Function DBoff()
  4. {
  5.     Global $conn;
  6.    
  7.     //Cierra la conexión.
  8.     $conn->close();
  9.    
  10. }
  11. ?>
  #4 (permalink)  
Antiguo 26/11/2015, 10:54
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Traduciendo rutinas de ASP a PHP

Saludo.
Pues debe llamarse a esa función luego que se termine el foreach,
pues ya el foreach termina de dibujar la info,
y sería el momento adecuado para cerrarla.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 27/11/2015, 02:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: Traduciendo rutinas de ASP a PHP

Después del foreach si pongo:

$rs->free() o $rs->Close() me da error

Me da error, por qué?
  #6 (permalink)  
Antiguo 27/11/2015, 05:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Traduciendo rutinas de ASP a PHP

Saludo.
Eso es porque $rs es una variable válida dentro del ámbito
del foreach,
Lo que debería ir luego del foreach sería el close pero a $conn.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 27/11/2015, 06:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: Traduciendo rutinas de ASP a PHP

Entonces no es necesario ningún cambio no?

Al final de todas las páginas se ejecuta: DBoff()
  #8 (permalink)  
Antiguo 27/11/2015, 06:15
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Traduciendo rutinas de ASP a PHP

Saludo.
Es correcto.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 27/11/2015, 06:30
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: Traduciendo rutinas de ASP a PHP

Muchas gracias!! podéis dar el tema como solucionado.
  #10 (permalink)  
Antiguo 27/11/2015, 06:33
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: Traduciendo rutinas de ASP a PHP

Por último, meto también un IF por si no devuelve filas:

Código PHP:
Ver original
  1. $sql = "Select Email From usuarios Where Activo = 1 And Habilitado = 1";
  2.  
  3. $tabla = $conn->query($sql);
  4.        
  5. //Si devuelve datos lo devolvemos
  6. If ($tabla->num_rows !== 0)
  7. {
  8.       //antes de entrar en el for, puedo escribir algo, como al apertura de un <DIV>
  9.  
  10.     foreach ($tabla as $rs)
  11.     {
  12.         Echo $rs["Email"];
  13.            
  14.     }
  15.       //y aquí puedo cerrar el </div>
  16. }
  17.  
  18.  
  19. //cierro conexión con db
  20. DBoff;

Etiquetas: asp-clásico, traducir
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 12:20.