Urdu Deutsch
Englisch English Deutsch Deutsch Español Español français Français Italienisch Italiano Holländisch Nederlands Português Português Russisch Русский Ελληνικά Ελληνικά
Login



 
Willkommen bei Jumi! Tutorial >> >> Eigener Aufruf Formen in einer Joomla! Inhalt

Es gibt eine Menge Leute, die ihre benutzerdefinierten Formularen in einer Joomla veröffentlichen möchten! Inhalte.

Um ihre Bedürfnisse zu erfüllen habe ich beschlossen, dieses Tutorial zu schreiben. Das Tutorial ist auf Joomla gewidmet! 1.0.x Codierung Anfänger, sondern Zwischenzertifizierungsstellen kann ein paar Tricks gefunden nützlich.

In diesem Schritt für Schritt Anleitung lernen Sie,

  • was selbst Colling Formen sind und zu welchem ​​Zweck sie dienen,
  • einige nützlichsten PHP und Joomla! 1.0.x Tricks, die für sich selbst Berufung Formen sind. Z. B.:
    • , wie ein Skript fängt, dass ein Benutzer Daten gesendet werden,
    • Wie erkenne ich einen URL-Adresse, unter der das Skript ausgeführt wird,
    • wie zum Ausschalten des spezifischen Joomla! Seiten-Cache ab,
    • was Joomla! bestimmtes Objekt $ database, $ sind meine, wo sie ihre Methoden und ihre Beschreibung zu finden,
    • usw.

Was selbst Berufung Formen sind und zu welchem ​​Zweck sie dienen

Jede Form speichert einige Daten von Respondern.

Die gesammelten Daten nicht in einer Form zu bleiben, aber sie sind - in der Regel nach dem Drücken Submit-Button - irgendwo geschickt. Nach Vorverarbeitung möglich - - schreibt Daten in die Datenbank oder / und sendet sie an eine E-Mail-Adresse Sie werden bis zu einem gewissen Verarbeitung Skript, das "sitzt" auf eine andere URL-Adresse und diesem übergeben.

Dies ist die häufigste Methode. Und auf diesem Ansatz beruhen Standard Joomla! Formen Komponenten.

Aber es möglich ist, ohne Formen Komponente leben, ist es möglich, unsere eigenen Formen müssen in ein Content-Artikel aufgenommen werden. Formulare können erhobenen Daten zur Selbsthilfe zu senden und zu verarbeiten. Sie werden so genannt, selbst Berufung Formen.

Es ist sogar möglich noch mehr: um die Ergebnisse in Form gleichem Inhalt Artikels anzeigen.

In diesem Tutorial zeige ich Ihnen wie.

Da muss es einen PHP-Script gibt, die mit Formulardaten manipuliert werde ich Gebrauch von Jumi-Plugin für die Aufnahme dieser Skripte in den Inhalt zu machen. Sollten Sie es vorziehen einen anderen Plug-in für PHP-Skript Aufnahme in Joomla! Inhalte können Sie es auch verwenden.

Demo Formularbeschreibung

Obwohl die folgende Demo-Form ist sehr konkret können Sie schreiben jedes Formular, das Sie durch den Ansatz in diesem Tutorial erklärt sich vorstellen können.

Machen Sie keine Tests auf Ihrer öffentlichen Produktions-Server, sondern auf Ihrem lokalen Host nur!

Nehmen wir an, wir wollen

  • ein Wahlzettel, die Antworten auf 3 gegenseitig ausschließen Fragen sammelt,
  • Antworten in einer Datenbank zusammen sparen mit Datum und Uhrzeit der Antwort und zusammen mit einer Benutzer-Identifikation,
  • um "Danke" Ankündigung und Zusammenfassung der Ergebnisse zeigen aber nur für diejenigen Nutzer, die gewählt haben.

Grundlegende Strategie

Splitten Sie den Code in mehrere Teile, funktionale und logische Blöcke bietet viele Vorteile. Obwohl ich nicht die Vorteile diskutiert wird hier werde ich diese allgemeine gute Praxis hier zu folgen.

