Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Formular in Beitrag
#1
Hallo,

ich wünsche mir ein plugin oder einen mod, der die Angaben aus einem Formular in einen Thread veröffentlicht. Zum besseren Verständnis: ich möchte eine Seite mit Feldern erstellen, in die der User seine Angaben reinschreibt (Formular?) und beim abschicken sollen die Angaben gepostet werden und nicht (wie normalerweise) per email abgeschickt werden. Das Formular bekomme ich selber noch hin, weiss aber nicht, wie ich es hinbekomme, dass es in einem Post veröffentlicht wird. Natürlich sollte dann auch die Beitragsanzahl steigen und man sollte sehen können, dass ein neuer Beitrag existiert. Wäre ganz doll lieb, wenn mir einer helfen könnte.

Ist so etwas möglich?

Schon jetzt ganz lieben Dank, auch wenn es nicht möglich ist.

Liebe Grüsse

naaney
Zitieren
#2
Ist nicht weiter schwierig, der Posthandler nimmt dir die Arbeit ab Wink

Nehmen wir an du hast eine php-Datei für dein Formular definiert und kennst die erforderlichen Daten, somit müsstest du nur folgenden Code einbinden:
PHP-Code:
require_once MYBB_ROOT."inc/datahandlers/post.php";
$posthandler = new PostDataHandler("insert");
$posthandler->action "thread";
$posthandler->admin_override true// Optional, ich habe es lieber drin ^^

$uid $mybb->user[uid];
$username $mybb->user[username];
$fid 0;  // Forum in das der Thread gepostet werden soll
$message $db->escape_string($_POST[message]);
$subject "Formular von ".$username;

$new_thread = array(
                
"fid" => $fid,
                
"subject" => $subject,
                
"uid" => $uid,
                
"username" => $username,
                
"message" => $message,
                
"ipaddress" => get_ip(),
        );

$posthandler->set_data($new_thread);
$validate $posthandler->validate_thread();
if (
$validate)
{
        
$tinfo $posthandler->insert_thread();
        
$tid $tinfo[tid];
        
redirect("showthread.php?tid=$tid");
}
else
{
        
error("Es ist ein Fehler während der Threaderstellung aufgetreten");

Ich habe es zwar nicht getestet, müsste jedoch in dieser Form stimmen. Einfach die Forum-ID oben bestimmen und wenn gewünscht einige optionale Einstellungen übernehmen.
Nach dem erfolgreichen Posten eines Formulars wird der User zum neu erstellten Thread weitergeleitet.
Zitieren
#3
Vieln lieben Dank, werde es heute abend, wenn Ruhe in der Familie eingekehrt ist, gleich mal ausprobiern. Ich melde mich dann. Ist wirklich lieb von dir Smile
Zitieren
#4
Und wie mach ich ein ganzes Formular, das individuell angepasst werden kann? Ich bin noch neu in sachen Coding aber ich versteh zumindest zusammenhänge. (Hab den obrigen code auch verstanden.) Also ich meine eine php datei, in der man das Formular anpassen kann. Z.B: Optionen noch hinzufügen bzw. löschen.

Wäre echt voll lieb von euch.
Gruß Manuel
Bitte erst die Suche und die Doku benutzen.
Zitieren
#5
Da musst du dich selber mit HTML und PHP beschäftigen. Ohne grundlegende Kenntnisse, ist das schwer. Aufgrund der Individualität können wir nur Hilfe geben, aber dir nicht den Code schreiben.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#6
Auch wenn Dragons Beitrag für seinen Vorposter etwas hart erscheinen kann, schreibt er die Wahrheit:
Es würde einfach den allgemeinen Rahmen sprengen, nun zu erklären wie man ein PHP-Script in MyBB einbindet und zudem ein Formular realisieren kann.
Da wir jedoch alle mal Anfänger waren und du - wie du es schon in deinem Beitrag geschrieben hast - Zusammenhänge erkennen und damit arbeiten kannst, werde ich dir einige Hilfestellungen geben.

Für solch ein Vorhaben braucht man die Kombination aus einer PHP-Datei und dem MyBB-Template-System.
Man erstelle sich eine PHP-Datei, welche man im MyBB-Root ablegt.
Wie man sich eigene Seiten für MyBB erstellst kannst du unter folgender URL im offiziellen, deutschen MyBBoard-Projekt nachlesen:
> Weiterleitung

In der obigen Seite wird verdeutlicht, wie man eine eigene Seite erstellt und das Template-System benutzt.

Für ein Formular müsste man nun in dem jeweiligen, selbsterstellten Template mit HTML ein Formular aufbauen.
PHP-Code:
<form action="formular.php?action=do_add" method="post">
 <!-- 
Formularelemente wie input-fields usw //-->
</form
Beim Abschicken dieses Formulars wird (im Idealfall, nehmen wir es einfach mal so an) die gleiche PHP-Datei aufgerufen, die zuvor das von uns erstellte Template ausgab. Mit dem ?action=do_add können wir nun im Script weiterarbeiten, indem wir eine If-Klausel definieren und dann die POST-Daten verarbeiten (Thread erstellen, s. meinen ersten Beitrag)
Mehr Informationen über Formulare:
> Weiterleitung

Ich bin mir sicher das es noch weitere Fragen über diesen Erstellungsprozess geben wird, die du dann jedoch - nach dem Durchlesen der angefügten Materialien - mit "grundlegendem Hintergrundwissen" formulieren kannst, was uns natürlich viel mehr hilft, da wir dann sofort wissen wo geholfen werden muss Smile
Zitieren
#7
Hallo,

nachdem ich nun ein wenig "rumexperimentiert" habe, muss ich auch noch mal nachfragen Rolleyes Bitte nicht erschlagen Big Grin

Ich habe also ein neues Template erstellt:
Zitat:<html>
<head>
<title>{$settings['bbname']} - Suchanfrage</title>
{$headerinclude}
</head>
<body>
{$header}
<form action="Suchanfrage.php?action=do_add" method="post">
Familienname
</br>
<input type="text" name="Familienname">
</br>
Vorname
</br>
<input type="text" name="Vorname">
</br>
Geburtstag
</br>
<input type="date" name="Geburtstag"
</br>
</br>
Geburtsort
</br>
<input type="text" name="Geburtsort">
</br>
<input type="submit" value="Thread starten">
</form>
{$footer}
</body>
</html>
Das scheint auch so ok zu sein, es wird angezeigt und ich kann auch Eintragungen vornehmen.

Ich habe übrigens auch nach der Anleitung bei mybboard gearbeitet umsicherzugehen, nichts zu vergessen Wink

Die erstellte php Datei habe ich ins root des Forums hochgeladen. Wenn ich jetzt aber den code (1. Beitrag XxAnimusxX) einfüge, bekomme ich entweder Fehler 404 (Seite kann nicht angezeigt werden) oder aber folgende Warnung:
Zitat:Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /var/www/web99/html/inc/datahandler.php on line 200

Ich habe jetzt schon verschiedenste Sachen ausprobiert. Mal habe ich das eine oder andere aus der "Original-php" (mybboard) geändert, gelöscht, den code an den verschiedensten Stellen eingefügt usw. Aber ich komme nicht vorwärts. Natürlich habe ich die Namen des templates angepasst Wink
Wo muss denn der code genau rein, wenn ich die php von mybboard benutze?

mybboard.php
Zitat:<?php
define("KILL_GLOBALS", 1);
define("IN_MYBB", 1);
//define("NO_ONLINE", 1); // Wenn Seite nicht in Wer ist online-Liste auftauchen soll

require("global.php");

add_breadcrumb("Impressum");

eval("\$impressum .= \"".$templates->get("impressum")."\";"); // Hier wird das erstellte Template geladen
output_page($impressum);
?>

Zum Schluss noch eben Zeile 200 aus der Datahandler.php:

Zitat:else if(array_key_exists($option, $options) && $options[$option] == '')


Was mache ich falsch? Habe ich was "vergessen?"

Vielleicht ist einer so lieb und gibt mir noch einen kleinen Schubs in die richtige Richtung.

Danke schön Smile
Zitieren
#8
Könntest du uns am besten die 2 Dateien (mybboard.php und Suchanfrage.php) hochladen, damit wir uns die Datei anschauen können?
Es scheint als gäbe es einen Fehler bei der Übergabe der Werte, womöglich wird die Übergabe eines Arrays erwartet, wo jedoch ein String übergeben wird.
Zitieren
#9
Hallo und danke schon mal fürs antworten Smile

Also, ich habe diese impressum.php von mybboard genommen:

Zitat:<?php
define("KILL_GLOBALS", 1);
define("IN_MYBB", 1);
//define("NO_ONLINE", 1); // Wenn Seite nicht in Wer ist online-Liste auftauchen soll

require("global.php");

add_breadcrumb("Impressum");

eval("\$impressum .= \"".$templates->get("impressum")."\";"); // Hier wird das erstellte Template geladen
output_page($impressum);
?>

und alle entsprechenden impressum-Einträge in Suchanfrage-Einträge geändert. Dann habe ich alle möglichen Versuche unternommen, den code von dir dort einzufügen, mit dem genannten Ergebnis. Es gibt also in dem Sinne keine fertige Suchanfrage.php. Egal wo und wie ich den code einsetzte, es kommt entweder Fehler 404 oder aber die genannte Fehlermeldung mit der datahandler.php. Ich könnte dir aber alle meine Versuche des einfügens posten, dass sind aber einige Big Grin

Vielleicht bin ich ja auch nur zu blöd, den code richtig (an die richtige Stelle, muss noch was löschen, es muss noch was anderes rein,...) einzufügen.
Zitieren
#10
Kannst du bitte die Datei mit dem Code von XxAnimusxX posten/hochladen?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren