Back to top

Autore Topic: [joomla 2.5]problemi nel ricavare l'id da una query  (Letto 10574 volte)

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
[joomla 2.5]problemi nel ricavare l'id da una query
« il: 15 Feb 2013, 12:43:35 »
Buongiorno a tutti :)
Nuova giornata...  nuovi problemi !! :)


in breve:


Codice: [Seleziona]
//funzione che mi restituisce il giorno corrente

function dWeek($numberofday) {
   $days = array("domenica", "lunedi", "martedi", "mercoledi", "giovedi", "venerdi", "sabato");
   $nameofday=$days[$numberofday];
   return $nameofday;
}



$date = date('Y-m-d');
list($yyyy, $mm, $dd) = explode('-', $date);
$numberofday = date("w",mktime(0,0,0,$mm, $dd, $yyyy));


$currentDay = dWeek($numberofday);


//effettuo una query per ricavare i dati presenti nel giorno che mi interessa

$db = JFactory::getDbo();
                   
          $query = "SELECT a.id , a.eventid, substring_index('$dayweek', a.giorno, 3) as giorno,
                                                a.start, a.end, b.*
                                                FROM #__testcomponent_prg as a
                                                LEFT JOIN #__testcomponent_prgevent as b
                                                ON a.eventid = b.id";
                                               
                               
           $db->setQuery($query);
           $tresults = $db->loadObjectList();


Ora avrei necessità di linkare al giorno della settimana i vari eventi presenti.
In pratica visualizzare sulla pagina:


lunedi martedi mercoledi giovedi venerdi sabato domenica


ed associare al click sul giorno gli eventi presenti.


Per capirne in linea di massima il funzionamento ho fatto così:


Codice: [Seleziona]


$days = array("lunedi", "martedi", "mercoledi", "giovedi", "venerdi", "sabato", "domenica");

<?php foreach($days as $giorno) : ?>
                                <td><h4>
                                <a href="<?php echo JRoute::_('/index.php?option=com_testcomponent&view=prgs&id=' $tresults[0]->id); ?>">
                                <?php echo $giorno?></h4></a></td>
                                <?php endforeach; ?>




Si avvicina molto a ciò che vorrei soltanto che, come potete notare,
ovviamente $tresults[0]->id mi da sempre lo stesso id.


Grazie in anticipo per l'aiuto.


RaouL.


Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #1 il: 15 Feb 2013, 12:57:18 »
ovviamente $tresults[0]->id mi da sempre lo stesso id.
---------------------------------------------------------------------

chiami sempre lei nel ciclo...   ;)

tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #2 il: 15 Feb 2013, 13:01:07 »
PS: la query così come l'hai scritta secondo me va maluccio...

Riprova con questo suggerimento:
http://docs.joomla.org/JDatabaseQuery/11.1

 ;)
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #3 il: 15 Feb 2013, 13:41:50 »
Ciao e grazie per il supporto !


Come notavi, chiamo sempre il primo risultato disponibile e ovviamente
avrò sempre lo stesso id.


Facendo in questo modo:
Codice: [Seleziona]

<?php foreach($tresults as $giorno) : ?>
                                <td><h4>
                                <a href="<?php echo JRoute::_('/index.php?option=com_testcomponent&view=prgs&id=' $giorno->id); ?>">
                                <?php echo $giorno->giorno?></h4></a></td>
                                <?php endforeach; ?>


ottengo il link al giusto 'id' ma ovviamente
come 'giorno' stampo soltanto il giorno corrente, nel caso di oggi: venerdi

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #4 il: 15 Feb 2013, 13:50:59 »
$giorno->giorno è il risultato dell'operazione che fai nella query...

bisognerebbe controllare li ora se c'è qualcosa che non va...

 ;)
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #5 il: 15 Feb 2013, 18:10:10 »
Ok, ho fatto qualche passo in avanti:


la query l'ho modificata così:


Codice: [Seleziona]

$db = JFactory::getDbo();
                   
$query = "SELECT a.id as id, a.eventid, a.start, a.end, b.*
        FROM #__testcomponent_prg as a
LEFT JOIN #__testcomponent_event as b
ON a.eventid = b.id
where locate('$dayweek', a.giorno) > 0";
                                               
 $db->setQuery($query);
 $results = $db->loadObjectList();


e mi funziona perfettamente, nel senso che vedo
adesso correttamente gli eventi presenti per il giorno in questione
ad esempio, quelli di oggi, venerdì.


Ora, diciamo che sulla pagina metto una table che ha come
headers i giorni della settimana, come faccio a fare in modo
che al click sul giorno corrispondente mi visualizzi gli eventi relativi ?


Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #6 il: 15 Feb 2013, 18:55:25 »
Codice: [Seleziona]
$db = JFactory::getDbo();
                   
$query = "SELECT a.id as id, a.eventid, a.start, a.end, b.*
           FROM #__testcomponent_prg as a
      LEFT JOIN #__testcomponent_event as b
      ON a.eventid = b.id
      where locate('$dayweek', a.giorno) > 0";
                                               
 $db->setQuery($query);
 $results = $db->loadObjectList();

aggiusta sta query che se ti vede il team di sviluppo di J! ti ammazza (come minimo)!
Codice: [Seleziona]
$query->select( <campi da selezionare> );
$query->from( <da quale tabella> );
$query->join ( <con quale tabella è in relazione> );
$query->where( <che soddisfa quali vincoli> );
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #7 il: 15 Feb 2013, 18:59:50 »
Ora, diciamo che sulla pagina metto una table che ha come
headers i giorni della settimana, come faccio a fare in modo
che al click sul giorno corrispondente mi visualizzi gli eventi relativi ?

per table intendi tabella giusto? (le table sono un'altra cosa se parli di J!)

ad ogni giorno, nella vista che ti mostra i dati in forma tabellare, metti un link ad un'altra view del tipo

?option=<com_tuocomponente>&view=<vista di dettaglio>&id=<id del giorno che vuoi mostrare>

inutile che ti dica che - come ogni vista che si rispetti - deve avere il suo model ed il suo controller associato ;)

EDIT
-------

puoi sempre prendere spunto dal componente iCagenda  ;)
http://extensions.joomla.org/extensions/calendars-a-events/events/events-management/22013
« Ultima modifica: 15 Feb 2013, 19:01:49 da skyline81 »
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #8 il: 15 Feb 2013, 22:11:54 »
aggiusta sta query che se ti vede il team di sviluppo di J! ti ammazza (come minimo)!
Codice: [Seleziona]
$query->select( <campi da selezionare> );
$query->from( <da quale tabella> );
$query->join ( <con quale tabella è in relazione> );
$query->where( <che soddisfa quali vincoli> );


Ok, fatto come suggerito da te ma non mi funziona più come prima:
Codice: [Seleziona]

$query
->select('a.id', 'a.eventid', 'a.start', 'a.end', 'b.*')
->from('#__testcomponent_prg as a')
->join('LEFT', '#__testcomponent_event as b ON (a.eventid = b.id)')
->where('locate($dayweek, a.giorno= > 0') ;
$db->setQuery($query);
$tresults = $db->loadObjectList();


Facendo in questo modo, non mi trovo più nulla in 'loadObjectList'


Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #9 il: 15 Feb 2013, 22:17:34 »
http://docs.joomla.org/JDatabaseQuery::select/11.1

non credo che come hai fatto tu la select piaccia a J!

il parametro della select - come riportato dalla documentazione - deve essere

A string or an array of field names.

quindi o fai un

$query->select( array( 'a.id', 'a.eventid', ... ) );

oppure

$query->select( 'a.id as id, a.eventid, a.start, a.end, b.*');

sinceramente non avevo mai fatto come nel tuo codice... potrebbe essere quello che non gli piace.
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #10 il: 15 Feb 2013, 22:19:48 »
http://docs.joomla.org/JDatabaseQuery::select/11.1

non credo che come hai fatto tu la select piaccia a J!

il parametro della select - come riportato dalla documentazione - deve essere

A string or an array of field names.

quindi o fai un

$query->select( array( 'a.id', 'a.eventid', ... ) );

oppure

$query->select( 'a.id as id, a.eventid, a.start, a.end, b.*');

sinceramente non avevo mai fatto come nel tuo codice... potrebbe essere quello che non gli piace.


Per la select l'ho letto un secondo dopo aver postato ed in effetti mi è bastato
passare l'array.


Non funziona comunque perchè non riesce ad 'interpretare' la funzione 'LOCATE' di mysql

mau_develop

  • Visitatore
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #11 il: 15 Feb 2013, 22:25:00 »
->where('locate($dayweek, a.giorno= > 0') ;
-----------------------------------------------------------------
... e manca una parentesi, ... e c'è uno spazio tra = e >, ... e se è una funzione perchè è quotata...

spero anche che davanti ad ogni -> ci sia il $query...

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #12 il: 15 Feb 2013, 22:28:30 »
Non funziona comunque perchè non riesce ad 'interpretare' la funzione 'LOCATE' di mysql

http://docs.joomla.org/JDatabase::nameQuote/11.1

questo metodo dovrebbe aiutarti a bypassare l'errata interpretazione della funzione  ;)
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #13 il: 15 Feb 2013, 22:34:37 »
->where('locate($dayweek, a.giorno= > 0') ;
-----------------------------------------------------------------
... e manca una parentesi, ... e c'è uno spazio tra = e >, ... e se è una funzione perchè è quotata...

spero anche che davanti ad ogni -> ci sia il $query...


O_o


mmm.. questo si che è strano...


ho fatto copia incolla del codice e nel codice non c'è nessun "="
scrivendo direttamente:


Codice: [Seleziona]
//
->where('locate($dayweek, a.giorno, 3) > 0');


con questo non funziona.
Se invece scrivo:


Codice: [Seleziona]
->where('locate("venerdi", a.giorno, 3) > 0');


funziona...


Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #14 il: 16 Feb 2013, 16:28:08 »
vi chiedo ancora una cosa:


ma se facessi una cosa del genere:
Codice: [Seleziona]

<td id="lunedi">Lunedi</td>
<td id="martedi">Martedi</td>
<td id="mercoledi">Mercoledi</td>
<td id="giovedi">Giovedi</td>
<td id="venerdi">Venerdi</td>
<td id="sabato">Sabato</td>
<td id="domenica">Domenica</td>


1) Avrei modo di associare un evento "click" a ciascuno di questi <td> ?
2) Potrei passare l'id del <td> alla query ?


Codice: [Seleziona]

$db = JFactory::getDbo();
$query = $db->getQuery(true);               
$query->select(array('a.id', 'a.eventid', 'a.start', 'a.end', 'b.*'));
$query->from('#__testcomponent_prg as a');
$query->join('LEFT', '#__testcomponent_event as b ON (a.eventid = b.id)');
$query->where('LOCATE([b]miotdID[/b], a.giorno, 3) > 0');
$db->setQuery($query);
$tresults = $db->loadObjectList();




??

mau_develop

  • Visitatore
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #15 il: 16 Feb 2013, 18:12:28 »
$dayweek da dove viene? se fai print_r($dayweek); cosa stampa?

... ma poi mi spieghi cosa ti serve trovare la prima occorrenza di qualcosa in una query?
« Ultima modifica: 16 Feb 2013, 18:14:37 da M_W_C »

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #16 il: 16 Feb 2013, 18:56:36 »
Codice: [Seleziona]
//
->where('locate($dayweek, a.giorno, 3) > 0');
con questo non funziona.

Se invece scrivo:
Codice: [Seleziona]
->where('locate("venerdi", a.giorno, 3) > 0');
funziona...

ma $dayweek non è una variabile dichiarata in php???
mysql mica capisce il php...

->where('locate(' . $dayweek. ', a.giorno, 3) > 0');
potrebbe essere una soluzione ad esempio (ma molto a rischio SQL injection)
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #17 il: 16 Feb 2013, 19:19:33 »
vi chiedo ancora una cosa:

Raoul posso permettermi di darti un consiglio?

credo che la progettazione che stai facendo vada un pochino rivista... soprattutto nella logica.
I problemi legati al codice si superano in poco o nulla... quelli legati alla logica potrebbero non essere mai risolti (a meno di stranezze varie).

Citazione
1) Avrei modo di associare un evento "click" a ciascuno di questi <td> ?
2) Potrei passare l'id del <td> alla query ?

Codice: [Seleziona]
<td id="lunedi"><a href="?id=lunedi">Lunedi</a></td>

PS. sempre con il tuo permesso vorrei ricordarti che per Joomla "Lunedì" è solo la traduzione di una variabile... potresti renderti conto che è più facile giocare con i numeri piuttosto che con le stringhe e che per come stai programmando il tuo codice non potrà essere localizzato ed utilizzato in altri paesi...
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #18 il: 16 Feb 2013, 20:08:48 »
Non preoccupatevi di andarci giù duro !! Anzi .. per qualsiasi possa servire a farmi crescere in questo percorso ve ne sarò sempre grato. Sono veramente agli inizi ..


Per rispondere alle vostre domande:


$dayweek: è una variabile che mi restituisce il giorno corrente mediante una funzione.


In sostanza, ciò che vorrei fare in questa pagina è:


1) all'apertura della pagina, mostrare gli eventi presenti nella giornata (il mio $dayweek)


2) Se l'utente sceglie il giorno, mostrargli gli eventi presenti in quel giorno della settimana.




Per quanto riguarda invece il senso di trovare la prima occorenza all'interno di una stringa:


sul db (ma non è che ne sono costretto, è voluto solo a scopo didattico) la stringa può essere:


["lunedi", "martedi",etc..]


o anche
["gennaio", "febbraio", etc...]




Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:[joomla 2.5]problemi nel ricavare l'id da una query
« Risposta #19 il: 16 Feb 2013, 20:20:55 »
In sostanza, ciò che vorrei fare in questa pagina è:
1) all'apertura della pagina, mostrare gli eventi presenti nella giornata (il mio $dayweek)
2) Se l'utente sceglie il giorno, mostrargli gli eventi presenti in quel giorno della settimana.

con queste due righe mi hai fatto capire che quello che stavi facendo va in tutt'altra direzione...  ;D

ti faccio un esempio:

sab 09/02/13 : caffè con Raoul a Pincopallino
sab 23/02/13 : caffè con Mau a Milano
sab xx/yy/15  : eccheneso!

se oggi (sab 16/02/13) vado sulla pagina del componente mi restituirebbe tutti gli eventi che si fanno sabato... non solo quelli di oggi perchè tutti matchano con il "sab" ma anche quelli futuri e passati!

fai una cosa... scarica iCagenda: smontalo, analizzalo, documentati anche tramite l'utente Giusebos che è in stretto contatto con lo sviluppatore se hai dubbi e dopo prova a ricostruirlo tu!

happy coding!  ;)
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

 



Web Design Bolzano Kreatif