Auto chamando formas de Joomla! conteúdo - tutorial

Existe uma grande quantidade de pessoas que desejam publicar seus formulários personalizados em uma Joomla! conteúdo.

Para satisfazer as suas necessidades, eu decidi escrever este tutorial. O tutorial é dedicado a Joomla! 1.0.x codificação iniciantes, mas os intermediários podem encontrar alguns truques úteis.

Neste tutorial passo a passo, você vai aprender

  • o que é auto formas colling são e com que propósito a que servem,
  • php alguns mais úteis e Joomla! Truques 1.0.x que são relevantes para as formas de chamar self. Por exemplo:
    • como um script capturas que um usuário tenha enviado dados,
    • como reconhecer um endereço URL em que o script é executado,
    • como desligar o Joomla específico! página off cache,
    • o que Joomla! objeto específico $ database, $ meus são, onde encontrar os seus métodos e sua descrição,
    • etc

Quais são as formas de chamar self são e para que finalidade servem

Toda forma recolhe alguns dados de respondedores.

Dados coletados não permanecem em uma forma, mas eles são - geralmente após pressionar botão enviar - enviou em algum lugar. Eles são enviados para processamento de algum script que "senta" no outro endereço URL e que - depois de pré-processamento possível - grava os dados no banco de dados e / ou envia-los para um endereço de e-mail.

Esta é a abordagem mais comum. E em que a abordagem de confiar Joomla padrão! formas componentes.

Mas é possível viver sem o componente formulários, é possível ter as nossas próprias formas de ser incluído em um artigo de conteúdo. Os formulários podem enviar os dados coletados para o eu e processá-los. Eles são assim chamados formas de chamar self.

É mesmo possível ainda mais: para mostrar os resultados do formulário no artigo mesmo conteúdo.

Neste tutorial vou mostrar-lhe como.

Porque tem que haver algum script php lá que manipula com os dados do formulário vou fazer uso do plugin Jumi para incluir este scripts para o conteúdo. Se você preferir qualquer outro plugin para php inclusão script em Joomla! conteúdo que você pode usá-lo também.

Descrição do formulário de demonstração

Embora a forma de demonstração que se segue é muito concreto, você pode escrever todas as formas que você pode imaginar pela abordagem explicado neste tutorial.

Não faça testes no servidor de produção pública, mas no seu host local apenas!

Vamos supor que queremos

  • uma forma de votação que recolhe as respostas em 3 questões mutuamente excludentes,
  • para salvar respostas em um banco de dados juntamente com data e hora da resposta e, juntamente com uma identificação do usuário,
  • para mostrar "obrigado" anúncio e resumo dos resultados, mas apenas para aqueles usuários que votaram.

Estratégia básica

Dividir o código em vários pedaços, blocos funcionais e lógicas oferece muitas vantagens. Embora eu não será discutida as vantagens aqui vou seguir esta boa prática aqui.

Existem dois principais blocos lógicos em nossa tarefa:

  • + mostrar formulário coletar dados + + verificá-los salvar dados em um banco de dados (formulário chamado self)
  • ler dados de um banco de dados e mostrar os resultados.

Então eu vou dividir a nossa aplicação em dois arquivos de script também: self_call_form.php e show_results.php.

Vamos entrar em detalhes a seguir.

Mas vamos começar com um primeiro banco de dados.

Banco de dados

Deixe nosso nome da tabela do banco de dados é xxx_mytable_test onde xxx é o seu Joomla! prefixo banco de dados. Alguns Joomla! os usuários têm outros prefixo jos têm prefixo mos. Vou assumir jos prefixo a seguir.

Repito a nossa tarefa é a de armazenar data de registo e hora, identificação do usuário e uma resposta.

Sem entrar em banco de dados MySQL e detalhes tabela de projeto que pode ser encontrado em outra parte da estrutura da tabela descrita no MySQL idioma será:

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

O ID de campo foi adicionado apenas para identificação tabela de registro único.

Você tem que criar a tabela no seu banco de dados Joomla. Verificar, que o prefixo é jos_. Se ainda é mos_, altere o prefixo da tabela.

Você pode criar a tabela via phpMyAdmin manualmente ou automaticamente pelo copy-paste da declaração MySQL acima.

Vou assumir o jos_mytable_test tabela é criada a partir de agora.

self_call_form.php

Existem basicamente dois métodos pelos quais uma forma de se comunicar com o seu ambiente: POST e GET. GET envia (e lê) dados do apêndice URL. Não vamos usar o método GET aqui.

POST método grava dados globais php $ _POST variável. Portanto, temos pleno acesso aos dados enviados aqui.

Algoritmo geral do self_call_form.php

