Foros del Web » Programando para Internet » PHP »

Duda sobre el ámbito global

Estas en el tema de Duda sobre el ámbito global en el foro de PHP en Foros del Web. Hola a todos. A ver me acabo de encontrar con algo que me deja desconcertado. Tengo un código PHP intercalado en una página con código ...
  #1 (permalink)  
Antiguo 03/03/2011, 03:49
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Duda sobre el ámbito global

Hola a todos. A ver me acabo de encontrar con algo que me deja desconcertado.

Tengo un código PHP intercalado en una página con código HTML siguiendo un esquema como el siguiente:

Cita:

<div loquesea>
<?php
include('../archivos/conexion.php');

mysql_select_db('base_de_datos', $conexion);
//$conexión hace referencia al código incluído

$inicio = 0;
$fin = 1;

$sql = "SELECT * FROM tabla WHERE campo = '$id' ORDER BY id ASC LIMIT $inicio, $fin";
$query = mysql_query($sql);

while($fila = mysql_fetch_assoc($query)) {
echo $fila['campo1'];
}
?>
</div>

<div nuevo>
<?php
while($fila = mysql_fetch_assoc($query)) {
echo $fila['campo2'];
}
?>
</div>
Yo pensaba que al ser un ámbito global donde se habían declarado las variables ($inicio y $fin), la definición de las mismas, así como la definición de $sql y $query en el conjunto de tiquetas php dentro de "<div loquesea>" bastaría.

¿Hay alguna manera de no volver a definir esas variables en el "<div nuevo>"?

En mi código hay dos pares de etiquetas php (de apertura y cierre) ¿significa eso que son dos ámbitos distintos? ¿Se puede usar la palabra reservada global o algo por el estilo?
  #2 (permalink)  
Antiguo 03/03/2011, 03:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Duda sobre el ámbito global

pues tienes que dar un nombre diferente a $fila ejemplo $fila2
Código PHP:
Ver original
  1. while($fila2 = mysql_fetch_assoc($query)) {
  2. echo $fila2['campo2'];
  3. }
__________________
cada vez que aprendes algo te crees que no sabes nada
  #3 (permalink)  
Antiguo 03/03/2011, 03:58
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Duda sobre el ámbito global

Cita:
Iniciado por arros Ver Mensaje
pues tienes que dar un nombre diferente a $fila ejemplo $fila2
Código PHP:
Ver original
  1. while($fila2 = mysql_fetch_assoc($query)) {
  2. echo $fila2['campo2'];
  3. }
Pero sigo sin comprender porqué. Si $fila existía antes y ahora hago un echo ($fila['campo2']); en realidad sólo estoy llamando al mismo array que está contenido por $fila.

De hecho creo que podría prescindir del bucle while.

¿Me puedes explicar lo de cambiar de nombre a $fila en que se basa? disculpa si hago muchas preguntas es que soy nuevo y aún no he terminado mi primer manual básico-intermedio.
  #4 (permalink)  
Antiguo 03/03/2011, 04:01
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Duda sobre el ámbito global

si por que el segundo div osea
<div nuevo> sale de while(){}
__________________
cada vez que aprendes algo te crees que no sabes nada
  #5 (permalink)  
Antiguo 03/03/2011, 04:11
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Duda sobre el ámbito global

Cita:
Iniciado por arros Ver Mensaje
si por que el segundo div osea
<div nuevo> sale de while(){}
Vamos a ver claro que se sale del while, pero tiene su propio bucle while con su propio bloque de código a ejecutar mientras la condición entre paréntesis del while sea true.

Si tengo este código:

Cita:
<div loquesea>
<?php
$inicio = 0;
$fin = 1;
?>
</div>

<div nuevo>
<?php
echo $fin;
?>
</div>
¿Esto no es posible?

[Edito]

Vale, sí que es posible. Entonces me imagino que tiene que ver con el bucle while. Voy a probar a ver que saco.

[Vuelvo a editar]

Tengo problemas para pasar al segundo div el array generado por la función "mysql_fetch_assoc($query)" y almacenado en $fila.

¿Alguien sabe porqué? ayuda :S

Última edición por Gambinoh; 03/03/2011 a las 04:24

Etiquetas: global
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 01:33.