[3.3]Ext erstellen - Frage wegen DB,php,mysql

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
moby2006
Mitglied
Beiträge: 31
Registriert: 09.01.2020 13:53

[3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von moby2006 »

Hallo an alle,
Ich dachte mir , ich muss jetzt auch mal eine Frage stellen, bis jetzt war ich jahrelang nur stiller leser.
Ich möchte auch an dieser stelle ersmal an alle Danke sagen für den Support und für die Beiträge die man hier findet.

Es geht um Coding:
Ich habe die Demo Ext. viewtopic.php?f=140&t=229654 installiert,
ich habe es auch so gut ich es konnte angepasst. Das beste war, ich habe es geschafft Links
in meine EXT am ende ACP/Erweiterungen hizugefügt. (Linke Seite)
Es gibt 4 Links und jedem ein Template zugewiesen.....:D

[ externes Bild ]
[ externes Bild ]

Momentan ist es so:
Ich habe mir 2 Tabellen über Migration anlegen lassen.
Beim Installieren der Ext werden die 2 Tabellen angelegt, beim Deinstallieren werden sie auch gelöscht, allso alles Prima.
In einem Template habe ich jetzt eine Form, die mir Daten in die Datenbank schreibt , alles super .

In der Form habe ich eine action="upload.php" angegeben.
ich weiss das mal {U_ACTION} drin stand , was ich nicht verstehe , wie schaff ich es das :

- Absenden über form inerhalb meiner extension und nicht Extern (Externe Datei)
- Datenbank ausgabe unterhalb des templates in eine Tabelle, unterhalb der form soll die ausgabe sein.
- db query insert und ausgabe
- mein Template ist im ext/extName/adm/style/templateName.html

Info:
Ich habe jetzt kein Project, dachte mir nur als Test zum lernen.
wollte eigendlich alle Language Variablen plus Übersetzung
id,text,ext,coder,lang etc in Datenbank schreiben

Vielleicht kann mir ja jemand Tipps geben wie das funktioniert.....
Schade das es nur zu wenig Doku darüber gibt, als leihe ist das nicht leicht......


MFG
Danke an alle
Verschoben von Coding & Technik nach Extension Bastelstube am 29.09.2021 14:25 durch Crizzo

Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2109
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von LukeWCS »

Hallo
moby2006 hat geschrieben: 29.09.2021 14:20 wollte eigendlich alle Language Variablen plus Übersetzung
id,text,ext,coder,lang etc in Datenbank schreiben
Okay, das Ganze dient wohl primär zum testen/reinschnuppern, wenn ich dich richtig verstanden habe. Aber mir ist nicht klar, warum möchtest du Sprachvariablen in der DB ablegen? Genau dafür hat phpBB das Sprachsystem, bei dem alle Sprachvariablen in einer Sprachdatei eingetragen werden können, die dann von einer Ext geladen werden kann. Da ist die DB komplett aussen vor.
Vielleicht kann mir ja jemand Tipps geben wie das funktioniert.....
Schade das es nur zu wenig Doku darüber gibt, als leihe ist das nicht leicht......
Nein, leicht ist es wirklich nicht, der Einstieg ist schon ziemlich happig. :wink: Auch weil man sich da mit vielen verschiedenen Bereichen beschäftigen muss, das ist sehr komplex. Es hängt aber auch davon ab, ob man schon Programmierkenntnisse in einer anderen Sprache mitbringt, oder ob man vielleicht schon Kenntnisse in PHP hat.

Der Link den Kollege chris1278 geschrieben hat, ist schon mal der erste und wohl wichtigste Einstieg, damit sollte man beginnen.

Parallel dazu solltest du dir unbedingt auch bereits vorhandene Exts anschauen: Extensions in Entwicklung

Dabei solltest du dir für den Anfang aber eher die kleineren Exts heraussuchen, nicht gleich die ganz schweren Kaliber, weil diese zum Verständnis bereits sehr solide Kenntnisse in PHP und phpBB Ext voraussetzen.

edit: Für den Anfang sehr hilfreich ist auch die Skeleton Ext: Eine "Skeleton-Extension" erstellen. Mit dieser Ext kannst du - wie der Name schon andeutet - ein Ext Skelett nach dem Baukastenprinzip erstellen, in dem du auswählst, was du haben möchtest. Dabei bekommst du dann schlussendlich ein ZIP Archiv mit der neuen Ext. Das dient also dazu ein Ext Skelett mit Grundstruktur zu erstellen und genau diese Grundstruktur ist es, was für Einsteiger die erste Hürde darstellt.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
moby2006
Mitglied
Beiträge: 31
Registriert: 09.01.2020 13:53

Re: [3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von moby2006 »

LukeWCS hat geschrieben: 29.09.2021 15:15 Hallo
Okay, das Ganze dient wohl primär zum testen/reinschnuppern, wenn ich dich richtig verstanden habe. Aber mir ist nicht klar, warum möchtest du Sprachvariablen in der DB ablegen?
Erstmal Dankeschön,
Sehr Nett und aufschlussreich.
Ich dachte mir das ganze so , wenn eine Extension mit Version x.x.x geschrieben wurde , habe ich ja meistens im Ordner Language/en,
die Varablen, dann übersetze ich in Deutsch , nach einem Update muss ich ja , alles durchsuchen ob es, eine neue, Sprachvariable gibt oder nicht.

Deswegen wollte ich über ein Formular alles in die Datenbank schreiben und dann Filtern.
Das gleiche habe ich auch mal als xml getan.

So weit so gut.

Kann mir denn jemand sagen wie ich {U_ACTION} benutzen kann, nach dem abschicken soll es in die Datenbank geschrieben werden ,
ausgabe sollte dann darunter sein als Tabelle. Ist sowas schwer???

Vielen Dank
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von chris1278 »

Arbeite mal die Doku ab die ich dir geschickt habe. Dort wird der Aufbau der ext die du zum Vorbild hast schritt für schritt erklärt. Einfach mal das nachbauen was dort steht. Das sollte schonmal ein ganzes stück weiter bringen.

Um mal kurz auf die U_ACTION Geschichte einzugehen.

Das wird in der Modul Datei die sich im Ordner adm befindet definiert.

als Beispiel:

Wenn du in deiner Modul Datei (modul.html) in etwa folgendes stehen hast (hier mal der aufbau aus der doku die ich verlinkt hatte)

Code: Alles auswählen

{% INCLUDE 'overall_header.html' %}

<h1>{{ lang('SETTINGS') }}</h1>

<form id="acp_board" method="post" action="{{ U_ACTION }}">
    <fieldset>
        <dl>
            <dt><label for="acme_demo_goodbye">{{ lang('ACP_DEMO_GOODBYE') }}</label></dt>
            <dd><input type="radio" class="radio" name="acme_demo_goodbye" value="1" {% if ACME_DEMO_GOODBYE %}checked="checked" {% endif %}/> {{ lang('YES') }} &nbsp;
                <input type="radio" class="radio" name="acme_demo_goodbye" value="0" {% if not ACME_DEMO_GOODBYE %}checked="checked" {% endif %}/> {{ lang('NO') }}</dd>
        </dl>

        <p class="submit-buttons">
            <input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
            <input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
        </p>

        {{ S_FORM_TOKEN }}
    </fieldset>
</form>

{% INCLUDE 'overall_footer.html' %}

Dann sollte dir spätestens bei der zeile:

<form id="acp_board" method="post" action="{{ U_ACTION }}"> das U_ACTION ins gesicht lachen. Damit wird definiert das alles was ebenin der form klasse steht ausgeführt wird.
Benutzeravatar
IMC
Mitglied
Beiträge: 541
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von IMC »

chris1278 hat geschrieben: 29.09.2021 17:23 Dann sollte dir spätestens bei der zeile:

<form id="acp_board" method="post" action="{{ U_ACTION }}"> das U_ACTION ins gesicht lachen. Damit wird definiert das alles was ebenin der form klasse steht ausgeführt wird.
Genau so ist es. {{ U_ACTION }} ist eine phpBB Variable die das Ziel der Formulardaten angibt. Bei dem Formular im ACP werden die Daten per POST an das main_modul gesendet. Dort kannst du die Einträge des Formulars für deine Extension verarbeiten und ggf. in der Datenbank speichern.

Dies findest du in dem von chris1278 verlinkten Tutorial an dieser Stelle.

Code: Alles auswählen

$request->variable('acme_demo_goodbye', 0)
In dieser Variable befindet sich der Wert aus dem INPUT Element mit dem Namen "acme_demo_goodbye".
Gruß, Thorsten
moby2006
Mitglied
Beiträge: 31
Registriert: 09.01.2020 13:53

Re: [3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von moby2006 »

IMC hat geschrieben: 30.09.2021 19:44 Dies findest du in dem von chris1278 verlinkten Tutorial an dieser Stelle.

Code: Alles auswählen

$request->variable('acme_demo_goodbye', 0)
In dieser Variable befindet sich der Wert aus dem INPUT Element mit dem Namen "acme_demo_goodbye".
Vielen Dank an alle die mir bis jetzt geholfen haben.
Bin leider noch nicht weiter gekommen, das mit der Variable an welcher stelle die sich befindet habe ich verstanden und auch gefunden.

Was ich nicht verstehe:
Wie spreche ich die Felder an in der form -> name="username " als beispiel

aus dem Modul main_module.php selbst ist ja die config der variable zugewiesen

Code: Alles auswählen

$request->variable('acme_demo_goodbye', 0)
brauche ich das nicht im Modul

Code: Alles auswählen

$usernames = $this->request->variable('usernames', '', true);
und das für jedes Feld.

zuletzt, wo muss ich die abfrage der sql hinschreiben ......

Code: Alles auswählen

if ($request->is_set_post('submit'))
		{
			if (!check_form_key('moby2006/test'))
			{
				trigger_error('FORM_INVALID');
			}

			$config->set('moby2006_test_goodbye', $request->variable('moby2006_test_goodbye', 0));

                    // sql anweisung
                      ---->
                      
                      
			trigger_error($user->lang('ACP_DEMO_SETTING_SAVED') . adm_back_link($this->u_action));
		}
Wer echt sehr nett wenn jemand mir helfen kann

Wenn das jetzt totaler blödsinn ist entschuldige ich mich....

lg
moby2006
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7868
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: [3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von Kirk »

Was genau soll eigentlich angezeigt werden?
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3]Ext erstellen - Frage wegen DB,php,mysql

Beitrag von chris1278 »

Das mit der SQL Anweisung so wie du es hast vergiss. Das ist für nomale submit funktion eigentlich indem Fall nicht nötig.
Wobei das auch auf die Funktion oder andere umstände ankommt.

Als Beispiel.

Wir legen zwei werte an. ! Wert mit ja/nein abfrage einen Wert mit string (text)abfrage bzw. eingabe:

Die Einträge in der Modul datei würden so lauten:

Code: Alles auswählen

	if ($this->request->is_set_post('submit'))
	{
		if (!check_form_key('chris1278_metainfo'))
		{
			trigger_error('FORM_INVALID');
		}
		$this->config->set('ja_nein_wert', $this->request->variable('ja_nein_wert', 0));
		$this->config->set('text_wert', $this->request->variable('text_wert', '', true));
		
			trigger_error($this->language->lang('EXT_SPARACHVARIABVLE_FÜR_UPDATE_ANZEIGE') . adm_back_link($this->u_action));
	}
		$this->template->assign_vars([
		
		'JA_NEIN_WERT'									=>	$this->config['ja_nein_wert'],
		'TEXT_WERT'										=>	$this->config['text_wert'],
		'U_ACTION'										=>	$this->u_action,
		]);
Ich hab das jetzt exzra mal JA_NEIN_WERT oder TEXT_WERT genannt. Der JA/Nein Wert ist ein Wert wahr oder falsch abfrage. Damit lassen sich beispielsweise IF statment schalter für Templates generieren. Als beispiel für die template ausgabe:

Code: Alles auswählen

{% if JA_NEIN_WERT %}
Ausgabe html code
{% endif %}
Das ganze könnte man auch noch mit ner else variabel aufbauen aber das geht erstmal zu weit.

Das zweite ist ein Textwert spricht wenn man im ACP in der Erweiterung Begriffe oder Texte einfügen will die man mittels Variable im Template ausgeben möchte.

Hier mal ein passendenes html file für das modul:

Code: Alles auswählen

{% INCLUDE 'overall_header.html' %}

<a id="maincontent"></a>

	<h1 class="metainfo-page-title">{{ lang('ACP_MODULNAME') }}	</h1>
	<p>{{ lang('ACP_MODULNAME_EXPLAIN') }}</p>
	
	<form id="acp_extname" method="post" action="{{ U_ACTION }}">
	<fieldset>
		<legend>{{ lang('FELDNAME') }}</legend>
		<dl>
			<dt><label for="ja_nein_wert">{{ lang('JA_NEIN_WERT_TITLE') ~ lang('COLON') }}</label><br /><span>{{ lang('JA_NEIN_WERT_TITLE_EXPLAIN') }}</span></dt>
			<dd>
				<label><input type="radio" class="radio" name="ja_nein_wert" value="1"{% if JA_NEIN_WERT %} id="ja_nein_wert" checked="checked"{% endif %} /> {{ lang('YES') }}</label>
				<label><input type="radio" class="radio" name="ja_nein_wert" value="0"{% if not JA_NEIN_WERT %} id="ja_nein_wert" checked="checked"{% endif %} /> {{ lang('NO') }}</label>
			</dd>
		</dl>
		<dl>
			<dt><label for="text_wert">{{ lang('TEXT_WERT_TITLE') ~ lang('COLON') }}</label><br><span>{{ lang('TEXT_WERT_TITLE_EXPLAIN') }}</span></dt>
			<dd>
				<input type="text" name="text_wert" id="text_wert" maxlength="65" size="40" value="{{ TEXT_WERT }}"/>
			</dd>
		</dl>
	</fieldset>
	
	<p class="submit-buttons">
		<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
		<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
	</p>
	{S_FORM_TOKEN}
</form>
{% INCLUDE 'overall_footer.html' %}
Man kann auch als eingabe Feld eine Textarea machen wobei es drauf ankommt für was man ein eingabe feld braucht. für textare würde dann dies so aussene anstelle der Zeile die mit <input type="text" müsstest du dann die Zeile so formulieren:

Code: Alles auswählen

<textarea type="text" name="text_wert" id="text_wert" maxlength="160">{{ TEXT_WERT }}</textarea>
So und die Bezug auf die eintrragungen in der Moduldatei werden durch das jeweilige id gegeben. Und zwar das was hier drin steht:

<label for="ja_nein_wert">
Antworten

Zurück zu „Extension Bastelstube“