Back to top

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

Offline RobP

  • Jr. Member
  • **
  • 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

  • Jr. Member
  • **
  • 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
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
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 »

Offline RobP

  • Jr. Member
  • **
  • 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

  • Jr. Member
  • **
  • 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

  • Jr. Member
  • **
  • 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

  • Jr. Member
  • **
  • 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

  • Jr. Member
  • **
  • 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
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
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 »

Offline RobP

  • Jr. Member
  • **
  • 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
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
sei sicuro che quella tabella contiene già record ?

Offline RobP

  • Jr. Member
  • **
  • 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
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
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 »

Offline RobP

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

Offline RobP

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

Offline vales

  • Global Moderator
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
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 ?

Offline RobP

  • Jr. Member
  • **
  • 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
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
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.

Offline RobP

  • Jr. Member
  • **
  • 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

  • Full Member
  • ***
  • Post: 111
    • 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
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
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}.

Offline llorenzini

  • Full Member
  • ***
  • Post: 111
    • 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
  • Cyborg
  • *****
  • Post: 5934
  • Sesso: Maschio
    • Mostra profilo
    • Agenzia Per il Turismo "Abetone Pistoia Montagna Pistoiese"
Prova con php

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


 



Web Design Bolzano Kreatif