Se não existem dados relevantes em $ _POST, ou seja, não há uma resposta de um usuário, em seguida, mostrar formulário. Se o usuário respondeu, em seguida, agradecer-lhe e escrever a resposta (e outros dados) para o banco de dados.

O algoritmo acima traduzidas para a linguagem php se parece com este código:

função self_form()
 / Nome do botão / Radio (aqui "resposta") deve ser um nome de coluna em um banco de dados também!
{

 $ Âncora = "Myform"; / / A variável $ âncora vamos precisar mais tarde
 echo "Name =  "; / / A âncora html vamos precisar mais tarde
 echo "
"; / Recipiente / form se(!isset($ _POST['Resposta'])) / / Se não há uma resposta em seguida, escrever a forma { $ Return_url = Get_return_url($ Âncora); echo "
"; echo "

Você já encontrou este tutorial útil? "; echo " name='answer' type='radio' Absolutamente não.\ N"; echo " name='answer' type='radio' Assim, assim.\ N"; echo " name='answer' type='radio' Sim. Graças por isso.\ N"; echo "; echo ""; } mais / / Se houver uma resposta agradecer e escrever a resposta no banco de dados { echo " Obrigado por seu voto ";   write_data($ _POST['Resposta']); } echo ""; }

A explicação e alguns truques

PHP função isset ('resposta') verifica 'resposta' tempo existe no $ _POST.

Queremos que o formulário para enviar dados para ego. Isso significa que para o endereço de URL mesmo (forma e seu script de processamento podem ser encontrados na mesma URL). Podemos usar o endereço URL codificado de uma página ou, como no nosso caso, podemos obter a URL do ambiente Joomla usando um truque simples. Usando o truque é melhor, então a abordagem rígido em primeiro lugar codificados porque o nosso código é reutilizável em várias páginas, sem qualquer toque.

Então, aqui vem o truque contidas no get_return_url função ($ âncora).

Get_return_url função ()
função get_return_url($ Âncora)
{
 se ($ Query_string = MosGetParam( $ _SERVER, 'QUERY_STRING', '' ))

 {
  $ Retorno = 'Index.php? . $ Query_string;
 }
 mais
 {

  $ Retorno = 'Index.php';
 }
 / / Url começa com um index.php agora
 
 / / Conversão e de & para o cumprimento xtml

 $ Retorno = str_replace( '&', "& ', $ Retorno );
 / / Adicionando âncora para o fim da url

 $ Retorno .="Âncora # $"; / / Adicionando âncora para url
 / / Prepand http:// ao início da url
 retorno sefRelToAbs($ Retorno);

}

Não há milagre nisso. A função só retorna o endereço URL onde funciona (no nosso formulário). Incluindo a âncora.

Por que eu incluí a âncora (html) para o endereço de retorno?

Imagine que o nosso formulário está na parte inferior de uma página muito longa. Se não fosse para a âncora, em seguida, após o envio de dados do usuário verá na parte superior da página e tem que rolar para baixo. Com o usuário de ancoragem será voltar para o lugar que ele votou.

Eu gostaria de voltar sua atenção para Joomla! mosGetParam função específica () também. É a função mais útil. E devem ser usados ​​em formas que você intensamente.

A descrição geral dos mosGetParam () pode ser encontrado aqui. Um dos uso prático segue:

Em vez de usar:

$ _POST ['Somename']

é melhor usar:

mosGetParam ($ _POST, 'somename')

porque ele não só faz algum corte de entrada do usuário indesejado, mas existem algumas outras opções úteis para ele.

No entanto, se você tem muitos dados a serem processados, pode ser bastante tempo de consumo de retirar todos os valores de $ _POST um por um: ou pelo acesso a eles direta ou através da função mosGetParam (). Há um outro truque: use extrato de função php ($ _POST) que constrói variáveis ​​e atribui-lhes nomes de todo o conteúdo de $ _POST.

Observe que usar $ _SERVER na get_return_url function (). $ _SERVER É outra variável php global como $ _POST e pode ser de algum uso em seus scripts também. Se você não sabe o conteúdo das variáveis ​​que você pode mostrá-los em seus scripts usando var_dump ($ somoevaribale) função.

CheckForm função ()

Esta é a função de validação javascript que valida a entrada do usuário contra algumas regras. Que o email é realmente um endereço de e-mail, que o nome não está vazio, etc

Mais uma vez: você pode encontrar vários scripts de validação de fontes de centenas Internet.

Em nosso formulário de demonstração que irá validar o usuário tenha selecionado uma "resposta" botão de rádio. Se não houver "resposta" não enviar os dados, mas mostrar um alerta: