Joomla.it Forum

Non solo Joomla... => Sviluppo => : jomlox 10 Mar 2011, 15:42:04

: [per ESPERTI] query non funziona a dovere!
: jomlox 10 Mar 2011, 15:42:04
 :'( :'( :'( :'(

il mio sito è http://jomcode.altervista.org/portale/

come vedete in alto i valori sono corretti.

il menu però ha valore per essere visto bisogna avere livello utente>200 mentre anche gli ospiti che hanno 0 lo riescono a vedere.

vi posto il codice di ja_templatetools.php
:
function getCurrentMenuIndex(){
$Itemid = JRequest::getInt( 'Itemid');
$database =& JFactory::getDBO();
$id = $Itemid;
$menutype = 'mainmenu';
$ordering = '0';
$livminutente = '0';
while (1){
$sql = "select parent, menutype, ordering, livminutente from #__menu where id = $id limit 1";
$database->setQuery($sql);
$row = null;
$row = $database->loadObject();
if ($row) {
$menutype = $row->menutype;
$ordering = $row->ordering;
$livminutente = $row->livminutente;
if ($row->parent > 0)
{
$id = $row->parent;
}else break;
}else break;
}

$user =& JFactory::getUser();
//printf("user = " . $user);
//echo $user;
$id2 = $user->get('id',0);
$database2 =& JFactory::getDBO();
$livutente = '0';
$sql2 = "select liv_utente from #__users where id = $id2 limit 1";
$database2->setQuery($sql2);
$row2 = null;
$row2 = $database2->loadObject();
if ($row2){
$livutente = $row2->liv_utente;
}
$sql = 'SELECT count(*) FROM #__menu AS m'
. ' WHERE menutype=' . $database -> Quote($menutype)
. ' AND published=1 AND parent=0 and ordering < ' . $ordering
;
if (isset($user)) {
$aid = $user->get('aid', 0);
//$sql .= " AND access <= '$aid'";
//$livutente = $user->get('liv_utente',0);//mio
//$livutente = $user->liv_utente;//mio
//$sql .= ' AND livminutente < ' . $livutente ;//mio

}
$sql .= ' AND livminutente < ' . $livutente ;//mio
//PRINTF UTILI CHE SI VEDONO A INIZIO PAGINA
printf("livminutente = %d ", $livminutente) ;
printf("livutente = %d ", $livutente) ;
printf("user = %d ", $user) ;
$database->setQuery($sql);

return $database->loadResult();
}
: Re:[per ESPERTI] query non funziona a dovere!
: mmleoni 10 Mar 2011, 21:35:26
while(1){...}

ma che hai scritto??? non ti offendere, non è l'intenzione, ma è strano che funzioni qualcosa.  ;D

a parte che mi pare che tu abbia modificato le tabelle di joomla, il che non è una buona idea, ti consiglierei di riscrivere il codice facendo attenzione alla logica... attualmente è un non sense.

ciao,
marco
: Re:[per ESPERTI] query non funziona a dovere!
: jomlox 11 Mar 2011, 16:21:53
non mi offendo anche perchè stai offendendo i creatori di joomla o di quel template, quel while(1) è già li per conto suo.
io ho solo inserito le variabili che mi servono a me, per questo anche modificando le tabelle di joomla non ne cambio la struttura base, solo mi serve espanderla a mio piacimento.

unico problema è che, pur prendendo i valori corretti dalle tabelle (in questo caso jos_menus e jos_user), la query non lavora secondo la logica scritta..

se hai qualche suggerimento o conosci qualcuno che sa mettere mano al codice mi fai un GRANDE favore..
ti ringrazio in anticipo per il tempo dedicatomi
: Re:[per ESPERTI] query non funziona a dovere!
: mmleoni 12 Mar 2011, 13:34:24
la query funziona perfettamente, solo che non restituisce il menù, ma il numero di voci del menù corrente che precedono la voce di menù selezionata, valore, che, per altro, non è usato da nessuna parte.

per quello che server a te devi agire sul modulo di rendering del menù.

nota che mettere [per ESPERTI], soprattutto in maiuscolo, fa sì che le persone esperte ignorino, come avrai notato, il post.

ciao,
marco
: Re:[per ESPERTI] query non funziona a dovere!
: jomlox 16 Mar 2011, 09:52:26
accetto la critica e mi scuso, non era per cattiveria.
è diverso tempo che ci lavoro su, per questo diciamo gioco "sporco" per attirare persone che potrebbero sapere la risposta alla mia soluzione, ero in buona fede, scusate ancora.

tornando al problema(nel frattempo ti ringrazio per la gentile attenzione) dove trovo quello di cui parli te, cioè il rendering del menu?
grazie, buona giornata!  :)

ps. che babbo, nell'incredula speranza che avessi trovato il pezzo giusto non ho notato il "count(*)" nella query
che vergogna =(
: Re:[per ESPERTI] query non funziona a dovere!
: mmleoni 16 Mar 2011, 21:58:50
il render del menù avviene nel modulo mainmenu (/modules/mod_mainmenu/*).

ciao,
marco
: Re:[per ESPERTI] query non funziona a dovere!
: jomlox 17 Mar 2011, 14:52:28
Grazie Marco..proverò!
se avrò ancora bisogno spero di poter contare sul tuo prezioso aiuto..
grazie ancora..ciauz!

ps.Buona festa per i 150 anni d'italia!
: Re:[per ESPERTI] query non funziona a dovere!
: bertoandrea86 18 Mar 2011, 00:56:13
while (1){
         $sql = "select parent, menutype, ordering, livminutente from #__menu where id = $id limit 1";


o_O
: Re:[per ESPERTI] query non funziona a dovere!
: jomlox 18 Mar 2011, 09:40:38
bertoandrea86 sono sconvolto quanto te, ma riscrivo che non è un codice scritto da me, ma già presente nel pacchetto joomla che ho scaricato.
per quanto strano il template funziona =)
: Re:[per ESPERTI] query non funziona a dovere!
: mmleoni 20 Mar 2011, 21:17:58
guardate che while(1) e for(;;) sono costrutti assolutamente validi e usabili. la cosa che criticavo io era la realizzazione del tree traversal che è assolutamente oscena  :(

ciao,
marco
: Re:[per ESPERTI] query non funziona a dovere!
: bertoandrea86 20 Mar 2011, 23:21:42
guardate che while(1) e for(;;) sono costrutti assolutamente validi e usabili.

Sinceramente mai usato while(1) per controllare la condizione da valutare.
Perchè non avrebbesenso usare il while in questo caso
: Re:[per ESPERTI] query non funziona a dovere!
: mmleoni 21 Mar 2011, 08:12:52
infatti in tale caso la condizione di uscita non è controllata dal while.
i loop infiniti si usano quando le condizioni di uscita sono molteplici, proprio per indicare che le stesse vanno cercate all'interno del loop e rendere il codice più leggibile.

ciao.

l'altra condizione era "for(;;){}", prima che l'editor decidesse che era uno smile e non codice... mah.
: Re:[per ESPERTI] query non funziona a dovere!
: bertoandrea86 21 Mar 2011, 13:14:56
Ok, ora mi è più chiaro!
Grazie :-)