Urdu Español
Inglés English Deutsch Deutsch Español Español français Français Italiano Italiano Nederlands Nederlands Español Português Русский Русский griego Ελληνικά
Login



 
Bienvenido a Jumi! Tutorial >> >> Alquiler de formas de llamadas en un sitio Joomla! contenido

Hay una gran cantidad de personas que deseen publicar sus formularios personalizados en Joomla! contenido.

Para satisfacer sus necesidades me decidí a escribir este tutorial. El tutorial está dedicado a Joomla! 1.0.x codificación de los principiantes, pero los intermedios pueden encontrar algunos trucos útiles.

En este tutorial paso a paso aprenderás

  • ¿Qué formas de auto enfriamiento del son y para qué sirven,
  • Algunos de los más útiles php y Joomla! Trucos 1.0.x que son relevantes para las formas de llamada auto. Por ejemplo:
    • cómo una secuencia de comandos de capturas que un usuario ha enviado los datos,
    • cómo reconocer una dirección URL en la que el script se ejecuta,
    • cómo apagar el Joomla específico! fuera de la página de caché,
    • lo que Joomla! objeto específico de base de datos $, $ mi, de dónde encontrar a sus métodos y su descripción,
    • etc

¿Qué formas de auto de llamadas son y para qué sirven

Toda forma recoge algunos datos de respuesta.

Los datos recogidos no se quedan en una forma, pero son ellos - por lo general después de pulsar el botón de envío - enviado a algún lugar. Son enviados a una secuencia de comandos de procesamiento que "se sienta" en la otra dirección URL y que - después del preprocesamiento es posible - escribe datos en la base de datos y / o los envía a una dirección de correo electrónico.

Este es el método más común. Y en ese enfoque se basan norma Joomla! formas componentes.

Pero es posible vivir sin el componente de formularios, es posible tener nuestras propias formas de ser incluido en un artículo de contenido. Los formularios se pueden enviar los datos recogidos a la libre y procesarlos. Se les llama así llamadas formas de auto.

Es posible, incluso aún más: para mostrar los resultados del formulario en el artículo mismo contenido.

En este tutorial te mostraré cómo.

Porque tiene que haber algún script php ahí que manipula con los datos del formulario que hará uso del plugin Jumi para incluir estos scripts en el contenido. Si prefiere cualquier otro plugin para la inclusión script PHP en Joomla! el contenido se puede usar también.

Demostración descripción de la forma

A pesar de la forma siguiente demostración es muy concreto puede escribir cada formulario que se puede imaginar por el procedimiento descrito en este tutorial.

No haga pruebas en su servidor de producción pública, pero en el host local sólo!

Supongamos que queremos

  • un formulario de votación que recoge respuestas a las preguntas 3 mutuamente excluyentes,
  • para guardar las respuestas en una base de datos junto con la fecha y hora de la respuesta y junto con la identificación un usuario,
  • para mostrar "gracias" El anuncio y el resumen de los resultados, pero solamente a aquellos usuarios que votaron.

La estrategia básica

Dividir el código en varios pedazos, bloques funcionales y lógicos ofrece muchas ventajas. A pesar de que no se discuten las ventajas que aquí voy a seguir esta buena práctica en general aquí.

Hay dos grandes bloques lógicos en nuestra tarea:

  • Mostrar formulario + + recopilar datos verificarlos + guardar los datos en una base de datos (formulario llamado auto)
  • leer datos de una base de datos y mostrar los resultados.

Así que voy a dividir nuestra aplicación en dos archivos de script también: self_call_form.php y show_results.php.

Vamos a entrar en los detalles en el siguiente.

Pero vamos a empezar con una primera base de datos.

base de datos

Deje que nuestro nombre de la tabla de base de datos es xxx_mytable_test donde xxx es tu sitio Joomla! prefijo de la base de datos. Algunos Joomla! los usuarios que los demás tienen el prefijo prefijo jos meses. Asumo prefijo Jos en el siguiente.

Repito, nuestra tarea es para almacenar la fecha y hora de grabación, la identificación de usuario y una respuesta.

Sin entrar en bases de datos MySQL y los detalles del diseño de tablas que se pueden encontrar en otras partes de la estructura de la tabla se describe en el lenguaje de MySQL serán los siguientes:

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

El identificador de campo se acaba de agregar para la identificación de la tabla de registro único.

Usted tiene que crear la tabla en su base de datos de Joomla. Verifique que su prefijo es jos_. Si todavía está mos_, cambiar el prefijo de la tabla.

Usted puede crear la tabla a través de phpMyAdmin, ya sea manualmente o automáticamente por copiar y pegar de la declaración de MySQL por debajo.

Voy a asumir la jos_mytable_test tabla se crea a partir de ahora.

self_call_form.php

Existen básicamente dos métodos por los cuales se comunican formulario con su entorno: POST y GET. GET envía (y lee) los datos de apéndice de la URL. No vamos a utilizar el método GET aquí.

El método POST escribe datos en la variable global de php $ _POST. Así que tenemos pleno acceso a los datos enviados.

