Pagina 1 di 6

Una piccola cosa

Inviato: 05/01/2010, 20:21
da BMercer
Avrei tutta una serie di domande. Allora incominciamo una alla volta.
Mio sito: http://www.shadowsclan.netsons.org/forum/

Ok Allora, se andate all'indirizzo sopra indicato, potrete vedere la welcome MOD, dove a da sx verso dx, possiamo trovare l'avatar dell'utente, un messaggio di benvenuto e l'ora attuale (o click here to register ecc..., per i guests) e tutti gli strumenti per l'utente (pannello di controllo, messaggi privati, faq, iscritti, logout).

Ora vorrei lavorare sulla colonna in mezzo, tra l'avatar e gli strumenti per l'utente:

Vorrei cancellare tutto il codice ed inserire una serie di statistiche utente del tipo:

Posts:
Posts in un determinato forum:
Discussioni in un determinato forum:

Però oltre a quello avevo in mente di inserire un'altra cosa. Allora facciamo un'esempio delle statistiche sopra citate:

Posts: 320
Posts in un determinato forum: 42
Discussioni in un determinato forum: 1

Mettiamo il caso che le statistiche consigliate (che noi richiediamo) siano:

Posts: X >= 150
Posts in un determinato forum: x >= 50
Discussioni in un determinato forum: X >= 1

E mettiamo il caso volessimo far vedere all'utente (nel caso non abbia raggiunto tali richieste) il numero di topic/posts necessari, l'esempio si trasformerebbe così:

Posts: 320
Posts in un determinato forum: 42 [50]
Discussioni in un determinato forum: 1

Tutto questo è possibile farlo?

Re: Una piccola cosa

Inviato: 05/01/2010, 20:57
da Carlo
Tipo una specie di obbiettivi, giusto?

Comunque aggiungo alla mia lista di script da realizzare.

P.S.: Titolo errato.

Re: Una piccola cosa

Inviato: 05/01/2010, 21:15
da BMercer
Diciamo di si.
Gli obiettivi da raggiungere sono tra [] e quando li raggiungi semplicemente spariscono.

Re: Una piccola cosa

Inviato: 08/01/2010, 19:33
da Carlo
Questo è il codice php occorrente:

Codice: Seleziona tutto

<?php

$posts_totali_minimi = 100;
$posts_minimi_forum_X = 10;
$topic_minimi_forum_X = 5;

$sql = "SELECT COUNT(post_id) as user_posts_forum_x FROM " . POSTS_TABLE . " WHERE poster_id = {$user->data['user_id']} WHERE forum_id = $posts_minimi_forums_X";
$result = $db->sql_query($sql);
$user_posts_forum_x = (int) $db->sql_fetchfield('user_posts_forum_x');
$db->sql_freeresult($result);

$sql = "SELECT COUNT(topic_id) as user_topics_forum_x FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forums_X";
$result = $db->sql_query($sql);
$user_topics_forum_x = (int) $db->sql_fetchfield('user_topics_forum_x');
$db->sql_freeresult($result);

$template->assign_vars(array(
    'USER_POSTS'            => $user->data['user_posts'],
    'POSTS_MINIMI'            => $posts_totali_minimi,
    'USER_POSTS_FORUM_X'    => $user_posts_forum_x,
    'POSTS_MINIMI_FORUM_X'    => $posts_minimi_forum_X,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_x,
    'TOPICS_MINIMI_FORUM_X'    => $topic_minimi_forum_x
));

?>
Questo invece è il codice occorrente nel template:

Codice: Seleziona tutto

Posts: {USER_POSTS} <!-- IF USER_POSTS < POSTS_MINIMI -->[{POSTS_MINIMI}]<!-- ENDIF --><br />
Posts in forum X: {USER_POSTS_FORUM_X} <!-- IF USER_POSTS_FORUM_X < POSTS_MINIMI_FORUM_X -->[{POSTS_MINIMI_FORUM_X}]<!-- ENDIF --><br />
Topic in forum X: {USER_TOPICS_FORUM_X} <!-- IF USER_TOPICS_FORUM_X < TOPICS_MINIMI_FORUM_X -->[{TOPICS_MINIMI_FORUM_X}]<!-- ENDIF -->

Re: Una piccola cosa

Inviato: 08/01/2010, 19:48
da BMercer
Grazie mille, lo provo domani perchè non sono nel pc adatto.
Il codice php devo metterlo nell'header?

Re: Una piccola cosa

Inviato: 09/01/2010, 15:07
da BMercer
carlino1994 ha scritto:Questo è il codice php occorrente:

Codice: Seleziona tutto

<?php

$posts_totali_minimi = 100;
$posts_minimi_forum_X = 10;
$topic_minimi_forum_X = 5;

$sql = "SELECT COUNT(post_id) as user_posts_forum_x FROM " . POSTS_TABLE . " WHERE poster_id = {$user->data['user_id']} WHERE forum_id = $posts_minimi_forums_X";
$result = $db->sql_query($sql);
$user_posts_forum_x = (int) $db->sql_fetchfield('user_posts_forum_x');
$db->sql_freeresult($result);

$sql = "SELECT COUNT(topic_id) as user_topics_forum_x FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forums_X";
$result = $db->sql_query($sql);
$user_topics_forum_x = (int) $db->sql_fetchfield('user_topics_forum_x');
$db->sql_freeresult($result);

