Bueno, voy a explicar mejor el error, y como están estructurados los documentos.
[spoiler=recomendacion.php]
Código PHP:
<!--Llamamos al script ajax-->
<script language="JavaScript" type="text/javascript" src="javascript/recomendacion-ajax.js"></script>
<!--Contenedor dinámico, donde va a realizar las acciones el script ajax-->
<div id="recomendamos">
<!--Dentro del contenedor incluimos el Crecomendacion.php que es el archivo, que maneja la información enviada a través de ajax-->
<?php include('Crecomendacion.php')?>
</div>
[/spoiler]
[spoiler=recomendacion-ajax.js]
Código:
//Funcion principal de ajax
function objetoAjax(){
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;
}
//Funcion que muestra la siguiente id a la actual.
function siguienteR(){
//Asignamos capa sobre la que enviaremos los datos.
recomendamos = document.getElementById('recomendamos');
//Asignamos la id siguiente, que será la cogida del formulario oculto.
id=document.Frecomendados.Nrecomendado.value;
ajax=objetoAjax();
ajax.open("GET", "../Crecomendación.php?id="+id,true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
//Si está todo correcto enviamos los datos a esa capa.
recomendamos.innerHTML = ajax.responseText
}
}
ajax.send(null);
}
//IGual que la funcion siguienteR, pero enviando el anterior id a la actual.
function anteriorR(){
recomendamos = document.getElementById('recomendamos');
id=document.Frecomendados.Lrecomendado.value;
ajax=objetoAjax();
ajax.open("GET", "../Crecomendamos.php?id="+id,true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
recomendamos.innerHTML = ajax.responseText
}
}
ajax.send(null);
}
[/spoiler]
[spoiler=Crecomendacion.php]
Código PHP:
<?php
define("IN_MYBB", 1);
//require './global.php';
global $db;
//Si no recibimos ninguna id..
if(empty($_GET['id']))
{
$Qrecomendados=$db -> query("consulta sql");
$Rrecomendados=$db -> fetch_array($Qrecomendados);
$id=$Rrecomendados['id'];
$image=$Rrecomendados['imagen'];
$text=$Rrecomendados['texto'];
}
//Si recibimos id..
else
{
$id=$_GET['id'];
$Qrecomendados=$db -> query("consulta");
$Rrecomendados=$db -> fetch_array($Qrecomendados);
}
//Mostramos el recomendado actual.
echo
'<a href="',$Rrecomendados['uri'],'">
<img src="',$Rrecomendados['imagen'],'" alt="',$Rrecomendados['titulo'],'" title="',$Rrecomendados['titulo'],'" style="width:250px;height:182px;" /></a>',
'<div class="" style="height:35px;padding:0px 2px 0px 4px;margin-top:-21px;color:white;background:rgba(255,255,255,0.1);">'
,$Rrecomendados['texto'],
'</div>';
//Seleccionamos el recomendado siguiente, que sea mayor que el actual.
$Qrecomendadosm=$db -> query("consulta");
$Rrecomendadosm=$db -> fetch_array($Qrecomendadosm);
$idn=$Rrecomendadosm['id'];
//Seleccionamos el recomendado anterior, que sea menor al actual.
$Qrecomendadosp=$db->query(consulta");
$Rrecomendadosp=$db->fetch>array($Qrecomendadosp);
$idl=$Rrecomendadosp['id'];
echo'
<form name="Frecomendados" action="">';
//Si no hay id mayor que la actual para determinar la siguiente
//o menor que la actual para determinar la anterior..
if(empty($idn))
{
//Siguiente recomendado será la primera id que haya con el estado 1
//dado que si no hay ninguna mayor que la actual, se habrá de empezar por el principio
$Qrecomendadosm=$db->query("consulta");
$Rrecomedadosm=$db->fetch_array($Qrecomendadosm);
$idn=$Rrecomendadosm['id'];
echo '<input type="hidden" value="',$idn,'" name="Nrecomendado" />';
}
else
{
echo '<input type="hidden" value="',$idn,'" name="Nrecomendado" />';
}
if (empty($idl))
{
//Anterior recomendado será la última id que haya con el estado 1
//dado que si no hay ninguna menor que la actual, se habrá de empezar por el final
$Qrecomendadosp=$db->query("consulta");
$Qrecomendadosp=$db->fetch_array($Qrecomendadosp);
$idl=$Rrecomendadosp['id'];
echo'
<input type="hidden" value="',$idl,'" name="Lrecomendado"/>';
}
else
{
echo '
<input type="hidden" value="',$idl,'" name="Lrecomendado"/>';
}
echo'
</form>
<div style="float:right;background:#3F3F3F;margin-top:-213px;">
<span onclick="anteriorR()" id="anteriorR">
<img src="/images/icons/last.png" alt="anterior" title="anterior" />
</span>
<span onclick="siguienteR()" id="siguienteR">
<img src="/images/icons/next.png" alt="siguiente" title="siguiente" />
</span>
</div>';
?>
[/spoiler]
(He borrado las consultas, porque no me gusta colocarlas públicamente, pero no es problema de las consultas, ya que poniendo yo mi propia funcion $db2 (creada por mí) si funciona todo, pero quiero que sea con la predefinida por mybb, pero con esta únicamente se muestra el resultado inicial. -lo podeis ver porque en la página http://zonaps3.es en la zona recomendamos sale "prueba", si no funcionase la función correctamente, no funcionaría nunca...-).
¿Alguna solución?
Muchas gracias por su atención.
EDIT:
Acabo de "descubrir", que solo se realiza la primera consulta (Es decir la que muestra la recomendación actual).
La que tiene que mostrar la recomendación o siguiente no se realiza esa consulta sql.
Y están igual definidas, si no mirad:
Código PHP:
//Esta es la primera consulta, y si se ejecuta. (Obtiene primera recomendación o la actual).
$Qrecomendados=$db -> query("consulta");
$Rrecomendados=$db -> fetch_array($Qrecomendados);
//Esta consulta no se ejecuta. (Que sería la anterior o la siguiente).
$Qrecomendadosm=$db -> query("consulta");
$Rrecomendadosm=$db -> fetch_array($Qrecomendadosm);
En serio, ¿What the fuck? Y si fuese problema de que no se recibe id, o no hay siguiente, no sería ningun problema porque elegiría el primero. (Igual que si no hay último...)
Última modificación: 29 Aug, 2013, 6:51 pm por
manu92gs.