Joomla.it Forum
Componenti per Joomla! => Gestione Form => : Arkimede360 10 Feb 2010, 00:22:50
-
Ciao Ragazzi, sto cercando di realizzare l'integrazione di una form fatta con chronoforms e la tabella utenti di joomla!
Ecco quello che devo fare:
l'utente si logga > compila il form > sulla mia mail arriva un messaggio con l'username di chi mi scrive
È importante che l'utente non sia costretto ad inserire di nuovo il suo username
Come faccio??
Grazie a tutti!!
-
Chronoforms salva per default nelle tabelle il campo cf_user_id che contiene il codice dell'utente che compila il form loggato in joomla.
Se vuoi ricavare gli altri dati dell'utente per inserirli eventualmente nel form puoi usare questo codice come base per ricavare i dati:
$user =& JFactory::getUser();
echo 'User name: ' . $user->username . '<br />';
echo 'Real name: ' . $user->name . '<br />';
echo 'User ID : ' . $user->id . '<br />';
echo 'User mail: ' . $user-<mail.'<br />';
}
-
Ciao Valens, intanto grazie! Ti chiedo un altro piccolo aiuto.
Io ho realizato un form che poi ho modificato, questo è il link:
http://www.fmcreator.com/demo/stampaonline/index.php?option=com_chronocontact&Itemid=2
è un modulo per ordinare on-line la stampa dei documenti.
Come già avevo detto, voglio evitare all'utente di inserire di nuovo il nome e la mail.
Ora, come lo uso il codice che mi hai scritto?
Grazie.
-
Quel codice puoi inserirlo in Form Code sezione html e serve per popolare dei campi del form che puoi tenere nascosti con il parametro hidden, esempio:
<input type="hidden" name="user_nome" value="<?php echo $user->name; ?>" />
la tabella del database associata al form dovrà avere un campo "user_nome". Quando invii il form salverà il nome utente nel campo.
Prima di utilizzare i dati dell'user nei campi input devi richiamare con php in cima al codice del form la classe così:
<?php
$user= & JFactory::getUser();
?>
Non è complicato
-
Perfetto!! Funziona tutto!
Adesso vorrei chiede un ultima cosa. Lo script del form che ho realizzato mi dice anche la spesa per la stampa: es. 2€
Io vorrei creare un campo aggiuntivo nel profilo utente (ho pensato di farlo con CB) e metterci dentro il credito dell'utente: es. 10€
Poi richiamare il campo credito con <?php echo $user->credito; ?> e sottrargli la spesa dell'utente (es. 2€).
Adesso la cosa che non so fare è andare a riscrivere il nuovo dato neel campo "credito" del DB...
Non credo sia difficile, solo che non lo so proprio fare.
Se non è troppo complicato mi potresti dire come si fa?
grazie ancora
-
Una via può essere quella. Dovresti creare un nuovo form con il campo credito ed usarlo per andarlo a inserire/modificare. Richiede un po' di lavoro direi con connectivity e l'uso del plugin profile interno di chronoforms per puntare al record dell' user interessato.
Ma questa mi convince poco perchè andiamo a modificare una tabella di joomla.
Opterei per creare una tabella parallela a quella dell'utente in relazione con essa nel campo id.
La procedura di una cosa del genere è già stata illustrata nel forum.
http://forum.joomla.it/index.php/topic,89247.0.html (http://forum.joomla.it/index.php/topic,89247.0.html)
-
grazie, vedo quello che riesco a combinare!
-
ho dato una letta veloce e ti chiedo solo una cosa:
dalle discussioni che mi hai linkato riesco a capire come scrivere sul campo CREDITO? Da quello che ho letto (velocemente) ho capito come si possono creare altri campi per la registrazione utente!
-
In questo articolo è illustrata una funzione Javascript che consente di modificare un valore di un campo in funzione del valore inserito in un altro.
http://www.joomla.it/articoli-della-community/3836-from-multi-page-con-chronoforms-1.html
Adattandola al tuo caso dovresti essere a dama.
-
Ti ringrazio.
a presto!!!
-
Sono ancora io. Ho seguito tutti i tuoi tutorial e ti faccio i miei complimenti. Non so però se mi saranno utili. Il campo che devo creare (credito) deve essere gestito dal pannello di controllo, ma con il tutorial sul plugin joomla registration non mi fa vedere nella gestione utenti il campo credito.
il credito una volta esaurito lo devo ricaricare andando ad inserire il valore di volta in volta.
Quindi credo che sono di nuovo a 0
un altra cosa
se per richiamare un dato del profilo inserisco
$user =& JFactory::getUser();
echo 'User name: ' . $user->username . '
';
echo 'Real name: ' . $user->name . '
';
echo 'User ID : ' . $user->id . '
';
echo 'User mail: ' . $user-<mail.'
';
}
cosa devo inserire per richiamare un dato di CB?
io continuo a fare le mie prove.
Ciaooo
-
alla fine ho creato un nuovo campo nel modulo di registrazione e funziona tutto bene.
Ora devo solo capire come far fare l'operazione aritmetica:
credito - spesa = credito(residuo)
come posso fare?
Il ridultato deve andare a sovrascriversi nella tab del DB al posto del precedente credito.
-
Volevo chiedere ancora una cosa senza aprire un altro post simile. Come faccio a visualizzare i solo i dati dell'utente loggato? Ho cercato ovunque ma non sono riuscito a trovare la soluzione.
Il mio form permette di inviare i file e li saqlva nella tabella _chronoforma_inviafile
in questa tabella vengono anche salvati altri dati come il nome la mail ecc. e l'id di chronoforma ossi cf_user_id che è uguale all'id che assegna joomla in _users.
Io vorrei che l'utente loggato visualizzasse i suoi ultimi invii, ma non riesco. La query che uso è la seguente:
$query ='SELECT file, cf_user_id FROM #__chronoforms_fileinviati WHERE cf_user_id=?????';
se al posto dei ????? ci metto il nemero id mi fa evdere tutti i file di quell'utente, ma io vorrei che al posto dei ????? ci fosse l'id dell'utente loggato.
Ho provato di tutto ma senza riuscire.
Confido nella vostra bontà :)
-
// questo lo chiami prima della query
$user =& JFactory::getUser();
$query ="SELECT file, cf_user_id FROM #__chronoforms_fileinviati WHERE cf_user_id=' ".$user->id." ' ";
-
Ho montato questa query ma non va...
<?php
// questo lo chiami prima della query
$user =& JFactory::getUser();
$query ="SELECT file, cf_user_id FROM #__chronoforms_fileinviati WHERE cf_user_id='$user->id' ";
// effettuo la query
$user->setQuery( $query );
// recupero il resultset
$rows = $user->loadObjectList();
// stampo a schermo l'elenco
foreach($rows as $row) {
echo $row->name. '<br/>' ;
echo $row->credito.'<br/>';
}
?>
dove sbaglio??
-
Così va:
<?php
// qualora non fosse globalizzato, recupero il mainframe
global $mainframe;
// istanzio un oggetto di accesso al DB
$db=& JFactory::getDBO();
// questo lo chiami prima della query
$user=& JFactory::getUser();
$query ="SELECT file, cf_user_id, costo FROM #__chronoforms_fileinviati WHERE cf_user_id='".$user->id."'";
// effettuo la query
$db->setQuery( $query );
// recupero il resultset
$rows = $db->loadObjectList();
// stampo a schermo l'elenco
foreach($rows as $row) {
echo $row->name. '<br/>' ;
echo $row->credito.'<br/>';
}
?>
Il tuo user è: <?php echo $row->cf_user_id; ?>
Il tuo file è:<?php echo $row->file; ?>
Il costo del file è:<?php echo $row->costo; ?>
adesso devo solo capire come farli visulizzare tutti.
grazie Vales!!
-
Ho raggiunto un altro risultato.Con questo codice
<?php
// qualora non fosse globalizzato, recupero il mainframe
global $mainframe;
// istanzio un oggetto di accesso al DB
$db=& JFactory::getDBO();
// questo lo chiami prima della query
$user=& JFactory::getUser();
$query ="SELECT file, cf_user_id, costo FROM #__chronoforms_fileinviati WHERE cf_user_id='".$user->id."'";
// recupero il resultset
$db->setQuery($query);
$row = $db->loadRowList();
print_r($row);
// stampo a schermo l'elenco
foreach($rows as $rows) {
}
?>
USER ID:<?php echo $rows->cf_user_id; ?>
FILE: <?php echo $rows->file; ?>
ottengo la stampa ti tutti dati che mi interessano.
Fonte:
http://docs.joomla.org/How_to_use_the_database_classes_in_your_script#loadObjectList.28.29
Adesso devo provare a formattarli perchè escono in un modo incomprensibile!!
-
Chiedo un ultimo aiuto. Non riesco a trasformare l'array in una stringa leggibile per l'utente.
Il cad che uso è:
$row = $db->loadRowList();
$string = implode (",", $row);
echo $string;
non va!! Mi sto documentando ma non trovo la soluzione!!
Help
-
Prova
$row = $db->loadRowList();
echo implode (",", $row);
-
Prova
$row = $db->loadRowList();
echo implode (",", $row);
mi visualizza Array,Array,Array
:o
-
ecco come ho risolto:
http://sviluppare-in-rete.blogspot.com/2007/09/joomla-15-funzioni-di-accesso-al.html (http://sviluppare-in-rete.blogspot.com/2007/09/joomla-15-funzioni-di-accesso-al.html)
$database = &JFactory::getDBO();
$database->setQuery('SELECT * FROM #__users');
$results = $database->loadAssocList();
foreach($results as $r) {
echo $r['name'],' | ',$r['username'],' | ', $r['email'],
'<br />';
}
Grazie a tutti!
-
Ciao, anch'io vorrei fare una cosa simile, ma ho dei dubbi in merito a
<?php
$user= & JFactory::getUser();
?>
mi spiego meglio... ho creato un form per l'iscrizione al sito un po' più dettagliato e che prevede l'inserimento di nome, cognome ed altri dati utili.
Quello che vorrei fosse visualizzato nella mail non fa parte della tabella utenti di com_user ma della tabella di riferimento al form creato con chronoform.
come faccio a collegare quei campi li al posto dei campi della jos_user?
Grazie per tutte le dritte!!!
-
Per inserire i campi del form nella mail basta inserire tra parentesi {} nel box dedicato alla redazione delle mail, il nome che assegni al "Field Name" del modulo.
Mi spiego meglio. Se creo un form con un unico textbox e al Field Name inserisco "nome" allora nel box dedicato alla redazione della mail inseriro ad esempio:
Ciao {nome}
e così verrà inserito il nome che l'utente inserirà nel textbox!
Sperò di essere stato chiaro :)
Una cosa, ma hai provato a utilizzare CB?
-
No, non mi sono espresso bene probabilmente.
Io vorrei che l'utente loggato al sito abbia la possibilità di compilare un form all'interno del quale NON debba nuovamente inserire i propri dati personali.
Ora, avendo creato un form personalizzato per l'iscrizione che già prevede l'inserimento dei campi richiesti vorrei che all'interno della mail fossero inseriti quei dati e non i campi di default richiamati dalla tabella jos_user (id, user, etc..) ma i campi della tabella "iscrizione".
Ora, se io inserissi {Nome}{Cognome}ed altri dati presi dalla tabella "iscrizioni" il form dovrebbe pescare quelli di riferimento all'utente loggato.
Non penso che basti inserire il nome del campo per ottenere questo risultato. :) :)
Grazie per l'aiuto!!
-
Non so se ho capito bene. Tu vuoi richiamare nei campi del tuo form i dati che l utente ha gia inserito durante la registrazione.
Provo ad aiutarti.
Questo codice va sopra utto
<?php
$db =& JFactory::getDBO();
$user=& JFactory::getUser();
$query = "SELECT * FROM `#__nome della tua tabella` WHERE `cf_user_id`=('".$user->id."')";
$db->setQuery($query);
?>
Nel campo VALUE del textbox insersci questo
<?php echo $user->name; ?>
per i richiamare i dati inseriti nella tabella jos_user
e questo
<?php echo $file;?>
per richiamare i dati inseriti nell'altra tabella.
Spero di esserti stato di aiuto.
-
... grazie mille ma ho ancora un dubbio :o
mentre mi è chiaro questo
echo 'User name: ' . $user->username . '<br />';
echo 'Real name: ' . $user->name . '<br />';
echo 'User ID : ' . $user->id . '<br />';
echo 'User mail: ' . $user-<mail.'<br />';
non riesco a capire come faccio con questo a richiamare esattamente la colonna desiderata.
<?php echo $file;?>
voglio dire:
mettiamo che abbia 4 campi che voglio stampare, creerò 4 campi nascosti, con name="nome_colonna" e value=<?php echo $file;?>
E' sufficiente? Oppure mi son perso qualcosa?
-
in teoria è cosi perche hai richiamato la tabella nella query. Pero non essendo un esperto di php ti ho detto un po quello che ho imparato negli ultimi giorni :)
-
Bhe hai fatto moltissimo e ti ringrazio ;D ;D... adesso provo a fare qualche tentativo cercando qua e la di vedere se riesco a far funzionare... spero di poter essere d'aiuto
anch'io.
credo che $file
vada dichiarato prima di essere usato...