Aiuto Query parte 2

Aperto da Flavio93Zena, Mercoledì - 13 Gennaio 2016 - 02:15

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Flavio93Zena

Io odio mySQL, nel caso non si fosse già capito, dovrei tradurre in mySQLese quanto segue:
Seleziona da tabella smf_members la colonna ssrs_points e dalla tabella smf_membergroups il valore della colonna min_posts di modo che il secondo sia appena superiore al primo.
Poi fai (ssrs_points : min_posts = {VARIABILE} : 100)
Mi serve poter utilizzare la variabile nel template in qualche modo.

Saprei leggere la query, ma non riesco a scriverla, è incredibilmente frustrante, davvero.
ANZI, assomiglia pure a questa, e nemmeno poco:
$context['member']['posts_per_day'] = comma_format($context['member']['real_posts'] / $days_registered, 3);
// Start of Next Post Level Mod
global $settings;
        if ((empty($settings['hide_post_group']) || $context['member']['group'] == '') && $context['member']['post_group'] != '')
{

// Grab the next highest post group above the current post count
$request = $smcFunc['db_query']('', '
SELECT id_group, group_name, min_posts
FROM {db_prefix}membergroups
WHERE min_posts > {int:member_posts}       
        ORDER BY min_posts
LIMIT 1 ',
        array(
            'member_posts' => $context['member']['posts'],
        ));

        if($smcFunc['db_num_rows']($request) == 0)
$context['member']['next_post_level'] = $txt['nextpostlevel_glassceiling'];
else
{

// Found a row
$row = $smcFunc['db_fetch_assoc']($request);
$smcFunc['db_free_result']($request);

$context['member']['next_post_level'] = sprintf($row['group_name'] . $txt['nextpostlevel_inposts_'. (($row['min_posts'] - $context['member']['posts'] == 1) ? 'singular' : 'plural' )], $row['min_posts'] - $context['member']['posts']);

// Tidy up
unset($row);
}
        }
// End of Next Post Level Mod

Il nervoso... Grazie in anticipo.

NOTA: il punto dove aggiungerò la roba è vicino a dove qui abbiamo le versioni, nel caso servisse, e deve considerare i punti solo ed esclusivamente dell'utente di quel campo appunto, tipo nel mio caso mostrerebbe i miei, e se postasse Pincopallo sotto di me, mostrerebbe i punti di Pincopallo nel suo campo.

Flavio93Zena


Flavio93Zena


emanuele

Immagino tu lo debba fare in Display.php, corretto?

Il campo da members lo prendi con la query in loadMembersdata e lo metti prima in $user_settings, poi in $user_info.

Quindi fai una query "generica" e prendi da membergroups tutti i gruppi con min_posts > -1.

Poi fai i paragoni in php e prendi quello che ti serve.

Flavio93Zena

Il fatto è che non sono capace di fare quello che hai detto, per quanto abbia sempre lavorato sui template, html e css, non ho mai toccato mySQL e si vede, riesco a malapena a capire quello che dici :/

emanuele

SELECT min_posts
FROM {db_prefix}membergroups
WHERE min_posts > -1

Flavio93Zena

Sì vabbè quello sì anche io riesco XD ma è tutto quello che viene dopo che è arabo :/

emanuele

Ma quello che viene dopo non è SQL, ma php. :P
Adesso non ce la faccio. Prossimamente.

Flavio93Zena

E' impossibile fare tutta la query se non hai nemmeno chiamato il valore dei punti O.o La parte di mostrare i punti dovrei esserne capace anch'io, basta chiamare la variabile e... Beh, è simile alla barra dei post in memberlist.template, così ci capiamo ;)
Comunque intanto grazie come sempre, appena hai tempo io ci sono (più o meno xD) :)

emanuele

Io vorrei che ogni tanto la gente mi credesse quando dico qualcosa... :P
Quello che ti ho detto è:
1) recupera tutti i gruppi basati sui post (e lo fai con la query sopra)
2) via *PHP* compari il risultato di quella query (che sarà un array con i valori che ti servono) con il numero dei post ed individui quello che ti serve,
3) fai i conticini di matematica.

Il 2 sarà un:
foreach ($risultati_query as $val)
{
    se ($val['post'] > $numero_post)
    {
        // do something
        break;
    }
}

Flavio93Zena

Ok non ci sto capendo niente ;D

Allora gli edit sarebbero 2, uno nel Display.php o comunque un source nel quale si possa inserire una query che possa richiamare da Display.template.php (quindi sì presumo Display.php).
L'altro edit sarebbe nel template, e per quel poco che so di php fare query nei template non va bene xD

E ho lasciato il messaggio aperto per non so quante ore ._. Sigh.

Discussioni simili (3)