Programación Web y Scripting > PHP
Mostrar Ofertas Aleatoriamente Cada X Tiempo
saiory:
Hola, necesito mostrar un listado de ofertas que tengo guardada en mi DB mysql y que vayan cambiando cada 30segundos sin necesidad de refrescar la página.
Me han sugerido hacer lo siguiente:
Select campo1, campo2, campoN from tabla1WHERE 1
-->ORDER BY RAND() LIMIT 1 <--
pero de esta manera se cambiaría la oferta sólo al refrescar la página.
Gracias
RadicalEd:
Sin refrescar la página es difícil, yo lo pensaria más bien con un flash o con AJAX.
Lo malo es que no sé utilizar ninguna de las 2 :( 'tons no te podría dar un tip.
Mollense:
--- Cita de: "RadicalEd" --- Sin refrescar la página es difícil, yo lo pensaria más bien con un flash o con AJAX.
Lo malo es que no sé utilizar ninguna de las 2 :( 'tons no te podría dar un tip.
--- Fin de la cita ---
Si, opino que en este caso AJAX es muy buena opción.
saiory, usa el buscador del foro, me parece que hay algunos ejemplos sobre el tema.
Un saludo.
JrcsDev:
Con las siguientes funciones podrás utilizar AJAX:
--- Código: Text ---function nuevoAjax(){ var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp;}function llamar(id,pagina,datos){ contenedor = document.getElementById(id); ajax=nuevoAjax(); ajax.open("POST", pagina,true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { contenedor.innerHTML = ajax.responseText } } ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send(datos);}
Para implementarlo, puedes usar un DIV para especificar la zona que se va a refrescar... por ejemplo:
--- Código: Text ---<div id="div_publicidad"></div>
y luego la llamada a AJAX la haces de la siguiente forma:
--- Código: Text ---llamar('div_publicidad','archivo_publicidad.php','');
el primer argumento de la función llamar es el CONTENEDOR donde piensas hacer la actualización asíncrona... en este caso es un DIV, y lo especificas a través de su ID. El segundo argumento es el nombre del archivo que va a realizar las operaciones, y que va a imprimir la nueva publicidad. El tercer argumento es opcional, es para enviar valores por POST, y se implementa como el GET... extraño no? pero funciona.... Es decir, si quiero pasar un dato, seria:
--- Código: Text ---llamar('div_publicidad','archivo_publicidad.php','id='+id+'&nom='+nombre);
y para recibir los datos en archivo_publicidad.php seria:
--- Código: Text ---$id=$_POST['id'];$nom=$_POST['nom'];
En tu caso, como necesitas que la publicidad se actualize cada 30 segundos, por decir algo, puedes usar SETINTERVAL de javascript, que permite q una función se ejecute cada cierta cantidad de milisegundos:
--- Código: Text ---<script language="javascript">setinterval("act_public()",3000) //se ejecutara act_public() cada 3 segundosfunction act_public(){ llamar('div_publicidad','archivo_publicidad.php','')}</script>
Espero te sirva, a mi me ha servido bastante... Saludos!
saiory:
Gracias por tu ayuda pero no consigo que me refresque la página.
Lo he puesto de la siguiente manera:
En el archivo index.php al comienzo de la página:
<script language="javascript">
setinterval("act_public()",3000) //se ejecutara act_public() cada 3 segundos
function act_public()
{
llamar('div_publicidad','_PanelIzq.php','')
}
</script>
En la zona donde quiero que me haga el refresco en el archivo index.php:
<div id="div_publicidad">
<?php include("_PanelIzq.php"); ?>
</div>
y en el archivo _PanelIzq.php
<script language="javascript">
function nuevoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function llamar(id,pagina,datos){
contenedor = document.getElementById(id);
ajax=nuevoAjax();
ajax.open("POST", pagina,true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(datos);
}
</script>
<?php
aquí el código php con las sentencias sql para que muestre las ofertas que se encuentran en la bd mysql
?>
------------------------
Hecho esto, no funciona el refresco y no se por dónde empezar a corregirlo.
Gracias.
Navegación
[#] Página Siguiente
Ir a la versión completa