Back to top

Autore Topic: [RISOLTO] Interrogazione del database (con chronoform, edited)  (Letto 10635 volte)

Offline nocciola00

  • Esploratore
  • **
  • Post: 137
    • Mostra profilo
Ciao a tutti,dovrei aggiungere ad un sito il caricamento di dati relativi a una biblioteca e la relativa interrogazione.Per quanto riguarda il primo punto ho utilizzato chronoforms e la tabella è stata creata ma mi permette di visualizzare l'intera tabella mentre io vorrei fare una ricerca tramite alcuni campi come ad esempio genere, o autore oppure prezzo (ad esempio > oppure < di un determinato importo) e visualizzare solo i record che soddisfano la ricerca.Come posso fare?
« Ultima modifica: 04 Nov 2013, 11:16:09 da mmleoni »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Interrogazione del database
« Risposta #1 il: 30 Ott 2013, 16:10:37 »
ciao nocciola00,
di stavo dicendo di chiedere in altra sezione, ma vedo che hai già fatto senza esito...  :(

non ho capito se il problema è lo stesso e la versione joomla +cf sono le stesse, comunque mi pare che vi sia un po' documentazione in merito.

temo che il tutorial che vuoi tu sia 'multirecord loader', lo trovi su sito dell'estensione. dico temo, perché non è proprio per principianti.

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline nocciola00

  • Esploratore
  • **
  • Post: 137
    • Mostra profilo
Re:Interrogazione del database
« Risposta #2 il: 30 Ott 2013, 17:29:17 »
Grazie per la risposta mmleoni!
si, il problema è lo stesso, (forse ho fatto un altro esempio, ma la sostanza è quella), e ho raccolto un materiale sul multirecord loader. Il problema è che i tutorial e gli esempi raccolti in proposito, o si riferiscono a casi semplicissimi senza nessuna selezione o a casi complicatissimi  ... mi servirebbe qualcosa che calzasse un po' al mio caso, o che mi facesse capire come procedere nel mio caso.


Comunque grazie ancora!  :)


Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Interrogazione del database
« Risposta #3 il: 30 Ott 2013, 18:01:07 »
è un po' che non smanetto con cf, comunque, ridando una occhiata veloce, dovresti (mi pare)

1.
disegnare la form con i campi di ricerca (onload)

2.
popolare o meno i campi di ricerca tramite i dati del db

3.
mettere il loader multirecord nella risposta (onsubmit)

4.
selezionare la tabella in cui hai i dati in db loader -> basic->table
scrivere la clausola where in db loader -> advanced ->where

5.
scrivere il renderer dei risultati in 'on record found'.

essere più precisi richiederebbe conoscere esattamente che vuoi fare e che dati hai.
nel caso facciamo un po' di esperimenti.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline nocciola00

  • Esploratore
  • **
  • Post: 137
    • Mostra profilo
Re:Interrogazione del database
« Risposta #4 il: 30 Ott 2013, 18:44:39 »
Allora, riassumendo:
1 - 2 - fatto
3 -       fatto (penso ...)
4 - 5 - manca (qui sta il problema)


Sto facendo le prove in questo indirizzo: marches00.altervista.org/joomla


sulla destra trovi due pulsanti:
Invio curriculum (che apre il form di inserimento dati)
Consultazione curriculum (che visualizza l'elenco completo con un link in ogni cognome che riporta ai dati del singolo curriculum)


Ora il mio problema è questo: non visualizzare tutti i record ma solo quelli che rispondono ad un determinato parametro ad esempio visualizzare i curriculum di una determinata specializzazione, o maggiori di un dato voto (inseriti dall'utente).


p.s. non riesco a postare le immagini della tabella, se vuoi i dati di accesso al backend te li passo con mp  ;)

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Interrogazione del database
« Risposta #5 il: 30 Ott 2013, 19:56:43 »
vediamo se ho capito. hai tre form:

  • formcurriculum
    è l'inserimento del curiculum e non ci interessa
  • formcurriculum2
    visualizza i curricula inseriti ed è quella di interesse
  • formcurriculum3
    visualizza il singolo curriculum e non ci interessa

formcurriculum2 però non visualizza una form!
  • devi creare una form che contenga i campi di ricerca ed il pulsante submit. poi inserisci l'azione 'show html' nell'evento onLoad di questa form.
  • aggiungi l'azione 'DB Multi Record Loader' all'evento onSubmit
  • prosegui dal punto 4.
il problema è che non mi ricordo come sono passati i parametri, va beh, mi aiuterai tu che sei fresca di studi ;)
diciamo che creiamo una form con due text area
  • voto minimo (field name votoMinimo)
  • voto massimo (field name votoMassimo)
aggiungiamo il submit. accedendo alla form avremo i due campi di testo per effettuare la ricerca.
ora modifichiamo il loader che si trova in onSubmit (NON in on load) colleghiamolo alla tabella che hai creato per i dati e, ipotizzando che la tabella abbia un campo voto (intero not null), aggiungiamo il where
Codice: [Seleziona]
voto beteewen <?php echo $form->data['votoMinimo'];?> and <?php echo $form->data['votoMassimo'];?>
ora sposta il codice per visualizzare il record set che hai messo nello onLoad della form nell'evento 'on record found' del multi loader.


scusa l'approssimazione, ma io in questi casi preferivo, per le ricerche complesse, crearmi il componente, e quindi non lo ho usato spesso :(
vediamo a che punto siamo adesso...

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline nocciola00

  • Esploratore
  • **
  • Post: 137
    • Mostra profilo
Re:Interrogazione del database
« Risposta #6 il: 31 Ott 2013, 10:52:04 »
formcurriculum2 però non visualizza una form!

si, perchè seguendo la guida
http://www.joomla.it/articoli-community-16-e-17-tab/5327-guida-2-joomla-17-e-chronoforms-interagire-con-il-database.html

ho prima creato un form per visualizzare tutti i record (senza codice, e funzionava) e poi l'ho modificato inserendo il codice php suggerito, per visualizzare ugualmente tutti i record ma con l'ordinamento ed il link nel campo cognome.

diciamo che creiamo una form con due text area
  • voto minimo (field name votoMinimo)
  • voto massimo (field name votoMassimo)
aggiungiamo il submit. accedendo alla form avremo i due campi di testo per effettuare la ricerca.
ora modifichiamo il loader che si trova in onSubmit (NON in on load) colleghiamolo alla tabella che hai creato per i dati e, ipotizzando che la tabella abbia un campo voto (intero not null), aggiungiamo il where
Codice: [Seleziona]
voto beteewen <?php echo $form->data['votoMinimo'];?> and <?php echo $form->data['votoMassimo'];?>

fatto

ora sposta il codice per visualizzare il record set che hai messo nello onLoad della form nell'evento 'on record found' del multi loader.

Ecco, quest'ultima parte non l'ho capita: il codice di cui parli è quello in php che ho inserito in formcurriculum2, per visualizzare i record?
Potrebbe essere importante il fatto che in formcurriculum2, nella configurazione del multirecord loader (basic) ho scritto 'elenco' come Model ID?

Se piò servire il codice per la visualizzazione dei record è questo:

Codice: [Seleziona]
<h1>Visualizzazione curriculum studenti</h1>
<?php
// start ord
$img="";
if (
Jrequest::getVar('direction','','get')=="") {
$ord="asc";
}
if (
Jrequest::getVar('direction','','get')=="desc") {
$ord="asc";
$img="desc";
}
if (
Jrequest::getVar('direction','','get')=="asc") {
$ord="desc";
$img="asc";
}
// end ord
?>

 
<table style="width: 100%" id="db_multi_record_loader">
<thead>
<tr>
<th style="width: 10%" class="col1 cell"><a class="order_link direction_asc"
 href="index.php?option=com_chronoforms&chronoform=formcurriculum2&order=cf_id&direction=<?php echo $ord?>"
>Num <?php if (Jrequest::getVar('order','','get')=="cf_id"){
echo 
"<img src=\"media/system/images/sort_".$img.".png\" alt=\"\"  />"; } ?>
[/url]</th>
<th style="width: 25%" class="col1 cell"><a class="order_link direction_asc"
 href="index.php?option=com_chronoforms&chronoform=formcurriculum2&order=cogn_tab&direction=<?php echo $ord?>"
>Cognome <?php if (Jrequest::getVar('order','','get')=="cogn_tab"){
echo 
"<img src=\"media/system/images/sort_".$img.".png\" alt=\"\"  />"; } ?>
[/url]</th>
<th style="width: 25%" class="col1 cell"><a class="order_link direction_asc"
 href="index.php?option=com_chronoforms&chronoform=formcurriculum2&order=nome_tab&direction=<?php echo $ord?>
">Nome <?php if (Jrequest::getVar('order','','get')=="nome_tab")
{echo 
"<img src=\"media/system/images/sort_".$img.".png\" alt=\"\"  />"; } ?>
[/url]</th>
<th style="width: 25%" class="col1 cell"><a class="order_link direction_asc"
 href="index.php?option=com_chronoforms&chronoform=formcurriculum2&order=spec_tab&direction=<?php echo $ord?>
">Specializzazione <?php if (Jrequest::getVar('order','','get')=="spec_tab")
{echo 
"<img src=\"media/system/images/sort_".$img.".png\" alt=\"\"  />"; } ?>
[/url]</th>
<th style="width: 15%" class="col1 cell">
<a class="order_linkdirection_asc"
href="index.php?option=com_chronoforms&chronoform=formcurriculum2&order=voto_tab&direction=
<?php echo $ord?>">Voto
<?php if (Jrequest::getVar('order','','get')=="voto_tab"){
echo 
"<img src=\"media/system/images/sort_".$img.".png\" alt=\"\"  />"; } ?>
[/url]</th>
</tr>
</thead>
 
<?php
$bb
=$form->data['elenco'];
foreach (
$bb as $a) {
echo 
"<tr><td>".$a['cf_id']."</td><td><a class=\"order_link\" 
href=\"index.php?option=com_chronoforms&chronoform=formcurriculum3&rec="
.$a['cf_id']."\">".$a['cogn_tab']."[/url]
</td><td>"
.$a['nome_tab']."</td><td>".$a['spec_tab']."</td><td>".$a['voto_tab']."</td></tr>";
}
?>

</table>
<p></p>
 

Offline nocciola00

  • Esploratore
  • **
  • Post: 137
    • Mostra profilo
Re:Interrogazione del database
« Risposta #7 il: 31 Ott 2013, 11:01:34 »
Volevo precisare che non mi interessa tenere quel codice, anzi preferirei evitarlo!  :)

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Interrogazione del database
« Risposta #8 il: 31 Ott 2013, 11:54:18 »
la guida è ok come spunto ma mi pare che non sia conforme al caso specifico, a noi interessa fare una ricerca, non visualizzare tutto comunque, quindi che cercare va chiesto prima di effettuare la ricerca: ecco perché di ho detto di creare la form con i due campi.
partiamo con qualcosa di semplice, poi vedremo le cose complicate, ma se partiamo dal complicato non sapremo mai che cosa non va. vi è una regola in informatica KISS (sai che significa?)

mi sono installato CF e quindi ti do per funzionante il seguente:
  • onLoad
  • visualizziamo la form con i due campi di ricerca
    dici 'fatto' ma non la vedo sul sito indicato
  • effettuiamo il post dei parametri
    premiamo il pulsante  ;D
  • onSubmit
  • inserisci in multirecord loader
  • metti pure il model ad elenco
  • creiamo le condizioni di filtro
    ho notato che nella guida usano Jrequest e non le funzioni di CF
  • visualizziamo il record set
  • inserisci un 'custom code' in 'on record found'
    questo è il codice che avevi messo all'inizio. il 'model' è semplicemente il nome dato all'oggetto che contiene i dati del recordset.
codice WHERE riscritto con Jrequest:
Codice: [Seleziona]
voto between <?php echo JRequest::getInt('votoMinimo') ;?> AND <?php echo JRequest::getInt('votoMassimo');?>
i nomi dei campi sono quelli indicati nella form.
MASSIMA ATTENZIONE alla validazione dell'input (nota: getInt, non getVar)


codice custon code per visualizzare i risultati
Codice: [Seleziona]
<ul>
<?php foreach ($form->data['elenco'] as $r) : ?>
<li><?php echo $r['cf_id']." ".$r['voto']; ?></li>
<?php endforeach; ?>
</ul>
ovviamente ci aggiungi ciò che vuoi.

ciao,
marco


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline nocciola00

  • Esploratore
  • **
  • Post: 137
    • Mostra profilo
Re:Interrogazione del database
« Risposta #9 il: 31 Ott 2013, 12:41:34 »
mmleoni santo subito!!

  • dici 'fatto' ma non la vedo sul sito indicato

non avevo aggiunto la voce di menu ...  8)

Funziona! e mi si è chiarito anche qualche concetto, tipo che trovavo tanti esempi ma formulati  in maniera completamente diversa e non riuscivo a cavarne piede.

E se volessi creare un unico form con vari campi (specializzazione, anno di nascita, anno di diploma, voto min e max, ecc ...) e effettuare la ricerca solo con i campi che sono stati effettivamente compilati?
Cioè, ad esempio, il form contiene tutti i campi di interesse ma se compilo solo i campi specializzazione, anno di diploma e voto minimo e massimo, mi effaettua la ricerca solo in base a questi campi. E' possibile?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Interrogazione del database
« Risposta #10 il: 31 Ott 2013, 13:42:52 »
certo che è possibile. la metodologia è quella sin qui applicata:

  • form di ricerca
    tip: potresti usare un db loader per prendere i valori necessari a popolare le select (specializzazione!)
  • costruzione where
    php per ignorare i campi vuoti o valutare le condizioni e generare il sql
  • output risultati
    stampi i dati che servono
resta solo da capire che cosa si vuole fare, ma penso che ora potrai cavartela da sola.


ps: metti il [Risolto]
ps2: sei a posto con il dlgs 196/2003?


buon proseguimento,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline nocciola00

  • Esploratore
  • **
  • Post: 137
    • Mostra profilo
Re:Interrogazione del database
« Risposta #11 il: 31 Ott 2013, 17:38:25 »
  • form di ricerca
    tip: potresti usare un db loader per prendere i valori necessari a popolare le select (specializzazione!)
  • costruzione where
    php per ignorare i campi vuoti o valutare le condizioni e generare il sql
  • output risultati
    stampi i dati che servono



ci provo, ma non penso di riuscirci con le mie conoscenze di php!


ps2: sei a posto con il dlgs 196/2003?

si si, è solo un'esercitazione da proporre per l'esame di stato; il dominio è solo un mio parcheggio per un sito scolastico


grazie per l'aiuto!
« Ultima modifica: 31 Ott 2013, 17:42:17 da nocciola00 »

Offline pieroso

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
Re: Interrogazione del database (ho bisogno di una mano)
« Risposta #12 il: 13 Feb 2014, 18:49:12 »
Ciao a tutti, ho un problema molto simile, per favore mi potreste dare una mano?
Nel mio caso devo fare una ricerca tra due date in una tabella.  Per farlo ho preso ad esempio un mio  form già funzionante modificandolo seguendo i vostri post. Ma non ottengo nessun risultato, la mia impressione e che i valori dei campi di ricerca del form non passano alla where del DB Multirecord Loader; in merito: quando mmleoni scrive:" effettuiamo il post dei parametri" forse indica qualcosa che non so? E poi quando nocciola00 dice "non avevo aggiunto la voce di menù" che cosa c'entra?
Grazie anticipamente.

Piero.
« Ultima modifica: 14 Feb 2014, 16:09:42 da pieroso »

Offline elleuxe

  • Nuovo arrivato
  • *
  • Post: 1
    • Mostra profilo
Re:[RISOLTO] Interrogazione del database (con chronoform, edited)
« Risposta #13 il: 13 Gen 2015, 12:28:44 »
Salve,
ho installato chronoform v5. Ho letto tutte le guide possibili e immaginabili sulla creazione di due dropdown collegate tra loro (in particolare dovrei fare un form con regione, provincia e città).


Mi sono reso conto mio malgrado che la versione v5 differisce dalla v4 e che il DB multi record loader non esiste.


Qualcuno sarebbe così gentile da spiegarmi come posso risolvere il mio problema con la versione v5?


Grazie infinitamente


Offline PabloP

  • Nuovo arrivato
  • *
  • Post: 6
    • Mostra profilo
Re:[RISOLTO] Interrogazione del database (con chronoform, edited)
« Risposta #14 il: 16 Feb 2015, 18:03:07 »
up
Qualcuno può illustrarci come effettuare questo tipo di ricerche con CF v5 e CC v5


Grazie e saluti

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[RISOLTO] Interrogazione del database (con chronoform, edited)
« Risposta #15 il: 17 Feb 2015, 12:00:07 »
Salve,
ho installato chronoform v5. Ho letto tutte le guide possibili e immaginabili sulla creazione di due dropdown collegate tra loro (in particolare dovrei fare un form con regione, provincia e città).


Mi sono reso conto mio malgrado che la versione v5 differisce dalla v4 e che il DB multi record loader non esiste.


Qualcuno sarebbe così gentile da spiegarmi come posso risolvere il mio problema con la versione v5?


Grazie infinitamente

Benvenuto nella Comunità italiana di Joomla elleuxe,

Esiste, è sufficiente che nell'action DB read sia selezionato a Yes il parametro Multi read.
« Ultima modifica: 17 Feb 2015, 12:01:50 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

 



Web Design Bolzano Kreatif