Joomla.it Forum
Componenti per Joomla! => Gestione Form => : RobP 11 Mar 2010, 15:51:15
-
Ciao, vi spiego il problema:
l'utente compila il form (anonimo), clicca su invia e viene indirizzato ad una pagina di conferma(fin qui nessun problema), però in questa pagina io vorrei visualizzare anche il numero del suo form. Ad esmepio "quiz numero 5" se l'utente che ha appena compilato il form è il 5°.
Sò che bisogna utilizzare una funzione php che seleziona la tabella di mysql estraendo l'id però non sò come scriverla. Qualcuno può aiutarmi?
Grazieee
-
avrei trovato una soluzione, non funziona ancora ma credo di essere sulla buona strada.
Il codice php che ho creato è questo:
<?php
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "nome host";
$DBuser = "user";
$DBpass = "pwd";
$DBName = "nome database";
/* specifichiamo il nome della nostra tabella */
$table = "nome_tabella_mysql";
/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");
/* stampiamo l'id delll'ultimo record inserito*/
printf ("L'ultimo recod inserito ha l'identificativo %d\n", mysql_insert_id());
?>
Sicuramente c'è qualcosa di sbagliato perchè il risultato è sempre 0. Qualcuno mi sa aiutare?
-
Ciao RobP,
in Joomla non si usa quel sistema perchè ci sono già disponibili delle funzionalità chiamate API che semplificano il lavoro. Vedi nella sezione sviluppo del forum vi sono segnalati anche manuali per studiare il tutto.
Nel tuo caso dovresti sviluppare un codice simile a questo:
<?php
$user =& JFactory::getUser();
$db =& JFactory::getDBO();
// conteggio del prossimo atto
$query = "SELECT count(*) FROM `#__tua_tabella` where `cf_id` = '".$user->id."'";
$db->setQuery($query);
$nomes = $db->loadResultArray();
$numero=$nomes+1;
?>
$user è l'array che contiene le informazioni dell'utente loggato che invia il form.
Ovviamente devi adattare il tutto alla tua situazione quello sopra è uno spunto.
il seguente è un altro esempio di recupero di altri dati dell'utente.
$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 /]';
}
-
Ah ok, ma nel mio caso l'utente non è loggato, può compilare il form chiunque, è una specie di questionario. A ME interessa solamente visualizzare a video, dopo l'invio del form, il numero del record.
-
mi dà questo errore:
"Fatal error: Unsupported operand types in /home/....jumi_includes/estrarre_id.php on line 12"
in estrarre_id.php ho messo il codice che mi hai dato tu e la linea 12 è "$numero=$nomes+1;".
Non capisco
-
Aiuto Vales :'(, devo riuscire visualizzare quuel valore dopo che l'utente ha inviato il form, ma proprio non ci riesco. Dove dovrei inserirlo quel codice?
Se puoi aiutarmi ancora ti ringraziooo tantissimo... ;)
-
ok ora ho corretto così:
<?php
$user =& JFactory::getUser();
$db =& JFactory::getDBO();
// conteggio del prossimo atto
$query = "SELECT count(*) FROM `#_jos_chronoforms_promozione_inizio_cliente` WHERE `cf_id` = ".$user->id."";
$db->setQuery($query);
$nomes = $db->loadRow();
$numero = $nomes+1;
print_r($numero);
?>
...però mi stampa a video "1", quindi credo che non legge le righe del database. Aiuto! :-\
Praticamente a me servirebbe solo il numero riferito a quel form, dell'utente non mi interessa perchè il form lo potrà compilare chiunque.
-
Ho letto che con JTable c'è una funzione che permette di leggere l'ultimo id dell'ultimo record inserito. M anacora non riesco. So disperatooo >:(
-
<?php
$db =& JFactory::getDBO();
// conteggio del prossimo record
$query = " SELECT `cf_id` FROM `#__tua_tabella`";
$db->setQuery($query);
$nomes = $db->loadRow();
$numero=$nomes[0]+1;
?>
Dovrebbe funzionare così. Togliendo i riferimenti all'user che non servono.
-
Ho aggiunto in fondo print_r($numero); per visualizzare il numero del form dopo l'invio dello stesso. Ma ancora mi torna 1.
Sto impazzendo, anche perchè immagino sia una stupidata.
-
sei sicuro che quella tabella contiene già record ?
-
Si si ho provato anche con altre tabelle e ho provato anche a compilare al momento un form, fare invia e vedere se nella pagina successiva mi visualizzava il num del record. Però il risultato è sempre 1
-
Mi sono dimenticato che i record vanno ordinati in modo decrescente altrimenti torna sempre il primo record. Cos' invece viene l'ultimo.
<?php
$db =& JFactory::getDBO();
// conteggio del prossimo record
$query = " SELECT `cf_id` FROM `#__tua_tabella `ORDER BY `cf_id` DESC ";
$db->setQuery($query);
$nomes = $db->loadRow();
$numero=$nomes[0]+1;
?>
-
NIENTE ANCORA "1".... :'( :'( :'( :'(
-
Aiutoooo, ancora 1. Non riesco a risolvere. Chiedo ancora aiuto. :-\ :-\ :-\
-
Uso quella funzione in Albo Pretorio On Line e funziona perfettamente consentendo di visualizzare il numero dell'inserimento in corso.
Non riesco a capire il problema.
Puoi postare il codice che usi in HTML code del form ?
-
ma a dire il vero io quel codice php lo inserisco in una cartella di jumi tramite ftp, e poi lo richiamo all'interno dell'articolo che compare dopo aver inviato il form con
"{jumi [jumi_includesf/estrarre_id.php]}".
estrarre_id.php:
<?php
$db =& JFactory::getDBO();
// conteggio del prossimo record
$query = " SELECT `cf_id` FROM `#_jos_chronoforms_regalo_comple` ORDER BY `cf_id` DESC ";
$db->setQuery($query);
$nomes = $db->loadRow();
$numero=$nomes[0]+1;
print_r($numero);
?>
Forse è questo che sbaglio. Il codice html code è creato automaticamente dato che i form li faccio con il wizard. In html code non ho aggiunto altro
-
No il codice per chronoform va inserito nel form ci sono campi a questo dedicati.
Il principale è Html code che contiene il codice del form creato dal wizard in cui si possono inserire le modifiche e gli script per rendere il form dinamico.
-
l'ho inserito nel form code ma ancora mi risulta 1, e poi lo visualizza sopra il form, invece a me interesserebbe che quel numero venga visualizzato sulla pagina succesiva, cioè quello che l'utente stamperà e consegnerà.
-
ciao
ho lo stesso problema...o meglio vi spiego ho creato un form
nome "inserito da utenet"
cognome "inserito da utenet"
indirizzo "inserito da utenet"
valore: che mi da il form in automatico...non modificabile dall'utente ....
valore vorrei fosse come una chiave identificativa di quel record salvandomela nel db e visualizzandola all'utente quando mi conferma l'invio..tipo valore: xxxxx cosi lo si puo usare come identificatico per pescare l'utente al volo....come posso fare?
grazie
-
Dovresti specificare quale tipo di versione ci chronofrms stai usando. Questo post vecchio di quasi due anni si riferisce alla v3.
Comunque entrambe le versioni memorizzano nella tabella, per default ,una serie di campi che identificano univocamente il record
cf_id chiave numerica della tabella autoincrementante
cf_uid codice alfanumerico univoco per ogni record
cf_user_id numero dell'utente che ha compilato il form
ed altri campi utili.
Puoi ritrovare tutti questi valori nel messaggio di ringraziamento dopo la compilazione usando {nome_campo}.
-
ciao sto utilizzando la versione per joomla 1.7
no....ho provato...ma dopo l'invio mi scrive cosi
"Cordiali saluti
codice identificativo: {cf_id}"
non so....che fare...
-
Prova con php
<?php
echo $form->data['cf_id'];
?>
-
ciao
scusami ma non ho capito ne dove metterlo ne che boss utilizzare per il codice...
grazie...
-
Nel campo in cui definisci i ringraziamenti.
-
posso decidere io che questo valore non parta da 0 o 1 ma da 1000 per esempio?
-
se metto quel codice nei ringraziamenti mi scrive cosi:
Grazie per avere inviatoi tuoi dati.
data['cf_id']; ?>
-
Allora ho verificato che nell'action Show Thanks Message non accetta php.
Quindi dopo l'action db save va inserita un'action Custom code dove possono essere inseriti php ed html.
In quel modo funziona.
Devi stare attento se in db save hai usato Model id, perchè in quel caso il recupero del numero del record registrato avviene con $form->data['nome_model_id_cf_id']
ne non hai usato il campo Model id in db save invece recuperi il valore con $form->data['chronoform_data_cf_id']