Es gibt zwei wesentliche logische Blöcke in unserer Aufgabe:

  • zeigen, bilden + + sammeln Daten zu verifizieren + Speichern von Daten in eine Datenbank (Selbst Berufung Formular)
  • Lesen von Daten aus einer Datenbank und zeigen die Ergebnisse.

Also werde ich unsere Anwendung in zwei Skript-Dateien zu spalten: self_call_form.php und show_results.php.

Wir werden in die Details im folgenden gehen.

Aber lassen Sie uns mit einer Datenbank zum ersten Mal starten.

Datenbank

Lassen Sie unsere Datenbank Name der Tabelle ist xxx_mytable_test wobei xxx für Ihre Joomla! Datenbank-Präfix. Einige Joomla! Benutzer haben Jos Präfix andere haben MOS-Präfix. Ich werde Jos Präfix im folgenden annehmen.

Ich wiederhole unsere Aufgabe ist das Aufzeichnen von Datum und Uhrzeit, Benutzer-Identifikation und eine Antwort zu speichern.

Ohne auf die MySQL-Datenbank und Tabellen-Design Details, die an anderer Stelle gefunden werden kann die Struktur der Tabelle in MySQL Sprache beschrieben werden:

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 (15) NOT NULL default 'host',
`Beantworten` int (6) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE = MyISAM;

Das Feld ID wurde nur für die Tabelle Datensatz eindeutige Identifikation hinzugefügt.

Sie müssen die Tabelle in Ihrer Joomla-Datenbank zu erstellen. Stellen Sie sicher, dass Ihr Präfix jos_ ist. Wenn es noch mos_, ändern Sie den Tabellen-Präfix.

Sie können eine Tabelle über phpMyAdmin entweder manuell oder automatisch durch copy-paste von der MySQL-Anweisung oben zu schaffen.

Ich nehme die Tabelle jos_mytable_test ab jetzt erstellt wird.

self_call_form.php

Es gibt grundsätzlich zwei Methoden, mit denen eine Form kommunizieren mit ihrer Umgebung: POST und GET. GET sendet (und liest) Daten aus URL-Anhang. Wir verwenden hier GET-Methode.

POST-Methode schreibt Daten auf globale PHP-Variable $ _POST. So haben wir vollen Zugriff auf die Daten gesendet hier.

Allgemeine Algorithmus der self_call_form.php

Wenn es keine relevanten Daten in $ _POST sind, dh es gibt keine Antwort von einem Benutzer, dann zeige Form. Wenn der Benutzer beantwortet, dann danke ihm und schreiben Sie die Antwort (und andere Daten) in die Datenbank.

Der obige Algorithmus in PHP-Sprache übersetzt sieht aus wie diesem Code:

Funktion self_form()
 / / Radio-Taste (hier "Antwort") muss ein Spaltenname sein, in einer Datenbank zu!
{

 $ Anker  =  "MyForm";  / / Die Variable $ Anker werden wir später noch brauchen
 Echo " ";  / / HTML-Anker die wir später noch brauchen
 Echo "
"; / / Formular-Container if(!isSet($ _POST["Antwort"])) / / Wenn es keine Antwort schreiben dann die Form { $ Return_url = Get_return_url($ Anker); Echo "
"; Echo "

Haben Sie gefunden, dieses Tutorial hilfreich? "; Echo " Absolut keine.\n"; Echo " So so.\n"; Echo " Ja. Dank dafür.\n"; Echo " "; Echo ""; } sonst / / Wenn es eine Antwort danken und schreiben Sie die Antwort in die Datenbank { Echo " Vielen Dank für Ihre Abstimmung ";   write_data($ _POST["Antwort"]); } Echo ""; }

Die Erklärung und ein paar Tricks

PHP-Funktion isset ("Antwort") prüft Wetter "Antwort" existiert in $ _POST.

Wir wollen, dass das Formular, um Daten an sich selbst senden. Das heißt, auf den gleichen URL-Adresse (Form und ihrer Verarbeitung Skript kann unter der gleichen URL zu finden). Wir können hart codierte URL-Adresse einer Seite oder, wie in unserem Fall, können wir die URL von Joomla Umwelt gelangen mit einem einfachen Trick. Mit dem Trick ist besser als der erste hart codierten Ansatz, weil unser Code ist wiederverwendbar in verschiedenen Seiten ist jedoch ohne Berührung.

So, hier kommt der Trick in der Funktion get_return_url ($ Anker) enthalten sind.

Get_return_url Funktion ()
Funktion get_return_url($ Anker)
{
 if ($ QUERY_STRING = MosGetParam( $ _SERVER,  'QUERY_STRING',  '' ))

 {
  $ Zurück  =  'Index.php?'  .  $ QUERY_STRING;
 
 }
 sonst
 {

  $ Zurück  =  'Index.php';
 
 }
 / / Ein URL beginnt mit index.php jetzt

 
 
 / / Umwandlung von & für XTML Einhaltung &

 $ Zurück  =  str_replace( '&',  "&",  $ Zurück );
 
 / / Hinzufügen von Anker bis zum Ende der URL

 $ Zurück  .="# $ Anker";  / / Hinzufügen Anker zu url
 / / Prepand http:// dem Anfang der URL
 Rückkehr sefRelToAbs($ Zurück);



}

Es gibt keine Wunder in ihm. Die Funktion liefert nur URL-Adresse, wo es läuft (in unserem Formular). Inklusive den Anker.

Warum habe ich die (HTML) Anker in die Absender-Adresse enthalten?

Stellen Sie sich vor, dass unser Formular am Ende eines sehr langen Seite ist. Wenn es nicht für den Anker dann nach dem Senden von Daten Anwender sehen den oberen Rand der Seite und hat nach unten zu scrollen. Mit Verankerung Benutzer wird an den Ort, den er gewählt werden, zurückzukehren.

Ich will Sie darauf aufmerksam zu machen Joomla! spezifische Funktion mosGetParam () zu. Es ist die nützlichste Funktion. Und sollten Sie bildet in intensiver genutzt werden.

Die allgemeine Beschreibung der mosGetParam () gefunden werden kann hier. Eines der praktischen Anwendung folgt:

Anstelle der Verwendung von:

$ _POST ['Somename']

Es ist besser zu nutzen:

mosGetParam ($ _POST, 'somename')

weil es nicht nur einige Trimmen unerwünschter Benutzereingaben aber es gibt einige andere nützliche Optionen in ihm.

Allerdings, wenn Sie viele Daten verarbeitet werden müssen, kann sehr viel Zeit in konsumtive, um alle Werte aus $ _POST eins nach dem Rücktritt sein: entweder durch direkte Zugriff auf sie oder über mosGetParam ()-Funktion. Es ist ein weiterer Trick: Verwendung von PHP-Funktion extract ($ _POST), die Variablen baut und weist sie Namen von allen Inhalten von $ _POST.

Beachten Sie, wir verwenden $ _SERVER in der Funktion get_return_url (). $ _SERVER Ist ein weiteres PHP globale Variable wie $ _POST und kann von einem gewissen Einsatz in Ihren Skripts zu sein. Wenn Sie nicht wissen, den Inhalt von Variablen können Sie sie in Ihre Skripte mit var_dump ($ somoevaribale) Funktion zu zeigen.

Function checkForm ()

Dies ist die Validierung Javascript-Funktion, die Benutzereingaben gegen einige Regeln validiert. Das E-Mail ist wirklich eine E-Mail-Adresse, der Name ist, dass nicht leer, etc.

Nochmals: Sie können verschiedene Validierungsskripts auf hunderten Internet-Quellen zu finden.

In unserem Demo-Form werden wir überprüfen, dass Benutzer eine "Antwort" Radio-Button ausgewählt. Wenn es keine "Antwort" werden keine Daten, sondern zeigen eine Warnung: