Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

consulta mysqlTema Solucionado

Foros donde podréis dejar vuestras dudas sobre phpBB 3.0.x
rafaxplayer
Observador/a
Mensajes: 48
Registrado: 23 Nov 2010, 15:46

Re: consulta mysql

#16

Mensaje por rafaxplayer »

Aja todo aclarado voy a probar...
URL: http://amsspecialist.com
Versión phpBB: phpBB3 (3.0.11-PL1)
MODs Instalados:
- SyntaxHighlighter 1.0.12
- Very Simple Guest Hide BBCode MOD 1.0.1
Plantilla(s) usada(s): Comboot Freee
Servidor: Gratuito
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

rafaxplayer
Observador/a
Mensajes: 48
Registrado: 23 Nov 2010, 15:46

Re: consulta mysql

#17

Mensaje por rafaxplayer »

Probado, funciona correctamente... solo por rizar el rizo decir que se situa en la ultima pagina de post pero el scroll arriba y no al final XD , es esto mucho pedir?
URL: http://amsspecialist.com
Versión phpBB: phpBB3 (3.0.11-PL1)
MODs Instalados:
- SyntaxHighlighter 1.0.12
- Very Simple Guest Hide BBCode MOD 1.0.1
Plantilla(s) usada(s): Comboot Freee
Servidor: Gratuito
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: consulta mysql

#18

Mensaje por Alorse »

rafaxplayer escribió:Probado, funciona correctamente... solo por rizar el rizo decir que se situa en la ultima pagina de post pero el scroll arriba y no al final XD , es esto mucho pedir?
Qué? es que después de todo, ni siquiera nos has mostrado que es lo que estas haciendo.

rafaxplayer
Observador/a
Mensajes: 48
Registrado: 23 Nov 2010, 15:46

Re: consulta mysql

#19

Mensaje por rafaxplayer »

Alorse escribió:
rafaxplayer escribió:Probado, funciona correctamente... solo por rizar el rizo decir que se situa en la ultima pagina de post pero el scroll arriba y no al final XD , es esto mucho pedir?
Qué? es que después de todo, ni siquiera nos has mostrado que es lo que estas haciendo.
Cierto, lo siento...

Bueno estoy haciendo una extensión de chrome que accede a mi foro, uso dos php :

uno para contar los mensajes nuevos que ha quedado así:

Código: Seleccionar todo

