Back to top

Autore Topic: ChronoConnectivity e Eventlist. Ricerche plus.  (Letto 13229 volte)

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
ChronoConnectivity e Eventlist. Ricerche plus.
« il: 19 Gen 2010, 16:11:53 »
Si tratta di uno sviluppo un po' più complesso e maturo delle precedenti esperienze con Chronoconnectivity. Sono state necessarie alcune modifiche alla versione originale per ottenere maggiori prestazioni.

I risultati sono tre nuove ricerche negli eventi di Eventlist che mancavano fra quelle disponibili di serie e da terze parti.

Un grazie a tutti quelli che hanno contribuito a questo lavoro.

Link: http://www.joomla.it/articoli-della-community/4002-chronoconnectivity-e-eventlist-ricerche-plus.html
« Ultima modifica: 19 Gen 2010, 16:51:05 da alexred »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline nun84

  • Esploratore
  • **
  • Post: 61
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #1 il: 19 Gen 2010, 22:37:42 »
Grazie ancora Vales per una tua nuova guida che certamente risulterà utile a molti utenti. E grazie perchè sono certo che non mancherai come hai dimostrato fino ad ora di aiutare chi ha bisogno su alcuni punti poco chiari. A presto.

Offline joored

  • Esploratore
  • **
  • Post: 129
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #2 il: 20 Gen 2010, 00:44:15 »
Vales, sei un miracolo della natura. Quello che hai creato è uno strumento straordinario che mancava ad eventlist. Straordinario anche per la velocità con cui l'hai creato e per la complessità dell'impresa.

Addirittura hai modificato un componente (ChronoConnectivity) per piegarlo alle specifiche esigenze del progetto. Tenace oltre che bravo!

Ma la cosa più ammirevole in te è la tua capacità "didattica": riesci a rendere semplici e lineari anche i procedimenti più astrusi e questa è una merce rara.

Non ti dico questo per plagerìa, non c'è n'è necessità, visto che tra l'altro incarni al meglio lo spirito dell'open source e gentilmente hai voluto mettere a disposizione di tutti il tuo lavoro. Grazie ancora!

Dopo il dolce l'amaro :)
Ho caricato ChronoConnectivity2 e tutto pare funzionare bene. Il codice da te fornito funziona tranne che per la ricerca sulle date.
1) non effettua la ricerca per data inizio (dates) e per data fine (endates);
2) Nella colonna data mostra la data inizio ma anche la data fine: 01-01-1970 (anche se quest'ultima non è stata inserita). Esempio: per un evento che si svolge il 20-01-2010 la colonna data mostra 20-01-2010
01-01-1970.
3) Ti faccio rilevare infine la difficoltà per l'utente di inserire la data nel formato inglese aaaa-mm-gg.

Fai l'ultimo sforzo e se decidi di creare un modulo di ricerca per eventlist autonomo da ChronoConnectivity2 e metterlo in commercio mi prenoto come primo acquirente.

Grazie, ciao.
« Ultima modifica: 20 Gen 2010, 00:49:26 da joored »
Inseguo chi fugge e fuggo chi mi insegue. I paradossi della vita.

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #3 il: 20 Gen 2010, 18:49:35 »
Ciao joored,

grazie per le tue valutazioni, ma lasciamo stare i miracoli magari riuscissi a farli davvero  ;D

Ho esaminato le problematiche che hai esposto, ma non sono riuscito a riprodurre l'errore nella ricerca della data. Ne sul sito di prova ne su quello reale in firma dove sta funzionando la cosa.

Mi è venuto il dubbio che forse la prova che hai eseguito è stata fatta su tabelle di Eventlist senza data di fine evento e questo credo possa creare dei problemi. Nelle mie tabelle la fine evento è sempre dichiarata. Ora farò alcune verifiche.

Per la data forse si può fare qualcosa se funziona lo posto.

Al modulo ci sto pensando, ma richiede uno studio di MVC che per ora non ho completato, rimane quindi un progetto, che, se sara, sarà sempre open source.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #4 il: 20 Gen 2010, 19:09:55 »
Ho verificato il problema accade quando la data di fine evento non è stata registrata in tabella. La soluzione è questa

Sostituire queste righe della sezione Body
Codice: [Seleziona]
<td width="15%">
<div class="date"><?php echo date("d-m-Y",strtotime($MyRow->dates));?>  <?php echo date("d-m-Y",strtotime($MyRow->enddates));?></div>
</td>

con queste
Codice: [Seleziona]
<td width="15%">
<div class="date"><?php echo date("d-m-Y",strtotime($MyRow->dates));?> 
<?php 
if ($MyRow->enddates <> "0000-00-00") {
echo 
date("d-m-Y",strtotime($MyRow->enddates));
} else {
echo 
"";
}
?>

</div>
</td>


Anche Eventlist ho visto ha lo stesso problema. Siamo andati un po' più avanti.  :D
« Ultima modifica: 20 Gen 2010, 19:25:03 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline green12

  • Esploratore
  • **
  • Post: 151
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #5 il: 20 Gen 2010, 19:43:04 »
Bravo!
Utilizzerò il tuo lavoro per un sito che sto preparando utilizzando event list...
quello di cui avevo davvero bisogno era la possibilità di effettuare la ricerca degli eventi per Città, Grazie.
Forse sarò fuori tema, ma secondo te sarebbe possibile ricercare anche nagli aricoli vecchi (archivio)? Non trovo neanche il modo di mostrare la pagina dell'archivio di event list agli utenti :(

Offline joored

  • Esploratore
  • **
  • Post: 129
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #6 il: 20 Gen 2010, 22:50:03 »
Vales,
ho sostituito il codice di cui sopra ma non ha funzionato.
L'ho modificato così:
Codice: [Seleziona]
<td width="15%">
<div class="date"><?php echo date("d-m-Y",strtotime($MyRow->dates));?>
<?php 
if ($MyRow->enddates <> "") {
echo 
date("d-m-Y",strtotime($MyRow->enddates));
} else {
echo 
"";
}
?>

</div>
</td>

ed ha funzionato. Al posto della riga:
Codice: [Seleziona]
if ($MyRow->enddates <> "0000-00-00") {
ho inserito la riga:
Codice: [Seleziona]
if ($MyRow->enddates <> "") {
Così non mi compare più la data fine evento (1970-01-01).

Comunque il problema della ricerca permane. La ricerca per data va a vuoto.

Per quanto mi pare di capire se si tralascia di indicare la "data di fine evento" il campo assume un valore NULL (=valore assente).

A te la ricerca per data funziona perché per ogni evento inserisci sempre la data inizio e la data fine (A PROPOSITO: Non capisco perché tu la inserisca se l'evento si risolve nella stessa giornata!).

Ma se non inserisci la data fine il campo assume un valore NULL e forse per questo la query va in tilt (?)

Codice: [Seleziona]
// se inserite data inizio e data fine
      if (JRequest::getVar('dates', '' , 'post')<>'' and
          JRequest::getVar('enddates', '' , 'post')<>'') {
 
      $cerca[] = "(((`dates` >= '".JRequest::getVar('dates', '' , 'post')."')  AND
(`dates` <= '".JRequest::getVar('enddates', '' , 'post')."') ) OR
"."((`enddates` >= '".JRequest::getVar('dates', '' , 'post')."')  AND
(`enddates` <= '".JRequest::getVar('enddates', '' , 'post')."' )) OR "
."((`dates` >= '".JRequest::getVar('dates', '' , 'post')."')  AND
(`enddates` <= '".JRequest::getVar('enddates', '' , 'post')."' )) OR "
."((`dates` <= '".JRequest::getVar('dates', '' , 'post')."')  AND
(`enddates` >= '".JRequest::getVar('enddates', '' , 'post')."' ))) ";
      }     
 
// se inserita solo data inizio
      if (JRequest::getVar('dates', '' , 'post')<>'' and
      JRequest::getVar('enddates', '' , 'post')=='') {
      $cerca[] = "(`dates` <= '".JRequest::getVar('dates', '' , 'post')."'  AND
 `enddates` >= '".JRequest::getVar('dates', '' , 'post')."' )";
      }