$template->assign_vars(array(
    'USER_POSTS'            => $user->data['user_posts'],
    'POSTS_MINIMI'            => $posts_totali_minimi,
    'USER_POSTS_FORUM_X'    => $user_posts_forum_x,
    'POSTS_MINIMI_FORUM_X'    => $posts_minimi_forum_X,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_x,
    'TOPICS_MINIMI_FORUM_X'    => $topic_minimi_forum_x
));

?>
Questo invece è il codice occorrente nel template:

Codice: Seleziona tutto

Posts: {USER_POSTS} <!-- IF USER_POSTS < POSTS_MINIMI -->[{POSTS_MINIMI}]<!-- ENDIF --><br />
Posts in forum X: {USER_POSTS_FORUM_X} <!-- IF USER_POSTS_FORUM_X < POSTS_MINIMI_FORUM_X -->[{POSTS_MINIMI_FORUM_X}]<!-- ENDIF --><br />
Topic in forum X: {USER_TOPICS_FORUM_X} <!-- IF USER_TOPICS_FORUM_X < TOPICS_MINIMI_FORUM_X -->[{TOPICS_MINIMI_FORUM_X}]<!-- ENDIF -->
Ho inserito

Codice: Seleziona tutto

$posts_totali_minimi = 10000;
$topic_minimi_forum_120 = 1;
$topic_minimi_forum_214 = 30;
$topic_minimi_forum_198 = 300;

$sql = "SELECT COUNT(topic_id) as user_topics_forum_x FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forums_120";
$result = $db->sql_query($sql);
$user_topics_forum_120 = (int) $db->sql_fetchfield('user_topics_forum_120');
$db->sql_freeresult($result);

$sql = "SELECT COUNT(topic_id) as user_topics_forum_x FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forums_214";
$result = $db->sql_query($sql);
$user_topics_forum_214 = (int) $db->sql_fetchfield('user_topics_forum_214');
$db->sql_freeresult($result);

$sql = "SELECT COUNT(topic_id) as user_topics_forum_x FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forums_198";
$result = $db->sql_query($sql);
$user_topics_forum_198 = (int) $db->sql_fetchfield('user_topics_forum_198');
$db->sql_freeresult($result);

$template->assign_vars(array(
    'USER_POSTS'            => $user->data['user_posts'],
    'POSTS_MINIMI'            => $posts_totali_minimi,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_120,
    'TOPICS_MINIMI_FORUM_X'    => $topic_minimi_forum_120,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_214,
    'TOPICS_MINIMI_FORUM_X'    => $topic_minimi_forum_214,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_198,
    'TOPICS_MINIMI_FORUM_X'    => $topic_minimi_forum_198
));

 
Nel file common.php (questa cosa deve funzionare in tutte le pagine), ma mi dà errore di sintassi sql.
Ho sbagliato qualche cosa?

Re: Una piccola cosa

Inviato: 09/01/2010, 15:09
da Carlo
Uhm.. ti consiglio di inserirlo nel file includes/functions.php. Comunque a quale delle 3 query ti dà errore?

Re: Una piccola cosa

Inviato: 09/01/2010, 15:12
da BMercer
C'era una "Line 1" e un "Where forum id" mi pare.

Re: Una piccola cosa

Inviato: 09/01/2010, 15:16
da Carlo
Ho notato che le variabili sono tipo:

Codice: Seleziona tutto

$topics_minimi_forum_120
mentre nella query le hai modificate così:

Codice: Seleziona tutto

$topics_minimi_forums_120
Ovvero aggiungendo una S a "forum".

Re: Una piccola cosa

Inviato: 09/01/2010, 15:28
da BMercer
Ho inserito questo

Codice: Seleziona tutto

$posts_totali_minimi = 10000;
$topics_minimi_forum_120 = 1;
$topics_minimi_forum_214 = 30;
$topics_minimi_forum_198 = 300;

$sql = "SELECT COUNT(topic_id) as user_topics_forum_120 FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forum_120";
$result = $db->sql_query($sql);
$user_topics_forum_120 = (int) $db->sql_fetchfield('user_topics_forum_120');
$db->sql_freeresult($result);

$sql = "SELECT COUNT(topic_id) as user_topics_forum_214 FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forum_214";
$result = $db->sql_query($sql);
$user_topics_forum_214 = (int) $db->sql_fetchfield('user_topics_forum_214');
$db->sql_freeresult($result);

$sql = "SELECT COUNT(topic_id) as user_topics_forum_198 FROM " . TOPICS_TABLE . " WHERE topic_poster = {$user->data['user_id']} WHERE forum_id = $topics_minimi_forum_198";
$result = $db->sql_query($sql);
$user_topics_forum_198 = (int) $db->sql_fetchfield('user_topics_forum_198');
$db->sql_freeresult($result);

$template->assign_vars(array(
    'USER_POSTS'            => $user->data['user_posts'],
    'POSTS_MINIMI'            => $posts_totali_minimi,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_120,
    'TOPICS_MINIMI_FORUM_X'    => $topics_minimi_forum_120,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_214,
    'TOPICS_MINIMI_FORUM_X'    => $topics_minimi_forum_214,
    'USER_TOPICS_FORUM_X'    => $user_topics_forum_198,
    'TOPICS_MINIMI_FORUM_X'    => $topics_minimi_forum_198
)); 
In funcions.php alla fine e mi ha dato un errore alle line 3200 circa (mentre il codice era alla 4000 più o meno).
Allora l'ho preso e l'ho messo all'inizio, e mi ha dato fatal error alla linea che dice

Codice: Seleziona tutto

$result = $db->sql_query($sql); 
Che cosa sta succedendo?