<?php 
header("Expires: Sun, 19 Nov 1978 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

include("config.php");
mysql_select_db($dbname,mysql_connect($dbhost,$dbuser,$dbpasswd));
$userdata = mysql_fetch_array(mysql_query("SELECT * FROM phpbb_users WHERE username_clean='".mysql_real_escape_string(strtolower($_GET['id']))."' LIMIT 1"));

if ($userdata!=false) {
    
	$query = mysql_query("SELECT t.topic_id, t.topic_last_post_time, tt.mark_time as topic_mark_time, ft.mark_time as forum_mark_time 
    FROM (phpbb_topics t) LEFT JOIN phpbb_topics_track tt 
    ON (tt.user_id = " . $userdata['user_id'] . " 
        AND t.topic_id = tt.topic_id) LEFT JOIN phpbb_forums_track ft 
        ON (ft.user_id =  " . $userdata['user_id'] . " 
            AND t.forum_id = ft.forum_id) WHERE t.topic_last_post_time > " . $userdata['user_lastvisit'] ." 
                AND( 
                (tt.mark_time IS NOT NULL AND t.topic_last_post_time > tt.mark_time) OR 
                (tt.mark_time IS NULL AND ft.mark_time IS NOT NULL AND t.topic_last_post_time > ft.mark_time) OR 
                (tt.mark_time IS NULL AND ft.mark_time IS NULL) 
                ) 
                AND t.topic_moved_id = 0 ");
                $fi=0;
	while ($data=mysql_fetch_array($query)) {
	   $query2=mysql_query("SELECT post_id FROM phpbb_posts WHERE topic_id='".$data["topic_id"]."' AND post_time > '".$userdata['user_lastvisit']."'");
		
		while ($data2=mysql_fetch_array($query2)) {
		$fi++;
		}
		
		
		
	}
}else{
    $fi=0;
} 
echo $fi;

?>
y otro para montar el html que seria este:

Código: Seleccionar todo

<html><head><title>AMSSpecialist</title>
<style>
a:link {
	color: #666;
	text-decoration: none;
}
a:visited {
	text-decoration: none;
	color: #666;
}
a:hover {
	text-decoration: none;
	color: #666;
}
a:active {
	text-decoration: none;
	color: #666;
}
body,td,th {
	font-family: Verdana, Geneva, sans-serif;
	font-size: 10px;
}
</style>
</head>
<body style="background-color:#e9e9e9; margin:0px; padding:0px; font: Verdana 10px;">
<?php
include("config.php");
mysql_select_db($dbname,mysql_connect($dbhost,$dbuser,$dbpasswd));
$userdata = mysql_fetch_array(mysql_query("SELECT * FROM phpbb_users WHERE username_clean='".mysql_real_escape_string(strtolower($_GET['id']))."' LIMIT 1"));

if ($userdata!=false) {
    
	$query = mysql_query("SELECT t.topic_title, t.topic_id, t.topic_last_poster_name, t.topic_last_post_id, t.topic_last_post_time, t.forum_id, tt.mark_time as topic_mark_time, ft.mark_time as forum_mark_time 
    FROM (phpbb_topics t) LEFT JOIN phpbb_topics_track tt 
    ON (tt.user_id = " . $userdata['user_id'] . " 
        AND t.topic_id = tt.topic_id) LEFT JOIN phpbb_forums_track ft 
        ON (ft.user_id =  " . $userdata['user_id'] . " 
            AND t.forum_id = ft.forum_id) WHERE t.topic_last_post_time > " . $userdata['user_lastvisit'] ." 
                AND( 
                (tt.mark_time IS NOT NULL AND t.topic_last_post_time > tt.mark_time) OR 
                (tt.mark_time IS NULL AND ft.mark_time IS NOT NULL AND t.topic_last_post_time > ft.mark_time) OR 
                (tt.mark_time IS NULL AND ft.mark_time IS NULL) 
                ) 
                AND t.topic_moved_id = 0 ");
	while ($data=mysql_fetch_array($query)) {
	  $query2=mysql_query("SELECT post_id FROM phpbb_posts WHERE topic_id='".$data["topic_id"]."' AND post_time > '".$userdata['user_lastvisit']."'");
		$fi=0;
		while ($data2=mysql_fetch_array($query2)) {
        $fi++;
		}
        echo "<div style='position:relative; width:500px; height:20px; overflow:hidden; background:url(bjk.png) no-repeat;'>";
		echo "<div style='position:absolute; left:7px; top:3px; color:#fff; font-weight:bold;'>".$fi."</div>";
		echo "<div style='position:absolute; left:24px; top:3px;'><a href='http://www.amsspecialist.com/viewtopic.php?f=".$data["forum_id"]."&t=".$data["topic_id"]."&p=".$data["topic_last_post_id"]."#p=".$data["topic_last_post_id"]."' target='_blank'><b>".$data["topic_title"]."</b></a></div>";
		echo "<div style='position:absolute; left:410px; top:3px; color:#0b75e0;'>".$data["topic_last_poster_name"]."</div>";
		echo "</div>";
	}
        
   
} else{
    echo 'No user data, use RSS';
}

?>
</body>
</html>
Ok? esto es el php que uso , espero os sirva de algo a vosotros , gracias ;)

Nota: Si queréis todo el source, lo cuelgo.
URL: http://amsspecialist.com
Versión phpBB: phpBB3 (3.0.11-PL1)
MODs Instalados:
- SyntaxHighlighter 1.0.12
- Very Simple Guest Hide BBCode MOD 1.0.1
Plantilla(s) usada(s): Comboot Freee
Servidor: Gratuito
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: consulta mysql

#20

Mensaje por Alorse »

rafaxplayer escribió:se situa en la ultima pagina de post pero el scroll arriba y no al final
Si se sitúa en la pagina que es y al final tiene el #p, debería situarse exactamente en el mensaje que corresponde, no arriba ni al final, aunque si el mensaje es el primero pues si se situa al principio.

rafaxplayer
Observador/a
Mensajes: 48
Registrado: 23 Nov 2010, 15:46

Re: consulta mysql

#21

Mensaje por rafaxplayer »

Bueno a mi este el post en la posición que este me sitúa al principio del topic , como ves la url es la del segundo php , supongo que #p requiere la id del post, no?.
URL: http://amsspecialist.com
Versión phpBB: phpBB3 (3.0.11-PL1)
MODs Instalados:
- SyntaxHighlighter 1.0.12
- Very Simple Guest Hide BBCode MOD 1.0.1
Plantilla(s) usada(s): Comboot Freee
Servidor: Gratuito
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: consulta mysql

#22

Mensaje por Alorse »

rafaxplayer escribió:supongo que #p requiere la id del post, no?.
Si claro, requiere la id del mensaje (post) para poder que lo ubique en el.

rafaxplayer
Observador/a
Mensajes: 48
Registrado: 23 Nov 2010, 15:46

Re: consulta mysql

#23

Mensaje por rafaxplayer »

Alorse escribió:
rafaxplayer escribió:supongo que #p requiere la id del post, no?.
Si claro, requiere la id del mensaje (post) para poder que lo ubique en el.
Pues no hace lo dicho ;(
URL: http://amsspecialist.com
Versión phpBB: phpBB3 (3.0.11-PL1)
MODs Instalados:
- SyntaxHighlighter 1.0.12
- Very Simple Guest Hide BBCode MOD 1.0.1
Plantilla(s) usada(s): Comboot Freee
Servidor: Gratuito
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

rafaxplayer
Observador/a
Mensajes: 48
Registrado: 23 Nov 2010, 15:46

Re: consulta mysql

#24

Mensaje por rafaxplayer »

Saludos compañeros , retomo el tema de la consulta anterior porque pensaba que estaba todo solucionado y así lo parecía hasta ahora.

Resulta que la consulta me cuenta los post no leídos desde ultima visita y funciona perfecto e incluso cuando los voy leyendo y haciendo la consulta el contador baja según leo , todo correcto , el problema es cuando en el indice uso el enlace de marcar todos los foros como leidos , lo normal seria que la consulta me retornara 0 post sin leer desde ultima visita no? ,pues no ,me retorna los mismos que había al principio y esto no se arregla hasta que no me deslogueo del foro , espero me hayáis entendido sobre todo tu alorse que eres el autor de la estupenda query que me soluciono casi todo mi script , un saludo
URL: http://amsspecialist.com
Versión phpBB: phpBB3 (3.0.11-PL1)
MODs Instalados:
- SyntaxHighlighter 1.0.12
- Very Simple Guest Hide BBCode MOD 1.0.1
Plantilla(s) usada(s): Comboot Freee
Servidor: Gratuito
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: consulta mysql

#25

Mensaje por Alorse »

Bueno, eso vuelve la cosa mucho más compleja... mejor hagamos algo nuevo, primero que todo... dime donde estas usando esta consulta? nunca nos has mostrado funcionando el script.
Luego has un import al archivo includes/functions.php del foro y llama la función get_unread_topics() a la cual debes pasarle 4 parámetros, $userdata['user_id'], $sql_extra, $sql_sort y $sql_limit, estos últimos 3 ya los tienes, serian:

Código: Seleccionar todo

$sql_extra = 'AND t.topic_moved_id = 0'; 
$sql_sort = 'ORDER BY t.topic_last_post_time DESC';
$sql_limit = 10;
Quedaría así:

Código: Seleccionar todo

$fi = get_unread_topics($userdata['user_id'], $sql_extra, $sql_sort, $sql_limit);
Eso no recuerdo que es lo que te retorna, pero ya miraras y sabrás que hacer, además ya retorna sin el problema de la sesión.

Muéstranos el script y dinos que tal te fue.

PD: Debes borrar la consulta que hicimos con anterioridad.

rafaxplayer
Observador/a
Mensajes: 48
Registrado: 23 Nov 2010, 15:46

Re: consulta mysql

#26

Mensaje por rafaxplayer »

Bueno decirte que ya explique donde uso la consulta , es en una extension de chrome la cual llama al php que te mostré anteriormente para saber los post nuevos del usuario que se define mediante el nombre solamente en la extensión , todo esto funciona sin sessiones en el phpbb .

La función que me comentas ya la use y el problema que me da es que necesita session del usuario porque ademas del user_id del parámetro que necesita después usa otros valores del user->data dentro de ella , y por eso da errores si la llamo como tu dices, lo ideal y ese es mi problema con estas consultas es adaptar la consulta que hay dentro de la función a su uso sin session de ususario como hiciste en las anteriores
y obtener el array del get_unreadpost .

Si hacemos esto luego solo seria hacer una consulta para saber los post desde ultima visita sobre los post id del array dicho.

bueno por si sirve de algo muestro el codigo javascript que uso para llamar al php de la consulta en mi extension de chrome:

Código: Seleccionar todo

var NEWPOST={color:[12,180,37,255]};
var NOPOST={color:[255, 0, 0, 255]};
chrome.browserAction.setBadgeBackgroundColor(NOPOST);

seticon();

function setbadge(num){
if (parseInt(num)>0){
    chrome.browserAction.setBadgeBackgroundColor(NEWPOST);  
}
else{
    chrome.browserAction.setBadgeBackgroundColor(NOPOST);
	}
chrome.browserAction.setBadgeText({text:num});
}

function seticon(){
    nowDate = new Date();
    if((nowDate.getMonth()== 0 && nowDate.getDate()<= 7) || (nowDate.getMonth()== 11 && nowDate.getDate() > 23 )){
        chrome.browserAction.setIcon({"path":"images/amssp_navidad.png"});
        localStorage.icon="images/amssp_navidad.png"
    }else{chrome.browserAction.setIcon({"path":"images/amssp.png"});
        localStorage.icon="images/amssp.png"}
    
}

function playSound(soundUrl){
    var sound = new Audio(soundUrl);
    if(sound && JSON.parse(localStorage.PlaySounds)){
     sound.play();  
    }
}
var req = new XMLHttpRequest();

function getlastpost(){
    
if (req != null) {
    req.open(
        "GET",
         "http://www.amsspecialist.com/unread_count.php?id=" + localStorage.user,
        true);
    req.onreadystatechange = show;
    req.send(null);
    }else{
	localStorage.numpost = 0;
	setbadge(localStorage.numpost);
	
		}
    window.setTimeout(function(){getlastpost();},5000);
}


function show(){
    if (req.readyState == 4 ) {
        if (req.status == 200) {
            localStorage.numpost=(isNaN(parseInt(req.responseText)) || req.responseText =='undefined' ? 0 : parseInt(req.responseText));
            setbadge(localStorage.numpost);
		    //chrome.browserAction.setBadgeText({text:localStorage.numpost});
            Notifishow(localStorage.numpost);
			localStorage.lastnumpost=localStorage.numpost;
            }
    }
}
function Notifishow(num) {
  var post = (num-localStorage.lastnumpost);
  var notification = window.webkitNotifications.createNotification(
    'images/amssp.png',                      
    chrome.i18n.getMessage('new_post'), 
    chrome.i18n.getMessage('new_post_public').replace('#',post)     
  );
  
  if ( num > localStorage.lastnumpost){
    if(JSON.parse(localStorage.Notify)){
    notification.ondisplay = playSound('sounds/Mouth.mp3');
    //notification.onclick = playSound('sounds/Boop.ogg');
    notification.show();
        if(JSON.parse(localStorage.NotifyHidde)){
		window.setTimeout(function(){notification.close();},15000);
        }
    }
  }
}

getlastpost();
URL: http://amsspecialist.com
Versión phpBB: phpBB3 (3.0.11-PL1)
MODs Instalados:
- SyntaxHighlighter 1.0.12
- Very Simple Guest Hide BBCode MOD 1.0.1
Plantilla(s) usada(s): Comboot Freee
Servidor: Gratuito
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Cerrado

Volver a “Foros de Soporte 3.0.x”