Boh! Forse sbaglio io qualcosa. Non ho idea
« Ultima modifica: 20 Gen 2010, 23:35:35 da joored »
Inseguo chi fugge e fuggo chi mi insegue. I paradossi della vita.

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #7 il: 21 Gen 2010, 00:58:00 »
Il problema è nella query.
Quella che ho costruito io è fatta pensando ad una tabella in cui sono presenti entrambe le date, perche la mia tabella di riferimento e prova era quella e non si presentava il nuovo caso.
Va costruita una query che consideri anche enddates  = Null.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline joored

  • Esploratore
  • **
  • Post: 129
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #8 il: 21 Gen 2010, 01:01:06 »
Proprio così Vales, quasi tutti gli utenti di evenlist inseriscono solo la "data inizio" se l'evento si esaurisce nella stessa giornata.

Inseriscono invece "data inizio" e "data fine" se l'evento dura più giorni.

L'archivio su cui hai testato il codice ho notato che contiene solo eventi con entrambe le date (inizio e fine) per cui la query da te creata non dà problemi.

Ma in presenza di eventi senza data fine la query va in tilt.

Dopo vari tentativi sono giunto a questa soluzione:

Se inserisco solo la "data inizio"
la query mi deve estrarre solo gli eventi la cui data inizio è = alla data da me cercata

Codice: [Seleziona]
      $cerca[] = "(`dates` = '".JRequest::getVar('dates', '' , 'post')."'  AND
 `enddates` = '".JRequest::getVar('enddates', '' , 'post')."' )";
      }


Se invece inserisco la "data inizio" e la "data fine"
in questo caso di certo c'è la "data inizio" mentre la "data fine" può variare perciò la query mi deve estrarre:
- gli eventi la cui "data inizio" è = alla "data inizio" da me cercata e la "data fine" è = alla "data fine" da me cercate
oppure
- gli eventi la cui "data inizio" è = alla "data inizio" da me cercata e la "data fine" è <= alla "data fine" da me cercate

Codice: [Seleziona]
      $cerca[] = "(((`dates` = '".JRequest::getVar('dates', '' , 'post')."')  AND
(`enddates` = '".JRequest::getVar('enddates', '' , 'post')."') ) OR "
."((`dates` = '".JRequest::getVar('dates', '' , 'post')."')  AND
(`enddates` <= '".JRequest::getVar('enddates', '' , 'post')."' ))) ";
      }     


Pertanto ho sostituito una parte di codice da te postato con questo:

Codice: [Seleziona]
// se inserite data inizio e data fine
      if (JRequest::getVar('dates', '' , 'post')<>'' and
          JRequest::getVar('enddates', '' , 'post')<>'') {
 
      $cerca[] = "(((`dates` = '".JRequest::getVar('dates', '' , 'post')."')  AND
(`enddates` = '".JRequest::getVar('enddates', '' , 'post')."') ) OR "
."((`dates` = '".JRequest::getVar('dates', '' , 'post')."')  AND
(`enddates` <= '".JRequest::getVar('enddates', '' , 'post')."' ))) ";
      }
 
// se inserite solo data inizio
      if (JRequest::getVar('dates', '' , 'post')<>'' and
      JRequest::getVar('enddates', '' , 'post')=='') {
      $cerca[] = "(`dates` = '".JRequest::getVar('dates', '' , 'post')."' )";
      }


Ho fatto diverse prove di ricerca anche incrociate con altri campi (categoria, città, ecc.) e ora pare funzionare bene.
« Ultima modifica: 21 Gen 2010, 01:52:28 da joored »
Inseguo chi fugge e fuggo chi mi insegue. I paradossi della vita.

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #9 il: 21 Gen 2010, 15:14:25 »
Ho fatto alcune prove e corretto questo come hai proposto

