Foros del Web » Programando para Internet » PHP »

Ayuda con bucle....

Estas en el tema de Ayuda con bucle.... en el foro de PHP en Foros del Web. Buenas, estoy implementando con php un codigo de tickers para noticias que he encontrado en html. tengo lo siguente: $sql = "SELECT * FROM noticias ...
  #1 (permalink)  
Antiguo 07/09/2004, 11:57
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Ayuda con bucle....

Buenas, estoy implementando con php un codigo de tickers para noticias que he encontrado en html. tengo lo siguente:

$sql = "SELECT * FROM noticias WHERE idnoticia='1'";
$result = mysql_query($sql);

<?while ($noticia= mysql_fetch_array($result)){?>
onload = init
function init() {
ticker.activate()
}

var i0= "<a class='link_noticias' href='noticia1.htm' target='_top'><?echo $noticia["titulo"];?></a>";
<?
}
?>

hasta aqui perfecto, pq esto me muestra la noticia sin ningun problema.mi duda es que mo se cuantas noticias habran, por lo cual me gustaria ir llenando la varible var con otras noticias (var i1, i2, etc...), tantas variables como noticias hayan... como consigo hacer esto?? en html seria algo asi...

var i1= "<a class='link_noticias' href='noticia1.htm' target='_top'>noticia2</a>";

var i2= "<a class='link_noticias' href='noticia1.htm' target='_top'>noticia3</a>";

salu2
  #2 (permalink)  
Antiguo 08/09/2004, 01:34
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
nadie puede ayudarme??
  #3 (permalink)  
Antiguo 08/09/2004, 02:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

PHP genera el codigo javascript, asi que es solo cuestion de usar un contador para sacar el numero:
Código PHP:
<?
$cont
=0;
while (
$noticiamysql_fetch_array($result)){
?>
var i<?php echo $cont?>= "<a class='link_noticias' href='noticia1.htm' target='_top'><?echo $noticia["titulo"];?></a>";
<?
  $cont
++;
}
?>
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 08/09/2004, 03:55
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
primero que todo darte las gracias Josemi por contestar. he puesto lo que me dices, pero me dice :UNDEFINED. te pongo el codigo a ver donde esta el error...

$sql = "SELECT * FROM noticias ";
$result = mysql_query($sql);



?>
<html>
<head>
<title>DynAPI Examples - News Ticker Object Demo 1</title>
<link href="estilos.css" rel="stylesheet" type="text/css" media="all">
<script lanuage="JavaScript" src="dynlayer.js"></script>
<script lanuage="JavaScript" src="newsticker.js"></script>
<script lanuage="JavaScript">
<!--

onload = init
function init() {
ticker.activate()
}
<?
$cont=0;
while ($noticia= mysql_fetch_array($result)){
?>
var i<?php echo $cont; ?>= "<a class='link_noticias' href='noticia1.htm' target='_top'><?echo $noticia["titulo"];?></a>";
<?
$cont++;
}
?>

a ver si conseguimos algooo!

salu2
  #5 (permalink)  
Antiguo 08/09/2004, 03:56
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
se me olvidaba la parte de codigo en la cual el javascript crea las variables, creo q ahi estará el problema...

ticker = new NewsTicker(50,50,200,90)
ticker.addItem(i0)
ticker.addItem(i1)
ticker.addItem(i2)
ticker.build()

writeCSS(
ticker.css
)
  #6 (permalink)  
Antiguo 08/09/2004, 03:59
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
te comento josemi... he quitado el
ticker.addItem(i1)
ticker.addItem(i2)

y entonces si que me funciona. como tengo que definir el ticker para que me coja tantas variables como noticias hayan?

gracias
  #7 (permalink)  
Antiguo 08/09/2004, 04:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
¿Te has fijado si se han generado bien i1, i2, ...? Es que el UNDEFINED parece como si no hubiese creado esas variables.

El problema tambien esta en que estas usando una libreria javascript. Y puede que el problema este en el lado de javascript. Prueba a mirar el codigo HTML/javascript generado y mirar en el foro de javascript si te pueden ayudar. Una vez que sepas cual es la causa del error en javascript, miras si esta motivado por la forma de PHP de generar el codigo (como en el campo titulo tengas un salto de linea la has liado, no es valido para javascript).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 08/09/2004, 04:25
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
el problema esta en crear el item. he de crearlos yo a mano de la siguiente manera...

ticker = new NewsTicker(50,50,200,90)
ticker.addItem(i0)
ticker.addItem(i1)

ticker.build()

pero, ¿como podria hacer que se crearan tantos items como noticias hubieran en la bd?

salu2
  #9 (permalink)  
Antiguo 08/09/2004, 04:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, en $cont tienes el numero de noticias. Puedes usar un for para crear esas lineas con PHP, de la misma forma como creaste i0, i1, ...

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 08/09/2004, 04:33
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
y como se haria josemi?? no domino mucho el tema de los bucles...
  #11 (permalink)  
Antiguo 08/09/2004, 05:57
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
josemi, puedes ayudarme con este bucle for?? no consigo llegar a comprender el resultado del mismo! lo he probado y me da UNDEFINED!

salu2
  #12 (permalink)  
Antiguo 09/09/2004, 01:34
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
¿Cual es el codigo que has probado? Mas o menos deberia ser:
Código PHP:
for ($i=0;$i<$cont;$i++) {
  echo 
"ticker.addItem(i{$i})";

Esto te genera tantas lineas ticker.addItem como variables i que habias creado antes.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 09/09/2004, 04:02
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Gracias Josemi,pero no acabo de aclararme con esto del java y php. ahora tengo lo siguiente..

onload = init
function init() {
ticker.activate()
}
<?
$cont=0;
while ($noticia= mysql_fetch_array($result)){
?>
var i<?php echo $cont; ?>= "<a class='link_noticias' href='noticia.php?idnoticia=<?echo $noticia['idnoticia']?>' target='_top'><?echo $noticia["titulo"];?></a>";
<?
$cont++;
}
?>


ticker = new NewsTicker(50,50,200,90)
<?
for ($i=0;$i<$cont;$i++) {
echo "ticker.addItem(i{$i})";
echo "ticker.build()";
}
?>

writeCSS(
ticker.css
)
y me da como error q el ticker no esta definido... en q fallo?

salu2
  #14 (permalink)  
Antiguo 09/09/2004, 04:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
No se cual es el funcionamiento de ese ticker, pero imagino que el ticker.build() debe fuera del bucle for.

Lo mejor es que hagas a mano un ejemplo de como seria el codigo javascript para varias noticias, y luego uses PHP para generar ese javascript. El fallo que te da es de javascript, mira asi que lo produce el codigo javascript generado. Una vez que sepas exactamente por que te da el error javascript y como corregirlo en javascript, es cuestion de buscar el PHP que genera el javascript incorrecto y corregirlo.

Pero repito: primero corrige el error con javascript.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #15 (permalink)  
Antiguo 09/09/2004, 04:14
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias por rsponder tan rapido. este codigo funciona a la perfeccion, cogiendome el valor de los campos de la bd, aunque tengo q definir la variable yo. el problema esta en q cada vez q doy de alta una noticia, tengo q crear el item...

onload = init
function init() {
ticker.activate()
}
<?
$cont=0;
while ($noticia= mysql_fetch_array($result)){
?>
var i<?php echo $cont; ?>= "<a href='noticia.php?idnoticia=<?echo $noticia['idnoticia']?>' target='_top'><?echo $noticia["titulo"];?></a>";
<?
$cont++;
}
?>

ticker = new NewsTicker(50,50,200,90)
ticker.addItem(i0)
ticker.addItem(i1)
ticker.build()

writeCSS(
ticker.css
)

cmo aplico el for aqui?

salu2
  #16 (permalink)  
Antiguo 09/09/2004, 04:50
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
no consigo hacerlo funcionar. lo he puesto de la sigueinte manera:

ticker = new NewsTicker(50,50,200,90)
<?
for ($i=0;$i<$cont;$i++) {
echo "ticker.addItem(i{$i})";
}
?>
ticker.build()
writeCSS(ticker.css)


he quitado el error del java de q no esta iniicializada la variable, pero no me lee nada..

a ver si alguien ve el error...

salu2
  #17 (permalink)  
Antiguo 09/09/2004, 05:54
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
¿Cual es el codigo html/javascript generado? Ese es el problema. Si no te muestra nada, puede ser por que el codigo javascript esta mal generado, auqnue el codigo PHP este bien.

Ahora que me fijo, no usas punto y coma para finalizar las lineas de javascript. Y tal como tienes el codigo, te genera:

ticker.addItem(i0)ticker.addItem(i1)ticker.addItem (i2)

y eso puede ser sintaxis incorrecta en javascript. Añade el ; dentro del echo del bucle:
Código PHP:
ticker = new NewsTicker(50,50,200,90)
<?
for ($i=0;$i<$cont;$i++) {
echo 
"ticker.addItem(i{$i});";
}
?>
ticker.build()
writeCSS(ticker.css)
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #18 (permalink)  
Antiguo 09/09/2004, 06:02
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Muchisimas gracias Josemi, ahi estaba el falloooo!!!

ahora consigo mostrar tantas noticias como hay en la bd. el problema estaba en el ;.

muchismas gracias compañerooo!!
  #19 (permalink)  
Antiguo 09/09/2004, 06:07
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
De nada. Al final, era un problema de sintaxis javascript. PHP era inocente del todo

saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 03:50.