Urdu Italiano
inglese English Deutsch Deutsch spagnolo Español Français Français Italiano Italiano olandese Nederlands portoghese Português russo Русский greco Ελληνικά
Login



 
Benvenuti a Jumi! Tutorial >> >> Appartamenti forme di chiamata in un Joomla! contenuto

Ci sono un sacco di persone che desiderano pubblicare i propri moduli personalizzati in Joomla! contenuto.

Per soddisfare le loro esigenze, ho deciso di scrivere questo tutorial. Il tutorial è dedicato a Joomla! 1.0.x codifica i principianti, ma quelli intermedi possono trovare alcuni trucchi utili.

In questo tutorial passo passo imparerete

  • quali forme colling auto sono e per quale scopo servono,
  • un po 'più utile php e Joomla! 1.0.x trucchi che sono rilevanti per le forme di chiamata auto. Es.:
    • come uno script cattura che un utente ha inviato i dati,
    • come riconoscere un indirizzo URL a cui lo script viene eseguito,
    • Come spegnere il Joomla specifico! pagina cache disattivata,
    • che Joomla! oggetto specifico $ database, $ my sono, dove trovare i loro metodi e la loro descrizione,
    • ecc.

Quali forme di chiamata auto sono e per quale scopo servono

Ogni forma raccoglie alcuni dati provenienti da responders.

I dati raccolti non rimangono in forma ma sono - di solito dopo aver premuto il pulsante di invio - inviato da qualche parte. Essi vengono inviati ad alcuni script di elaborazione che "siede" su un altro indirizzo URL e che - dopo la pre-elaborazione possibile - scrive i dati nel database e / o li invia a un indirizzo e-mail.

Questo è l'approccio più comune. E su questo approccio si affidano standard di Joomla! forme componenti.

Ma è possibile vivere senza componente dei moduli, è possibile avere le nostre proprie forme da inserire in un articolo contenuto. I moduli possono inviare i dati raccolti per sé e la loro elaborazione. Sono così chiamati forme di chiamata auto.

E 'anche possibile anche di più: per mostrare i risultati del modulo nell'articolo stesso contenuto.

In questo tutorial vi mostrerò come fare.

Perché ci deve essere qualche script php lì che manipola con i dati del modulo che si avvarrà di Jumi plug-in per inserire questo script nel contenuto. Se preferite un altro plugin per l'inserimento script php in Joomla! contenuto che si può usare come bene.

Demo scheda descrittiva

Sebbene la forma demo che segue è molto concreto si può scrivere ogni forma che si possa immaginare da un approccio spiegato in questo tutorial.

Non effettuare test sul server di produzione pubblica, ma sul vostro host locale solo!

Supponiamo che vogliamo

  • una forma di voto che raccoglie le risposte alle domande più 3 si escludono a vicenda,
  • salvare le risposte in un database insieme con data e ora della risposta e, insieme con l'identificazione di un utente,
  • per mostrare l'annuncio "grazie" e sintesi dei risultati, ma solo a quegli utenti che hanno votato.

La strategia di base

Dividere il codice in diversi pezzi, i blocchi funzionali e logico offre molti vantaggi. Anche se non sarà discusso i vantaggi qui seguirà questa prassi generale bene qui.

Ci sono due principali blocchi logici nel nostro compito:

  • mostrano formare + + raccogliere i dati verificarli + salvare i dati in un database (forma chiamata self)
  • leggere i dati da un database e mostrano i risultati.

Così ho dividerà la nostra applicazione in due file di script anche: self_call_form.php e show_results.php.

Andremo nei dettagli nel seguito.

Ma partiamo con un primo database.

Banca dati

Lasciate che il nostro nome della tabella del database è xxx_mytable_test dove xxx sta per il tuo Joomla! prefisso database. Alcune estensioni di Joomla! gli utenti hanno gli altri prefissi prefisso Jos hanno mos. I assumerà il prefisso Jos in seguito.

Ripeto il nostro compito è quello di memorizzare data e ora di registrazione, l'identificazione utente e una risposta.

Senza entrare nel database MySQL e dettagli di design da tavolo che si possono trovare altrove la struttura della tabella descritta in lingua MySQL sarà:

CREATE TABLE IF NOT EXISTS `jos_mytable_test` (
`Id` int (11) NOT NULL auto_increment,
`Recordtime` datetime NOT NULL di default '0000-00-00 00: 00: 00',
`User_id` varchar NOT (15) NULL default 'host',
`Rispondere` int NOT (6) NULL default '0',
PRIMARY KEY (`id`)
) TYPE = MyISAM;

Il campo ID è stato aggiunto solo per l'identificazione tabella record univoco.

È necessario creare la tabella nel database di Joomla. Verifica che il tuo prefisso è jos_. Se è ancora mos_, cambiare il prefisso delle tabelle.

È possibile creare tabella tramite phpMyAdmin manualmente o automaticamente tramite copia-incolla della dichiarazione MySQL sopra.

I assumerà il jos_mytable_test tabella viene creata da ora.

self_call_form.php

Ci sono fondamentalmente due metodi con cui un modulo di comunicazione con l'ambiente: POST e GET. GET invia (e legge) i dati da appendice URL. Non useremo il metodo GET qui.

POST Metodo scrive i dati globali php variabile $ _POST. Così abbiamo pieno accesso ai dati inviati qui.

Algoritmo generale del self_call_form.php

Se non ci sono dati rilevanti in $ _POST, vale a dire non c'è una risposta da un utente, quindi mostrare forma. Se l'utente risponde, quindi lo ringrazio e scrivere la risposta (e altri dati) nel database.

L'algoritmo di cui sopra tradotto in linguaggio php assomiglia a questo codice:

funzione self_form()
 / / Nome del pulsante Radio (qui "risposta") deve essere un nome di colonna in un database troppo!
{

 $ Anchor  =  "MyForm";  / / La variabile $ ancora avremo bisogno in seguito
 eco "Name =  ";  / / L'ancora html avremo bisogno in seguito
 eco "
"; / / Form container if(!isset($ _POST['Risposta'])) / / Se non c'è risposta, allora scrivere la forma { $ Return_url = Get_return_url($ Anchor); eco "
"; eco "

Hai trovato questo tutorial utile? "; eco "Type='radio' name='answer' Assolutamente no.\n"; eco " type='radio' Così così.\n"; eco "Type='radio' name='answer' sì. Grazie per questo.\n"; eco " "; eco ""; } altro / / Se c'è una risposta ringrazio e scrivere la risposta nel database { eco " Grazie per il vostro voto ";   WRITE_DATA($ _POST['Risposta']); } eco ""; }

La spiegazione e alcuni trucchi

PHP funzione isset ('risposta') controlla 'risposta' tempo esiste in $ _POST.

Vogliamo che il modulo per inviare dati a sé. Ciò significa che l'indirizzo URL stessa (forma e il suo script di elaborazione possono essere trovati allo stesso URL). Possiamo usare rigido indirizzo codificato URL di una pagina o, come nel nostro caso, siamo in grado di ottenere l'URL dall'ambiente Joomla utilizzando un semplice trucco. Utilizzando il trucco è meglio quindi il primo approccio hardcoded perché il nostro codice è riutilizzabile in varie pagine senza alcun contatto.

Così ecco che arriva il trucco contenuta nel get_return_url funzione ($ ancoraggio).

Funzione get_return_url ()
funzione get_return_url($ Anchor)
{
 if ($ Query_string = MosGetParam( $ _SERVER,  'QUERY_STRING',  '' ))

 {
  $ Tornare  =  'Index.php?'  .  $ Query_string;
 
 }
 altro
 {

  $ Tornare  =  'Index.php';
 
 }
 / / L'url inizia con index.php ora

 
 
 / / Conversione e per la conformità a & XTML

 $ Tornare  =  str_replace( '&',  '&',  $ Tornare );
 
 / / Ancoraggio aggiungendo alla fine di URL

 $ Tornare  .="# $ Anchor";  / / Aggiunta di ancoraggio a url
 / / Prepand http:// all'inizio della url
 ritorno sefRelToAbs($ Tornare);



}

Non c'è miracolo in esso. La funzione restituisce solo l'indirizzo URL da cui viene eseguito (nel nostro modulo). Compreso l'ancoraggio.

Perché ho incluso l'(html) ancora nel indirizzo di ritorno?

Immaginiamo che il modulo è in fondo di una pagina molto lunga. Se non fosse per l'ancoraggio poi dopo l'invio dei dati utente vedrà all'inizio della pagina e deve scorrere verso il basso. Con l'utente ancoraggio sarà tornare al posto che ha votato.

Mi piacerebbe rivolgere la vostra attenzione a Joomla! mosGetParam funzione specifica () troppo. E 'la funzione più utile. E deve essere usato in modo intensivo si fa.

La descrizione generale del mosGetParam () può essere trovato qui. Uno degli usi pratici segue:

Invece di usare:

$ _POST ['Somename']

è meglio utilizzare:

mosGetParam ($ _POST, 'somename')

perché non solo qualche taglio di input utente indesiderato, ma ci sono alcune altre opzioni utili in esso.

Tuttavia, se si dispone di molti dati da elaborare può essere piuttosto il tempo consuma di ritirare tutti i valori a partire da $ _POST uno per uno: o loro accesso diretto o tramite mosGetParam () function. C'è un altro trucco: l'uso di estratto di funzione php ($ _POST) che costruisce le variabili e assegna loro un nome di tutto il contenuto di $ _POST.

Avviso usiamo $ _SERVER nel get_return_url function (). $ _SERVER È un'altra variabile globale php come $ _POST e può essere di qualche uso nei vostri script troppo. Se non si conosce il contenuto delle variabili è possibile mostrare nei vostri script utilizzando var_dump ($ somoevaribale) funzione.

Funzione checkForm ()

Questa è la funzione di validazione javascript che convalida l'input dell'utente contro alcune regole. Che la posta elettronica è in realtà un indirizzo di posta elettronica, questo nome non è vuoto, ecc

Ancora: si possono trovare vari script di validazione delle fonti Internet centinaia.

Nel nostro modulo di demo ci sarà la convalida che l'utente ha selezionato un tasto "risposta" radio. Se non c'è "risposta" non inviare i dati, ma mostrano un avviso: