Foros del Web » Programando para Internet » PHP »

Imprimir una variable en otro div

Estas en el tema de Imprimir una variable en otro div en el foro de PHP en Foros del Web. Tengo una página con varios div's, en cada div imprimo un campo determinado de una fila de la tabla . Para hacer esto, le asigno ...
  #1 (permalink)  
Antiguo 05/03/2011, 02:31
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Imprimir una variable en otro div

Tengo una página con varios div's, en cada div imprimo un campo determinado de una fila de la tabla. Para hacer esto, le asigno a una variable llamada $sql un string como valor que contiene una consulta SQL:

Cita:
$sql = "SELECT * FROM tabla WHERE campo = '$id' ORDER BY id ASC LIMIT $inicio, $fin";
De momento como se puede observar sólo es una cadena de texto.

Luego, para ejecutar realmente la consulta, me sirvo de la función mysql_query():

Cita:
$query = mysql_query($sql);
Después para imprimir el campo llamado campo1 dentro de uno de los div, almaceno el array generado por la función mysql_fetch_assoc() en la variable $fila:

Cita:
while($fila = mysql_fetch_assoc($query)) {
echo $fila['campo1'];
}
Una vez explicado el mecanismo mediante el cual imprimo un campo determinado de la tabla en alguno de los div's de mi página, os comento mi problema.

Resulta que hasta ahora para imprimir sin problemas en cada div un campo, me veía obligado a declarar dentro de cada div las variables "$sql", "$query" y "$fila" (esta última dentro de su correspondiente bucle while).

Lo que quiero, es declarar sólo una vez las variables y luego sencillamente llamarlas. Al parecer no hay problemas para declarar en un div $a = 1; y luego en otro div imprimir con echo $a, pero cuando se trata de consultas a la base de datos algo falla. Si bien se trata de imprimir un campo desde un array que ya ha sido almacenado en la variable $fila anteriormente, no logro que se imprima.

Pongo un ejemplo del código que manejo:

Cita:

<div primero>
<?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 segundo>
<?php


echo $fila['campo2'];


?>
</div>
¿Cómo podría imprimir "echo $fila['campo2'];" sin declarar otra vez $sql, $query y $fila?
  #2 (permalink)  
Antiguo 05/03/2011, 03:44
Avatar de arepavieja  
Fecha de Ingreso: marzo-2011
Mensajes: 207
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Imprimir una variable en otro div

no se si te sirva, simplemente pones dentro del ciclo a los div por ejemplo:

Código PHP:
Ver original
  1. <?php do { ?>
  2.  <div><?php echo $fila['campo1']; ?></div>
  3.  <div><?php echo $fila['campo2']; ?></div>
  4. <?php } while ($fila = mysql_fetch_assoc($query)) ?>

Pero no entiendo muy bien, de que manera se van a ver los div en pantalla, ¿uno al lado de otro o debajo? en la consulta que te envío te imprime los div uno debajo de otro y luego en otro registro repite la secuencia, pero a menos que quieras primero imprimir toda la secuencia de campos1 y luego la secuencia de campos2 y asi sucesivamente.
  #3 (permalink)  
Antiguo 05/03/2011, 04:51
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Imprimir una variable en otro div

Cita:
Iniciado por arepavieja Ver Mensaje
no se si te sirva, simplemente pones dentro del ciclo a los div por ejemplo:

Código PHP:
Ver original
  1. <?php do { ?>
  2.  <div><?php echo $fila['campo1']; ?></div>
  3.  <div><?php echo $fila['campo2']; ?></div>
  4. <?php } while ($fila = mysql_fetch_assoc($query)) ?>

Pero no entiendo muy bien, de que manera se van a ver los div en pantalla, ¿uno al lado de otro o debajo? en la consulta que te envío te imprime los div uno debajo de otro y luego en otro registro repite la secuencia, pero a menos que quieras primero imprimir toda la secuencia de campos1 y luego la secuencia de campos2 y asi sucesivamente.
A guay, bueno te comento, la página tiene una estructura "estática", con una serie de div's que sólo componen un diseño, uno debajo de otro, pero como el diseño es complejo, tienes clases diferentes aplicadas a cada uno de ellos. Por lo cual tampoco quisiera complicarme mezclando datos con diseño. Mi idea era que los bloques en PHP fueran claros, breves y separados en la medida de lo posible del diseño.

Aunque de todas formas me has dado una buena idea para el buscador interno, en el que sí usaré el bucle do while u otra estructura de control similar.
  #4 (permalink)  
Antiguo 07/03/2011, 10:01
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: Imprimir una variable en otro div

Guarda los registros en un array:
Código PHP:
Ver original
  1. while($fila[] = mysql_fetch_assoc($query)) {
  2. //no hacer nada
  3. }
  4. var_dump($fila); //para que veas como queda
Luego solo accedes de la siguiente manera a un registro:
Código PHP:
Ver original
  1. <div><?php
  2. echo $fila[0]['campo']
  3. ?></div>
  #5 (permalink)  
Antiguo 12/03/2011, 08:40
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Imprimir una variable en otro div

Cita:
Iniciado por Ronruby Ver Mensaje
Guarda los registros en un array:
Código PHP:
Ver original
  1. while($fila[] = mysql_fetch_assoc($query)) {
  2. //no hacer nada
  3. }
  4. var_dump($fila); //para que veas como queda
Luego solo accedes de la siguiente manera a un registro:
Código PHP:
Ver original
  1. <div><?php
  2. echo $fila[0]['campo']
  3. ?></div>
Vamos a ver, arriba he usado el bucle while para imprimir una fila de la siguiente manera:

Código PHP:
Ver original
  1. while($fila = mysql_fetch_assoc($query)) {
  2. echo $fila['campo1'];
  3. }

Lo cual se traduciría como "mientras exista array que recorrer generado por la función mysql_fetch_assoc() en base a las consultas SQL contenidas por la $query, se imprimirá mediante la función echo() el valor correspondiente al índice 'campo1' del array $fila".

Realmente no entiendo para que usas un bucle while vacío para declarar $fila[] = mysql_fetch_assoc($query), cuando puedes hacerlo sin el while.

De todas formas creo que tengo la solución, ahora echo un vistazo al código y posteo en respuesta la solución, que creo que es de base y está relacionada con el LIMIT. Pienso que metí la pata al guardar $query con los parámetros iniciales para la instrucción LIMIT.
  #6 (permalink)  
Antiguo 12/03/2011, 09:41
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Imprimir una variable en otro div

Arreglado el asunto.

Mi problema finalmente no tenía que ver con la instrucción SQL LIMIT, sino con el hecho de declarar $fila = mysql_fetch_assoc($query) dentro de la condición del bucle while y luego pretender llamarla como si hubiera sido declarada a parte.

Dado que la función echo() sólo se ejecutaba una vez imprimiendo un único resultado perteneciente a una fila, he prescindido del bucle while y he podido ahorrar muchas líneas de código innecesario.

Etiquetas: variables
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 10:32.