Codice: [Seleziona]
if ($MyRow->enddates <> "") {
e la cosa è giusta e funziona. Ma funziona anche la query originaria.
Nella demo ho inserito 3 eventi senza data di fine al 23, 24 e 26 gennaio 2010. Ed io li vedo stampati senza errori.

La situazione della ricerca è questa, la tua non mi convince, perchè sono 4 le situazioni che verficano positivamente la ricerca, quindi 4 OR.

Supponiamo le date di ricerca siano A e B e I ed F le date nelle tabelle di database. Abbiamo queste 4 situazioni che verificano la ricerca.

                            A                        B
                                            I --------------------F
         I---------------------F
                                    I        F
             I------------------------------------------F

le prime due un valore in tabella dentro l'intervallo e uno fuori
la terza entrambi i valori in tabella nell'intervallo
la quarta entrambi i valori fuori dall'intervallo

La nuova situazione senza data di fine I nell'intervallo e F=null

diventa un  caso particolare del terzo caso in cui B >= F

Per questo motivo penso che a me non ha dato errori la query originaria.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline joored

  • Esploratore
  • **
  • Post: 129
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #10 il: 21 Gen 2010, 18:27:24 »
Hai ragione tu Vales, ho rifatto un controllo sulla query modificata da me ed effettivamente è semplicistica ed esclude molti eventi dai risultati.

Ho quindi ricaricato il tuo codice ed ho verificato che:

Usando entrambi i campi Dal Al - funziona

Usando solo il campo Dal - a me continua a non funzionare.

Tu dici:

Citazione
Nella demo ho inserito 3 eventi senza data di fine al 23, 24 e 26 gennaio 2010. Ed io li vedo stampati senza errori.

Ho fatto anch'io la verifica sulla Demo inserendo la data 2010-01-23 ed ho ottenuto 3 risultati

02-12-2009 01-02-2010 MOSTRA SULLE GUIDE DELLA CITTA' DI PISTOIA

04-12-2009 31-01-2010 MOSTRA ARTE/NATURA NATURA/ARTE

23-01-2010 23-01-2010    VI TROFEO CAPECCHI BONOMINI

come vedi omette di riportare un quarto evento

23-01-2010 Prova senza data fine 1.

La stessa cosa accade se inserisco le altre due date 24 e 26.

La query in questo caso è:

Codice: [Seleziona]
// se inserita solo data inizio
      if (JRequest::getVar('dates', '' , 'post')<>'' and
      JRequest::getVar('enddates', '' , 'post')=='') {
      $cerca[] = "(`dates` <= '".JRequest::getVar('dates', '' , 'post')."'  AND
 `enddates` >= '".JRequest::getVar('dates', '' , 'post')."' )";
      }


Ma perché scrivi

Codice: [Seleziona]
$cerca[] = "(`dates` <= '".JRequest::getVar('dates', '' , 'post')."'  AND

non si dovrebbe scrivere (maggiore o uguale ?)

Codice: [Seleziona]
$cerca[] = "(`dates` >= '".JRequest::getVar('dates', '' , 'post')."'  AND

e comunque anche così non va  :(
« Ultima modifica: 21 Gen 2010, 18:53:21 da joored »
Inseguo chi fugge e fuggo chi mi insegue. I paradossi della vita.

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #11 il: 21 Gen 2010, 19:54:19 »
Con sola data di inizio. Non l'avevo riprovata.
Questa dovrebbe essere la volta bona.

Codice: [Seleziona]
      if (JRequest::getVar('dates', '' , 'post')<>'' and
      JRequest::getVar('enddates', '' , 'post')=='') {
      $cerca[] = "((`dates` <= '".JRequest::getVar('dates', '' , 'post')."'  AND
 `enddates` >= '".JRequest::getVar('dates', '' , 'post')."' ) OR (`dates` = '".JRequest::getVar('dates', '' , 'post')."'  AND `enddates` IS NULL ))";
      }


Ma perché scrivi

Codice: [Seleziona]
$cerca[] = "(`dates` <= '".JRequest::getVar('dates', '' , 'post')."'  AND

Scrivo così perchè la data che inseriamo per la ricerca è JRequest::getVar('dates', '' , 'post') e deve essere nell'intervallo delle date in tabella che sono dates e enddates.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #12 il: 23 Gen 2010, 17:54:36 »
Riepilogo degli aggiornamenti apportati ai codici delle ricerche.

Ricerca tutti gli eventi. Ricerca con data europea e aggiornamento query per eventi con seconda data vuota.

Nuovo codice per Sezione WHERE SQL

Codice: [Seleziona]
<?php
    $session 
=& JFactory::getSession('ricerca');

// questa if serve per verificare se entriamo nella ricerca per la prima volta
// da una voce di menu ed in questo caso vengono azzerate le sessioni aperte in
// cui sono memorizzati i valori delle precedenti ricerche
// per funzionare devono essere abilitati in configurazione generale di Joomla SEO
// le opzioni per friendly URL e suffisso htm 

    
if ($_SERVER['QUERY_STRING']=="") {
    
$session->clear('cerca','ricerca');
    
$session->clear('memo','ricerca');
    }

    
$search_array = array('title','datdescription');
    global 
$mem;
    
$cerca = array();
    foreach ( 
$search_array as $search ) {
      
$value JRequest::getVar($search'' 'post');
      
$value ereg_replace("'","\'",$value);
      if ( 
$value ) {
        
        
$cerca[] = " `$search` LIKE '%$value%' ";
        
      }
    }

// nuove modalità di ricerca 

      
if (JRequest::getVar('loc''' 'post')<>'') {
      
$cerca[] = " b.city like '%".JRequest::getVar('loc''' 'post')."%' ";
      }
      if (
JRequest::getVar('catsid''' 'post')<>'') {
      
$cerca[] = " `catsid` = '".JRequest::getVar('catsid''' 'post')."' ";
      }

// inversione delle variabili data da dd-mm-aaaa a aaaa-mm-gg per compatibilità MySQL

$inizio="";
$fine="";

if (
JRequest::getVar('dates''' 'post') <> '' ) {
$inizio substr(JRequest::getVar('dates''' 'post'),6,4)
.
"-".substr(JRequest::getVar('dates''' 'post'),3,2)
.
"-".substr(JRequest::getVar('dates''' 'post'),0,2);
} else {
$inizio="";
}

if (
JRequest::getVar('enddates''' 'post') <> '' ) {
$fine substr(JRequest::getVar('enddates''' 'post'),,4).
"-".substr(JRequest::getVar('enddates''' 'post'),,2).
"-".substr(JRequest::getVar('enddates''' 'post'),,2);
} else {
$fine="";
}
  
if (
JRequest::getVar('dates','','post') <> "" && JRequest::getVar('enddates','','post')<>"") {
      
$cerca[] = "(((`dates` >= '".$inizio."')  AND 
(`dates` <= '"
.$fine."') ) OR 
"
."((`enddates` >= '".$inizio."')  AND 
(`enddates` <= '"
.$fine."' )) OR "
."((`dates` >= '".$inizio."')  AND 
(`enddates` <= '"
.$fine."' )) OR "
."((`dates` <= '".$inizio."')  AND 
(`enddates` >= '"
.$fine."' ))) ";

}

if (
JRequest::getVar('dates','','post') <> "" && JRequest::getVar('enddates','','post')=="") {
      
$cerca[] = "((`dates` <= '".$inizio."'  AND `enddates` >= '".$inizio."' )
 OR (`dates` = '"
.$inizio."' AND `enddates` IS NULL ))";
}


      
//costruzione parte fissa della query per ricerca su più tabelle
   
$fissainiziale " `jos_eventlist_venues` as b, `jos_eventlist_categories` as
 c, `jos_eventlist_events`  WHERE jos_eventlist_events.published = 1 and 
c.id = catsid and locid = b.id "
;
$fissa $fissainiziale." AND ";


// questo potenziamento consente di legare alla ricerca nuove tabelle oltre a
// quella definita nella connessione in TableName. E' possibile, dopo aver 
// previsto nuovi campi di inserimento e definite le modalità di ricerca come 
// sopra, attivare anche ricerche su nuovi campi delle tabelle aggiuntive con ad
// esempio: b.country = qualcosa.
     
    
     
if (empty($cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
     
$session->set('cerca',0,'ricerca');
     
JRequest::setVar('limitstart',0,'Get');
     
$mem=0;
     }

    if ( !empty(
$cerca) ){
            echo 
$fissa.implode(' AND '$cerca);
            
$mem=1;
            
$session->set('cerca',$cerca,'ricerca');          
    }

    elseif ((
JRequest::getVar('submit','no','POST')<>"Trova")
 and  (
$session->get('cerca',0,'ricerca')<>0)) {
    
$cerca=$session->get('cerca',0,'ricerca');
    
    echo 
$fissa.implode(' AND '$cerca);
    }
    else
    {
    echo 
$fissainiziale;
    }
?>

 Tutte le ricerche Sezione BODY aggiornamento per mostrare i risultati con data europea.

Codice: [Seleziona]
<?php
$db 
=& JFactory::getDBO();

$query "

SELECT c.venue, c.city, s.catname
  FROM #__eventlist_venues as c, #__eventlist_categories as s 
WHERE c.id = 
$MyRow->locid AND s.id = $MyRow->catsid
  
"
;
$db->setQuery($query);
$nomes $db->loadRow();
if (!isset(
$bc)) : $bc=0; endif;
$bc+=1;
?>



<tr style="background-color:
<?php if ($bc==0) {
echo 
"#FFFFFF;\"";
} else {
echo 
"#BFCFFF;\"";
$bc=-1;
}
?>

>
<td width="15%">
<div class="date"><?php echo date("d-m-Y",strtotime($MyRow->dates));?> 
<?php 
if ($MyRow->enddates <> "") {
echo 
date("d-m-Y",strtotime($MyRow->enddates));
} else {
echo 
"";
}
?>

</div>
</td>

<td width="30%"><a href="index.php?view=details&id={id}%3A{alias}&option=com_eventlist&Itemid=74" >{title}[/url]</td>
<td  width="20%"><?php echo "".$nomes[0].""?>[br /]{datdescription}</td>
<td width="20%"><?php echo "".$nomes[1].""?></td>
                                        <td width="15%"><?php echo "".$nomes[2].""?></td>

</tr>

Ricerca Eventi del Mese. Sezione WHERE SQL Modifiche al codice per maggiore efficienza.

Codice: [Seleziona]
<?php
    $session 
=& JFactory::getSession('mese');

    if (
$_SERVER['QUERY_STRING']=="") {
    
$session->clear('cerca','mese');
    
$session->clear('memo','mese');
    }

    
$search_array = array('title','datdescription');
    global 
$mem;
    
$cerca = array();
    foreach ( 
$search_array as $search ) {
      
$value JRequest::getVar($search'' 'post');
      
$value ereg_replace("'","\'",$value);
      if ( 
$value ) {
        
        
$cerca[] = " `$search` LIKE '%$value%' ";
        
      }
    }

// nuove modalità di ricerca 
      
if (JRequest::getVar('locid''' 'post')<>'') {
      
$cerca[] = " b.city like '%".JRequest::getVar('locid''' 'post')."%' ";
      }
      if (
JRequest::getVar('catsid''' 'post')<>'') {
      
$cerca[] = " `catsid` = '".JRequest::getVar('catsid''' 'post')."' ";
      }

//costruzione parte fissa della query per ricerca su più tabelle
   
$fissainiziale " `jos_eventlist_venues` as b, `jos_eventlist_categories` as c,
 `jos_eventlist_events`  WHERE jos_eventlist_events.published = 1 and c.id =
 catsid and locid = b.id "
;
$fissa $fissainiziale." AND ";
//$fissafine = " ORDER BY 'dates' ";

// questo potenziamento consente di legare alla ricerca nuove tabelle oltre a
// quella definita nella connessione in TableName. E' possibile, dopo aver 
// previsto nuovi campi di inserimento e definite le modalità di ricerca come
// sopra, attivare anche ricerche su nuovi campi delle tabelle aggiuntive con
// ad esempio: b.country = qualcosa.

$anno=date("Y");
$mese=date("m");
$giorno=date("d");
$giornosett=date("w");
$ggdate("t"); // giorni del mese in corso

$primo=$anno."-".$mese."-"."01"// primo giorno del mese
$ultimo=$anno."-".$mese."-".$gg// ultimo giorno del mese


$tf "(((`dates` >= '".$primo."')  AND 
(`dates` <= '"
.$ultimo."') ) OR 
"
."((`enddates` >= '".$primo."')  AND 
(`enddates` <= '"
.$ultimo."' )) OR "
."((`dates` >= '".$primo."')  AND 
(`enddates` <= '"
.$ultimo."' )) OR "
."((`dates` <= '".$primo."')  AND 
(`enddates` >= '"
.$ultimo."' ))) ";
    
    
     if (empty(
$cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
     
$session->set('cerca','0','mese');
     
JRequest::setVar('limitstart',0,'Get');
     
$mem=0;
     }

    if ( !empty(
$cerca) ){
            echo 
$fissa.$tf." AND ".implode(' AND '$cerca);
            
$mem=1;
            
$session->set('cerca',$cerca,'mese');          
    }

    elseif ((
JRequest::getVar('submit','no','POST')<>"Trova") and  ($session->get('cerca',0,'mese')<>0)) {
    
$cerca=$session->get('cerca',0,'mese');
    echo 
$fissa.$tf." AND ".implode(' AND '$cerca);
    }
    else
    {
    echo 
$fissa.$tf;
    }
?>

Ricerca Eventi della Settimana. Sezione WHERE SQL Modifiche al codice per maggiore efficienza.

Codice: [Seleziona]
<?php
    $session 
=& JFactory::getSession('sett');

    if (
$_SERVER['QUERY_STRING']=="") {
    
$session->clear('cerca','sett');
    
$session->clear('memo','sett');
    }

    
$search_array = array('title','datdescription');
    global 
$mem;
    
$cerca = array();
    foreach ( 
$search_array as $search ) {
      
$value JRequest::getVar($search'' 'post');
      
$value ereg_replace("'","\'",$value);
      if ( 
$value ) {
        
        
$cerca[] = " `$search` LIKE '%$value%' ";
        
      }
    }

// nuove modalità di ricerca 
      
if (JRequest::getVar('locid''' 'post')<>'') {
      
$cerca[] = " b.city like '%".JRequest::getVar('locid''' 'post')."%' ";
      }
      if (
JRequest::getVar('catsid''' 'post')<>'') {
      
$cerca[] = " `catsid` = '".JRequest::getVar('catsid''' 'post')."' ";
      }

//costruzione parte fissa della query per ricerca su più tabelle
   
$fissainiziale " `jos_eventlist_venues` as b, `jos_eventlist_categories` as c,
 `jos_eventlist_events`  WHERE 
jos_eventlist_events.published = 1 and c.id = catsid and locid = b.id "
;
$fissa $fissainiziale." AND ";
//$fissafine = " ORDER BY 'dates' ";

// questo potenziamento consente di legare alla ricerca nuove tabelle oltre a 
//quella definita nella connessione in TableName. E' possibile, dopo aver previsto 
//nuovi campi di inserimento e definite le modalità di ricerca come sopra, attivare 
//anche ricerche su nuovi campi delle tabelle aggiuntive con ad 
//esempio: b.country = qualcosa.

$monday=date("Y-m-d",time()-date("w")*86400+86400); //lunedì della settimana
$sunday=date("Y-m-d",time()-date("w")*86400+7*86400);// domenica della settimana

$tf "(((`dates` >= '".$monday."')  AND 
(`dates` <= '"
.$sunday."') ) OR 
"
."((`enddates` >= '".$monday."')  AND 
(`enddates` <= '"
.$sunday."' )) OR "
."((`dates` >= '".$monday."')  AND 
(`enddates` <= '"
.$sunday."' )) OR "
."((`dates` <= '".$monday."')  AND 
(`enddates` >= '"
.$sunday."' ))) ";
     
    
     if (empty(
$cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
     
$session->set('cerca','0','sett');
     
JRequest::setVar('limitstart',0,'Get');
     
$mem=0;
     }

    if ( !empty(
$cerca) ){
            echo 
$fissa.$tf." AND ".implode(' AND '$cerca);
            
$mem=1;
            
$session->set('cerca',$cerca,'sett');          
    }

    elseif ((
JRequest::getVar('submit','no','POST')<>"Trova") and  ($session->get('cerca',0,'sett')<>0)) {
    
$cerca=$session->get('cerca',0,'sett');
    echo 
$fissa.$tf." AND ".implode(' AND '$cerca);
    }
    else
    {
    echo 
$fissa.$tf;
    }
?>

Nella sezione Header per l'inserimento della data eurpoea dovranno essere modificate le due mascherine in corrispondenza dei campi input delle date, il resto del codice rimane immutato

da aaaa-mm-gg a gg-mm-aaaa

Queste modifiche tengono conto delle osservazioni e suggerimenti emersi fino ad ora nella discussione qui nel forum.

Grazie a tutti.
« Ultima modifica: 23 Gen 2010, 18:04:08 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline joored

  • Esploratore
  • **
  • Post: 129
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #13 il: 23 Gen 2010, 19:52:58 »
Perfetto vales, grazie, funziona molto bene.

Volevo chiederti un consiglio:

nella configurazione di eventlist
in "Gestisci eventi passati" ho impostato "Archivia eventi passati"
in "Numero di giorni" cosa consigli di mettere?

Lo chiedo soprattutto per gli eventi che si ripetono annualmente (ogni 12 mesi).
Inseguo chi fugge e fuggo chi mi insegue. I paradossi della vita.

Offline marchino79

  • Nuovo arrivato
  • *
  • Post: 5
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #14 il: 06 Gen 2011, 20:17:12 »
Buona sera a tutti, io sto provando la modifica. Ma mi sono arenato.
Tutto il codice php dove deve essere inserito? nella parte header e body di quale file?Lo so, è una domanda da verginella, ma sto colassando..

Se avete qulache link dove poter imparare bene a usare ChronoConnectivity mi fareste un gran favore...in giro c'è poco e tecnico...

Grazie e buon anno a tutti

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #15 il: 06 Gen 2011, 20:55:52 »
Benvenuto in Joomla marchino79,

credo dovresti dare una lettura alla guida linkata nel primo post.

I codici descritti non vanno in files ma in appositi campi disponibili nelle finestre di configurazione del componente Chronoconnectivity.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline marchino79

  • Nuovo arrivato
  • *
  • Post: 5
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #16 il: 07 Gen 2011, 18:34:15 »
 ;)Bene. Vales, sono diventato mezzo pazzo ma alla fine sono riuscito a fare il mio primo form per joomla.Grazie dei tuoi suggerimenti.

Vorrei fare notare:
1. Browse Internet: utilizzando Google Chrome appare una icona (di quelle che mostrano un'immagine mancante) sotto al campo "Dal (Data)". Che però scompare aprendo il sito con Firefox. Se avete qualche suggerimento per eliminare questo difetto estetico, ben venga...

2.Risultati RICERCA: quando appaiono i risultati della ricerca, nella colonna "Titolo" e "Descrizione" ho dei problemi. Mi appaiono i Tag invece delle parole. Come si vede dall'immagine allegata/caricata. A cosa è dovuto questo?


Grazie ancora
Marco

[allegato eliminato da un amministratore]
« Ultima modifica: 07 Gen 2011, 18:37:36 da marchino79 »

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #17 il: 07 Gen 2011, 18:47:35 »
Per il primo problema se invii un link al sito si può vedere da cosa dipende.

Per il secondo credo che non tu abbia rispettato qualche sintassi nello scrivere i tag anche quello si vede dal link al sito.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline marchino79

  • Nuovo arrivato
  • *
  • Post: 5
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #18 il: 08 Gen 2011, 13:32:25 »
www.emmecity.com --> "Cerca l'Evento"

La tabella di riferimento è:jos_eventlist_venues ?


Grazie e ciao
« Ultima modifica: 09 Gen 2011, 20:29:25 da marchino79 »

Offline marchino79

  • Nuovo arrivato
  • *
  • Post: 5
    • Mostra profilo
Re:ChronoConnectivity e Eventlist. Ricerche plus.
« Risposta #19 il: 10 Gen 2011, 19:12:04 »
Per il secondo, ho fatto un coppia in colla del codice sopra...non riesco a trovare errori di sintassi...
 :-[

 



Web Design Bolzano Kreatif