Algoritmo general de la self_call_form.php

Si no hay datos relevantes en $ _POST, es decir, no hay una respuesta de un usuario, a continuación, mostrar la forma. Si el usuario responde, y luego darle las gracias y escribir la respuesta (y otros datos) en la base de datos.

El algoritmo anterior traducido a lenguaje PHP se parece a este código:

función self_form()
 / / Nombre del botón de radio (en este caso "respuesta") debe ser un nombre de columna en una base de datos también!
{

 $ Anclaje  =  "MyForm";  / / La variable $ anclaje vamos a necesitar más adelante
 eco "Nombre =  ";  / / El ancla HTML que necesitaremos más adelante
 eco "Blockquote";  / / Forma de contenedor

 if(!isSet($ _POST['Respuesta'])) / / Si no hay respuesta, entonces escribir la forma
 {
  $ Return_url = Get_return_url($ Anclaje);
  
  eco "
"; eco "

¿Has encontrado útil este tutorial? "; eco "Type='radio' name='answer' Absolutamente no.\n"; eco "Type='radio' tan así.\n"; eco "Type='radio' name='answer' Sí. Gracias por ello.\n"; eco " "; eco ""; } más / / Si no hay una respuesta gracias y escribir la respuesta en la base de datos { eco " Gracias por tu voto ";   write_data($ _POST['Respuesta']); } eco ""; }

La explicación y algunos trucos

Función de PHP isSet ("respuesta") comprueba "respuesta" el clima que existe en $ _POST.

Queremos que el formulario para enviar los datos a sí mismo. Eso significa que a la dirección URL misma (forma y su secuencia de comandos de procesamiento se puede encontrar en la misma URL). Podemos utilizar la dirección URL codificada duro de una página o, como en nuestro caso, podemos obtener la URL de un entorno de Joomla utilizando un simple truco. Utilizando el truco es mejor que el primer enfoque de código duro, porque nuestro código se puede reutilizar en varias páginas sin ningún tipo de contacto.

Así que aquí viene el truco que figura en el get_return_url función ($ ancla).

Función get_return_url ()
función get_return_url($ Anclaje)
{
 if ($ QUERY_STRING = MosGetParam( $ _SERVER,  'QUERY_STRING',  '' ))

 {
  $ Regresar  =  'Index.php?  .  $ QUERY_STRING;
 
 }
 más
 {

  $ Regresar  =  'Index.php';
 
 }
 / / URL comienza con un index.php ahora

 
 
 / / Convertir y para el cumplimiento de & XTML

 $ Regresar  =  str_replace( '&',  '&',  $ Regresar );
 
 / / Añadiendo ancla hasta el final de url

 $ Regresar  .="# $ Ancla";  / / Suma de anclaje para url
 / / Prepand http:// al principio de la URL
 retorno sefRelToAbs($ Regresar);



}

No hay milagro en él. La función sólo devuelve la dirección URL donde se ejecuta (en el formato). Incluyendo el ancla.

¿Por qué he incluido el ancla (html) en la dirección de retorno?

Imagínese que nuestra forma es en la parte inferior de una página muy larga. Si no fuera por el ancla a continuación, después de enviar los datos del usuario se ve la parte superior de la página y tiene que desplazarse hacia abajo. Con el anclaje de usuario se vuelva al lugar que votó a favor.

Me gustaría llamar su atención a Joomla! mosGetParam función específica () también. Es la función más útil. Y se debe utilizar en forma intensiva a.

La descripción general de mosGetParam () se pueden encontrar aquí. Uno de los uso práctico sigue:

En lugar de usar:

$ _POST ['Algunnombre']

es mejor utilizar:

mosGetParam ($ _POST, 'algunnombre')

porque no sólo hace algo de limpieza de la entrada del usuario no deseada, pero hay algunas otras opciones útiles en él.

Sin embargo, si usted tiene muchos datos para ser procesados ​​puede ser bastante tiempo consuntivo de retirar todos los valores de $ _POST, uno por uno: ya sea por contacto directo oa través de ellas el acceso a mosGetParam () función. Hay un truco a otro: el uso de extracto de la función de PHP ($ _POST) que construye las variables y les asigna los nombres de todo el contenido de $ _POST.

Notificación que utilizar $ _SERVER en el get_return_url function (). $ _SERVER Es una variable php mundial como $ _POST y puede ser de algún uso en las secuencias de comandos también. Si usted no conoce el contenido de las variables que pueden mostrar en sus scripts usando var_dump ($ somoevaribale) función.

Función checkForm ()

Esta es la función de validación de Javascript que valida la entrada del usuario en contra de algunas normas. Este correo electrónico es en realidad una dirección de correo electrónico, que el nombre no está vacío, etc

Una vez más: usted puede encontrar varios scripts de validación de las fuentes de cientos de internet.

En nuestra forma de demo vamos a validar que el usuario ha seleccionado una "respuesta" botón de radio. Si no hay una "respuesta" no presentar los datos, pero muestran un mensaje de alerta: