Foros del Web » Programando para Internet » Javascript »

Rotador de texto sin RANDOM

Estas en el tema de Rotador de texto sin RANDOM en el foro de Javascript en Foros del Web. Hola buenos dias Se puede hacer un rotador de texto evitando leer el orden de las frases por ID? por ejemplo tengo la tabla id ...
  #1 (permalink)  
Antiguo 06/01/2013, 08:40
 
Fecha de Ingreso: diciembre-2012
Mensajes: 20
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta Rotador de texto sin RANDOM

Hola buenos dias

Se puede hacer un rotador de texto evitando leer el orden de las frases por ID?

por ejemplo tengo la tabla

id (Autoincrement) texto
1 aaaaa
2 bbbbb
3 cccccc
4 ddddd

Si borro el id 3 se rompe la secuencia y el rotador falla.

Se puede manejar el rotador quitando la secuencia numerica?

Pongo el codigo:

Código PHP:
<script>
function frases_alea(){

frases = new Array();


frases[0] = "<center><h3>FENIX SERVICES</h3><p>&nbsp;</p><p>Registrate en: </p><p><br /><strong>www.latinoguiafranklin.com</strong></p><p>Para poner alertas en la aplicación completamente Gratis!</p><p><br/>AYUDEMONOS - INFORMEMONOS - PARTICIPEMOS</p></center>";

//Imprimo desde la base

<?php 
 
while($row mysql_fetch_array($result)) {
 
// Cuando la secuencia en el campo id se rompe = frases[%s] deja de funcionar 


printf("frases[%s] = \"<p>Fecha:&nbsp;&nbsp;%s</p><p>Ciudad:&nbsp;%s</p><p>Tipo de Alarma: &nbsp;%s</p><p>%s</p>\";\n"$row["id"], $row["fecha"], $row["ciudad"], $row["tpal"], $row["texto"]); 
   }                 
   
mysql_free_result($result); 

?>
  
// aqui imprimo el numero maximo de frases creadas en la tbla

aleatorio=Math.floor(Math.random()*<? echo $id?>);

return frases[aleatorio];

}
onload=function(){
    document.getElementById('algo').innerHTML=frases_alea();
    setInterval(function(){document.getElementById('algo').innerHTML=frases_alea();},3000)
}
</script>

Puedo eliminar ese aleatorio y asi no importe la secuencia en el campo ID de la tabla cuando borre un registro?

MUCHISIMAS GRACIAS
  #2 (permalink)  
Antiguo 06/01/2013, 08:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Rotador de texto sin RANDOM

Te conviene usar un número que se incremente en cada iteración en lugar del id como índice para el array:
Código PHP:
Ver original
  1. <?php for ($contador = 0; $row = mysql_fetch_array($result); $contador++): ?>
  2. frases[<?php echo $contador; ?>] = "...";
  3. <?php endfor; ?>
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/01/2013, 10:41
 
Fecha de Ingreso: diciembre-2012
Mensajes: 20
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Rotador de texto sin RANDOM

Disculpa trato de acoplar lo que me dijiste pero no me da, lo he intentado de diferentes maneras, ya estoy echo lio.

Código PHP:
<script>
function frases_alea(){


frases = new Array();

//frases[0] = "<center><h3>FENIX SERVICES</h3><p>&nbsp;</p><p>Registrate en: </p><p><br /><strong>www.latinoguiafranklin.com</strong></p><p>Para poner alertas en la aplicación completamente Gratis!</p><p><br/>AYUDEMONOS - INFORMEMONOS - PARTICIPEMOS</p></center>";
<?php 
for ($contador 0;
$row mysql_fetch_array($result);
$contador++): 
?>
<?php
 
while($row mysql_fetch_array($result)) { 
      
printf("frases[$contador;] = \"<p>Fecha:&nbsp;&nbsp;%s</p><p>Ciudad:&nbsp;%s</p><p>Tipo de Alarma: &nbsp;%s</p><p>%s</p>\";\n",$row["fecha"], $row["ciudad"], $row["tpal"], $row["texto"]); 
   }                 
   
mysql_free_result($result); 
?>
<?php
 
endfor;  ?>
return frases[aleatorio];

}
onload=function(){
    document.getElementById('algo').innerHTML=frases_alea();
    setInterval(function(){document.getElementById('algo').innerHTML=frases_alea();},3000)
}
</script>



</head>

<body topmargin="0" leftmargin="0" rightmargin="0">
<table width="100%" border="0" cellpadding="0" cellspacing="3">
 
  <tr>
    <td  bgcolor="#f6e206"><img src="img/imgalertas.png" width="300" height="35" /></td>
  </tr>
  <tr>
    <td align="justify"><div id="algo" style="width: 100%; height: 100%;"></div></td>
  </tr>
   <tr>
    <td>&nbsp;</td>
  </tr>
</table>

</body>
</html>
  #4 (permalink)  
Antiguo 06/01/2013, 10:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Rotador de texto sin RANDOM

Debes primero entender qué hace el código. La forma como lo pusiste no tiene sentido, estás anidando ambos bucles cuando la idea era que reemplazaras el while por el for.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 06/01/2013, 11:55
 
Fecha de Ingreso: diciembre-2012
Mensajes: 20
Antigüedad: 11 años, 3 meses
Puntos: 0
Información Respuesta: Rotador de texto sin RANDOM

HO!!! My God Sorry!

Ya caigo en cuenta del error

Aqui dejo el codigo para rotar TEXTOS desde una base de datos sin que afecte el campo id "autonumerico" cuando se ejecute la pagina.

POR QUE?

Por que cuando uno administra la pagina no hay problema por que uno mismo cambia los ID para que se ejecuten en su orden si un de los items es BORRADO.

Pero cuando cualquiera BORRA un item se pierde el cosecutivo ID y el rotador no muestra nada, se corta.

Gracias a su aporte esto se soluciona asi:

PONE ESTO ANTES DEL HEAD

Código PHP:
<script>
function frases_alea(){
frases = new Array();

//aqui empieza el contador que no influye en los ID de la DB

<?php 
for ($contador 0;
$row mysql_fetch_array($result);
$contador++): 

// IMPRIMES el contenido de la BD

echo "frases[$contador] = \"$row[fecha] $row[ciudad] $row[tpal] $row[texto]\";\n";
?>

<?php
 
endfor;  ?>
 <?php
echo "aleatorio=Math.floor(Math.random()*$contador);";
?>
return frases[aleatorio];

}
onload=function(){
    document.getElementById('algo').innerHTML=frases_alea();
    setInterval(function(){document.getElementById('algo').innerHTML=frases_alea();},3000)
}
</script>
por ultimo pones un DIV donde creas conveniente

<div id="algo" style="width: 100%; height: 100%;"></div>


Gracias muchachos por iluminar el cerebro cuando TURN OFF!
  #6 (permalink)  
Antiguo 06/01/2013, 21:31
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Rotador de texto sin RANDOM

Podés hacer la salida aleatoria directamente en el sql con
ORDER BY RAND()

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: java, java-mysql, javascript+php
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 16:33.