Continuando a lavorare al mio progetto di far cambiare i siti dentro i frame ogni tot tempo , mi sono scontrato ad un altro problema logico che non riesco a venirne fuori.
per ora il programma prende da un DB la lista dei siti che voglio visualizzare(array $linkScreen1) e il tempo di durata di questi ultimi(anche se per ora l'ho impostato fisso per risolvere un pezzo alla volta il mio programma).
usando setTimeout la temporalizzazione (statica) funziona perfettamente cambia prima il frame 1 poi il 2 ,il 4 e alla fine il 3.il problema viene quando al momento della chiamata function change, in quanto la variabile js count non e' la stessa al momento della partenza del timer, ma ha il valore dell'ultimo incremento subito.
ho pensato di usare anche setInterval, ma l'ho trovato ostico con la gestione del suo clear.
quindi una volta esposto il problema vi chiedo se per caso avete un idea su come gestire il passaggio dei "link" tenendo conto che i quatto array linkScreen1,2,3,4 non hanno una lunghezza fissa(perche' avevo pure pensato di passargli un coun1,2,..,n per averli differenti al momento della chiamata)
grazie mille per la pazienza
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>prova </title>
<?php
require 'Php/config.php';
require 'Php/connect.php';
for ($mul = 1; $mul <5; $mul++) {
$sql = "SELECT * FROM 4ScreensList WHERE screen=$mul";
$result = mysql_query($sql);
$count=0;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
switch ($mul) {//separo i link in 4 array per i 4 frames
case 1:
$linkScreen1[$count] = $row["link"] ;
$timeScreen1[$count] = $row["time"] ;
break;
case 2:
$linkScreen2[$count] = $row["link"] ;
$timeScreen2[$count] = $row["time"] ;
break;
case 3:
$linkScreen3[$count] = $row["link"] ;
$timeScreen3[$count] = $row["time"] ;
break;
case 4:
$linkScreen4[$count] = $row["link"] ;
$timeScreen4[$count] = $row["time"] ;
break;
}
$count++;
}
}
mysql_free_result($result);
mysql_close($link);
?>
<script language="JavaScript" type="text/javascript">
<!--
function change(link_js,screens) { //cambio il link nel frame screens
alert(link_js+" screen: "+screens);
window.open(link_js,"screen"+screens);
}
var link_php = new Array();
var screen_php=0;
var count = 0;
//scorro l'array linkScreenN e faccio partire i timer (per ora ho riempito solo un campo quindi il timer statico non mi crea casini )
<?php
for($j=1; $j < count($linkScreen1) ; $j++){
?>
link_php[count] = '<?php echo($linkScreen1[$j]);?>' ;
count++;
setTimeout("change(link_php[count--],1)",2000);
<?php
}
for($j=1; $j < count($linkScreen2) ; $j++){
?>
link_php[count] = '<?php echo($linkScreen2[$j]);?>' ;
count++;
setTimeout("change(link_php[count--],2)",6000);
<?php
}
for($j=1; $j < count($linkScreen3) ; $j++){
?>
link_php[count] = '<?php echo($linkScreen3[$j]);?>' ;
count++;
setTimeout("change(link_php[count--],3)",15000);
<?php
}
for($j=1; $j < count($linkScreen4) ; $j++){
?>
link_php[count] = '<?php echo($linkScreen4[$j]);?>' ;
count++;
setTimeout("change(link_php[count--],4)",10000);
<?php
}
?>
//-->
</script>
</head>
<frameset cols='50%, *'>
<frameset rows='50%,50%' cols='*'>
<frame name='screen1' src="<?php echo $linkScreen1[0]; ?>" scrolling='auto'>
<frame name='screen2' src="<?php echo $linkScreen2[0]; ?>" scrolling='auto'>
</frameset>
<frameset rows='50%,50%' cols='*'>
<frame name='screen3' src="<?php echo $linkScreen3[0]; ?>" scrolling='auto'>
<frame name='screen4' src="<?php echo $linkScreen4[0]; ?>" scrolling='auto'>
</frameset>
<noframes><body>"
spiacente il tuo browser non supporta i frames</p>
</body></noframes>
</frameset>
</html>