Back to top

Autore Topic: Filtro per tabella  (Letto 10992 volte)

Offline marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Filtro per tabella
« il: 21 Feb 2013, 14:52:42 »
Salve a tutti. Ho un problema con i filtri di una tabella. Ho letto la guida 1 2 di vales , ma non sono riuscita nell'intento.
Vi chiedo di aiutarmi a capire....
Dunque ho visualizzata in un form i dati di una tabella, e fin qui tutto ok. Ora voglio filtrarli nel senso che voglio vedere solo quelli dell'utente registrato che ha accesso al form.
In db multi record loader ho scritto username in db field. Il risultato è che mi filtra i record con username=null. Ho dedotto che il valore username non lo legge.

Vi chiedo come devo fare per costruire correttamente il filtro??

Vi ringrazio anticipatamente

Offline marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #1 il: 21 Feb 2013, 14:59:42 »
Vi prego di rispondermi.... sento che è una sciocchezza che sbaglio, ma non posso procedere nel mio lavoro.

Grazie.

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #2 il: 22 Feb 2013, 21:27:50 »
Occorre inserire del codice idoneo nel campo WHERE statement che filtra i record in caso di utente loggato e non mostra nulla nel caso utente non loggato.

Tipo questo

Codice: [Seleziona]
<?php
$user 
=& JFactory::getUser();
if ( 
$user->id ) {
echo 
"cf_user_id =".$user->id;
}else{
echo 
"cf_user_id = -1";
}
?>

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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #3 il: 25 Feb 2013, 19:10:03 »
Grazie Vales per il tuo interessamento.
Ma non funziona il tuo suggerimento.
Ho così settato il mio Db multi record loader:
db field= userrname (campo filtro)
table = assenze (tabella da cui estrarre i record e contenente il campo username)
model id=UserDetails (modello array per visualizzare i dati... funziona senza filtro)
load data=yes
where=
<?php
$user =& JFactory::getUser();
if ( $user->username > 0 ) {
echo "username =".$user->username;
}else{
echo "username = -1";
}
?>

il risultato è tabella vuota, non ci sono record!

Dove sbaglio?????
Ti prego aiutami...

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #4 il: 25 Feb 2013, 19:54:58 »
Nell'esempio della guida funziona.

Il tuo codice non è corretto $user->username è una stringa non la puoi confrontare con zero.

Quali sono i campi della tabella che hai creato ?
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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #5 il: 25 Feb 2013, 19:58:34 »
Questi i campi:

cf_id1208
cf_uidIZGFlYzU0M2EwOTRjdf2fd6f87295944a6d68c1d4a788c7a9
cf_created2011-11-17 17:47:43
cf_modified0000-00-00 00:00:00
cf_created_by0
cf_modified_by0
cf_ipaddress89.97.124.69
cf_user_id341
prot2789
data_prot17/11/2011
tipoferie a.s. precedente
motivo
inizio20/07/2012
fine24/08/2012
giorni30
altro
submit
as2011/2012
username MFFGNN47A11G131Y

la tabella deve essere filtrata sul campo (indicizzato) username che è il codice fiscale del loggato e corrisponde anche al suo username.

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #6 il: 25 Feb 2013, 21:02:52 »
Proporrei questo

Codice: [Seleziona]
<?php
$user 
=& JFactory::getUser();
if ( 
$user->id ) {
echo 
"username =".$user->username;
}else{
echo 
'username = "" ';
}
?>

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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #7 il: 25 Feb 2013, 22:07:04 »
niente tutto bianco.....

 :'( :-\ :'(

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #8 il: 26 Feb 2013, 19:37:40 »
Ma sei loggata come utente, che hai mostrato, quando fai la prova?
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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #9 il: 26 Feb 2013, 21:08:09 »
 :P
Si, ma ho appena trovato l'errore...... il nome della tabella portava due underscoore e io lo scrivevo con uno!!!
URRAH...

Tutte le tue indicazioni sono corrette.
Approfitto del tuo interessamento.
Ora ho visualizzato l'elenco, e voglio cancellare un record.
Sono riuscita a portarmi attraverso token il cf_uid del record in un altro form dove ho il codice per cancellare che ti posto:

<?php
$db=&JFactory :: getDBO();
$db-> setQuery ( "delete from jos_chronoforms_assenzedirigenti where cf_uid='$_Post[cf_uid]' ");
$cab=$db->loadRow();
?>

Ma ovviamente il codic in grassetto è errato come devo correggerlo????

Grazie ancora vales, ... mi hai ridato 10 anni di vita!!!!

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #10 il: 26 Feb 2013, 21:58:42 »
Prova ad usare chronoconnectivity nuova versione e vedrai che le operazioni di lettura, aggiunta, modifica, cancellazione dei record  sono molto semplici.

Comunque per quanto rigurda il codice farei queste modifiche

Codice: [Seleziona]
<?php
$db
=&JFactory :: getDBO();
$db-> setQuery "delete from jos_chronoforms_assenzedirigenti where cf_uid='".$_POST['cf_uid']);
$db->query();
?>

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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #11 il: 26 Feb 2013, 23:32:05 »
 :'( il record non si cancella....

colpa del cf_uid che non passa ....

Offline marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #12 il: 26 Feb 2013, 23:32:47 »
chronoconnectivity funziona con joomla 2.5 e chronoform 4?

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #13 il: 27 Feb 2013, 20:08:50 »
prova ad usare $form->data['cf_uid'] al posto $_POST oppure $form->data['tuo_model_id']['cf_uid']

certo la versione v4 è fatta apposta per Joomla 2.5
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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #14 il: 28 Feb 2013, 14:34:28 »
Graziesssssssssssimo Vales!!!
Ultimo suggerimento  :P !
Cosa c'è che non va in questo codice?

<?php
$db=&JFactory :: getDBO
$cod=$form->data['cf_uid'] ;
$db-> setQuery ( "delete from jos_chronoforms_assenzedirigenti where cf_uid= '$cod' ");
$cdm=$db->loadRow();
?>

La variabile $cod la prende, come da tuo suggerimento, ma la query non la esegue....
Naturalmente è stato inserito on submit e richiamato con un tasto di conferma.


Grazie ancora per il tuo interessamento.
« Ultima modifica: 28 Feb 2013, 14:36:23 da marialba »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #15 il: 28 Feb 2013, 18:03:24 »
Credo di aver dimenticato qualcosa prova questo qui

Codice: [Seleziona]
<?php
$db
=&JFactory :: getDBO();
$db-> setQuery "delete from jos_chronoforms_assenzedirigenti where cf_uid='".$_POST['cf_uid']."'");
$db->query();
?>


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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #16 il: 01 Mar 2013, 13:57:03 »
non va, vales!?!?!

Non riesco proprio a capire perchè non cancella il record.
Ho controllato proprio tutto quello che potevo:
in mysql funziona ok
se mi faccio riscrivere la query mi passa il parametro corretto

Temo che l'errore sia nella posizione in cui ho messo questo custom code. E' inserito in on submit e poi c'è un redirect User. Deve essere per caso aggiunto altro ?
Oppure in on load? qualche action relativa al db????

Incomincio a rimpiangere il vecchio chronoforms, dove scrivevo il codice e funzionava!

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #17 il: 01 Mar 2013, 15:58:11 »
Va bene in on submit perchè dal form con la conferma avvii la cancellazione.

Ho visto che hai usato il model o lo togli o lo inserisci nel $form->data. Avevi provato in questo modo.

Ultima cosa al posto jos_chronoforms_ecc puoi anche mettere #__chronoforms_ecc

Forse però mi sfugge qualcosa mi puoi descrivere con quali elementi ed action è realizzato il form di cancellazione.
« Ultima modifica: 01 Mar 2013, 19:03:44 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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #18 il: 01 Mar 2013, 19:46:19 »
Allora in action vi è:
in on load
  • show html (nel form vi è un text box che fa vedere il record da cancellare e poi il tasto cancella e indietro)
  • db record loader
in on submit
  • costom code (in cui vi è la maledetta qyery che non funziona)
  • redirect user (per tornare all'elenco completo dei record)
l'ordine è quello che vedi

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #19 il: 01 Mar 2013, 19:56:40 »
Com'è configurato db record loader ?

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:Filtro per tabella
« Risposta #20 il: 01 Mar 2013, 20:00:46 »
show html in seconda posizione
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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #21 il: 01 Mar 2013, 20:10:57 »
Allora ho rifatto il form e quasi per miracolo ora funziona!!! Il codice che ho inserito è:

<?php
$db=&JFactory :: getDBO();
$db-> setQuery ( "delete from jos_chronoforms_assenzedirigenti where cf_uid='".$_POST['cf_uid']."' ");
$db->query();
?>


lasciando l'ordine che ho detto prima.
Grazie vales!!!

Approfitto, sono cose elementari, ma basilari che mi permetteranno di andare avanti.
Se volessi richiamare in una query il valore di una text box il codice come potrebbe essere?
Per esempio in questo caso:

$query= ("update table set camp01=??????? ......") volendo salvare un valore che è nella text box del form in cui vi è il tasto submit con nome pippo.

Grazie ancora vales.... penso che si possa coniare il termine di valesiani per tutti coloro che hanno usufruito dei tuoi saggi consigli!!!

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #22 il: 01 Mar 2013, 20:52:51 »
se si farà il club avrai diritto alla tessera n.1 ;D

Mi togli una curiosità siccome non mi piace l'uso brutale del $_POST perchè si presta a dare spazio ad attacchi potresti fare la prova portando show html al secondo posto e usando la query precedente senza $_POST

un text box è un campo come un altro quindi dovrebbe funzionare ma non ho capito bene cosa vuoi fare in particolare il tasto si invio di nome pippo che vuol dire?

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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #23 il: 01 Mar 2013, 21:12:01 »
Allora con questo codice
<?php
$db=&JFactory :: getDBO
$cod=$form->data['elenco']['cf_uid'] ;
$db-> setQuery ( "delete from jos_chronoforms_assenzedirigenti where cf_uid= '$cod' ");
$db->query();
?>
e mettendo show html in seconda, non funziona (elenco è il mio model id)

Volevo dire che voglio semplicemente fare l'update di un record prendendo il valore del campo da aggiornare dal valore di un text box di nome (per esempio) pippo.

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #24 il: 01 Mar 2013, 21:43:10 »
Aggiungi questo nello script php prima di tutto il resto

print_r2($form->data);

e la query così

$db-> setQuery ( "delete from jos_chronoforms_assenzedirigenti where cf_uid= '".$cod."' ");

vediamo cosa scrive dovresti disabilitare però il redirect
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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #25 il: 01 Mar 2013, 21:58:49 »
facendo come dici mi da questa schermata:

 
Array ( [option] => com_chronoforms [token] => INDIxYTg3YzNiM2Vl0909bdb488a05e133740d1 72409f9652 [chronoform] => elimina_comunicazione [event] => submit [Itemid] => [cf_uid] => INDIxYTg3YzNiM2Vl0909bdb488a05e133740d1 72409f9652 [prot] => 4670 [conferma] => conferma [ce4fc36887d8a33dff4d36851cb82d3d] => 1 )
« Ultima modifica: 01 Mar 2013, 22:02:39 da marialba »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #26 il: 01 Mar 2013, 22:22:57 »
vedo il cf_uid ma non è usato il model quindi dovresti usare questo

$cod=$form->data['cf_uid'] ;
« Ultima modifica: 01 Mar 2013, 22:32:47 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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #27 il: 02 Mar 2013, 11:03:52 »
ho sistemato così, va bene? funziona!

<?php
$db=&JFactory :: getDBO();
$cod=$form->data['cf_uid'] ;
$db-> setQuery ( "delete from jos_chronoforms_assenzedirigenti where cf_uid='".$cod."' ");
$db->query();
?>

 :D
scusami, ma la felicità è tanta....  :-* :-* :-* :-* :-*

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #28 il: 02 Mar 2013, 12:28:43 »
Anche la mia  ;D

Così sarebbe ancora meglio si risparmia memoria e un riga di codice.

Codice: [Seleziona]
<?php
$db
=&JFactory :: getDBO();
$db-> setQuery "delete from jos_chronoforms_assenzedirigenti where cf_uid='".$form->data['cf_uid'] ."' ");
$db->query();
?>

Sai certi principi ogni tanto bisognerebbe rispettarli, almeno noi del Commodore 64.

Ora il form è anche più sicuro.



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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #29 il: 02 Mar 2013, 19:38:25 »
Ok.
Ma non mi hai risposto sul textbox.
Vorrei  che quando si apre un form in un textbox (hidden) deve memorizzare lo username dell'utente loggato.
Come configuro il textbox per riportare in value lo username????

Grazie ancora!!


Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Filtro per tabella
« Risposta #30 il: 02 Mar 2013, 21:31:56 »
Chronoforms salva già lo $user->id in automatico nel database e da li in altri form si risale allo username.

Comunque se proprio vuoi salvare lo username puoi fare così

usa un Custom element HTML/PHP selezioni Pure code e poi inserisci un codice tipo questo

Codice: [Seleziona]
<?php
$user 
=& JFactory::getUser();

echo 
'<input type="hidden" name="tuo_nome" value="'.$user->username.'" />';

?>

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 marialba

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:Filtro per tabella
« Risposta #31 il: 02 Mar 2013, 22:06:56 »
Grande....
 :-* :-* :-* :-* :-* :-*

 



Web Design Bolzano Kreatif