Back to top

Autore Topic: [chronoform + funz php] visualizzare l'id del form dopo averlo compilato  (Letto 10876 volte)

Offline RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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

Offline RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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?

 


Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
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:

Codice: [Seleziona]
<?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.

Codice: [Seleziona]
$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 /]';
}
« Ultima modifica: 12 Mar 2010, 10:35:38 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 RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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.

Offline RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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

Offline RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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... ;)

Offline RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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.
« Ultima modifica: 12 Mar 2010, 08:36:36 da RobP »

Offline RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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 >:(

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Codice: [Seleziona]
<?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.
« Ultima modifica: 12 Mar 2010, 10:36:48 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 RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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.

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
sei sicuro che quella tabella contiene già record ?
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 RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Mi sono dimenticato che i record vanno ordinati in modo decrescente altrimenti torna sempre il primo record. Cos' invece viene l'ultimo.

Codice: [Seleziona]
<?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;

?>
« Ultima modifica: 12 Mar 2010, 11:39:52 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 RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
NIENTE ANCORA "1".... :'( :'( :'( :'(

Offline RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
Aiutoooo, ancora 1. Non riesco a risolvere. Chiedo ancora aiuto. :-\ :-\ :-\

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
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 ?
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 RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
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.
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 RobP

  • Esploratore
  • **
  • Post: 57
    • Mostra profilo
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à.


Offline llorenzini

  • Esploratore
  • **
  • Post: 170
    • Mostra profilo
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

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
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}.
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 llorenzini

  • Esploratore
  • **
  • Post: 170
    • Mostra profilo
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...


Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Prova con php

Codice: [Seleziona]
<?php
echo $form->data['cf_id'];
?>

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 llorenzini

  • Esploratore
  • **
  • Post: 170
    • Mostra profilo
ciao
scusami ma non ho capito ne dove metterlo ne che boss utilizzare per il codice...
grazie...

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Nel campo in cui definisci i ringraziamenti.
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 llorenzini

  • Esploratore
  • **
  • Post: 170
    • Mostra profilo
posso decidere io che questo valore non parta da 0 o 1 ma da 1000 per esempio?

Offline llorenzini

  • Esploratore
  • **
  • Post: 170
    • Mostra profilo
se metto quel codice nei ringraziamenti mi scrive cosi:



Grazie per avere inviatoi tuoi dati.

 
data['cf_id']; ?>

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
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']


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