Übergabe von Formulardaten an ein anderes dynamisches Formular
Crystin
- php
Hallo,
Ich habe eine Seite auf der man Fragen stellen kann.(ähnlich http://iq.lycos.de)
Nun möchte auf der startseite nicht das ganze eingabeformular der frage zeigen sondern nur eine textbox mit submitbutton. Dieser soll die eingegebene Frage an das richtige formular weiterleiten. Genau wie bei iq.lycos.de soll es werden.
http://www.saymore.de/ausgehen/add-listing.html
Dieses "richtige" formular wird dynamisch aus einer datenbank erstellt.
Das feld in der meine frage eingefügt werden soll hat glücklicherweise eine id und einen namen. Vieleicht kann man damit etwas anfangen.
Ich hab jetzt eine php datei mit folgenden daten zusammengebastelt:
<form action="ausgehen/add-listing.html" method="post" name="adminForm">
<input name="link_name" type="text" id="link_name" value="<?php $_POST['link_name'];?>" size="24" border="0" />
<input name="senden" type="submit" border="0">
</form>
die frage wird mir zwar ausgegeben aber nicht in dem dafür vorgesehen feld sondern im content meiner seite.
Nun meine Frage: Wie realisiere ich das mein feld mit der eingabe gefüllt wird?
<form action="ausgehen/add-listing.html" method="post" name="adminForm">
<input name="link_name" type="text" id="link_name" value="<?php $_POST['link_name'];?>" size="24" border="0" />
<input name="senden" type="submit" border="0">
</form>die frage wird mir zwar ausgegeben aber nicht in dem dafür vorgesehen feld sondern im content meiner seite.
Das Problem kann ich auf deiner Seite nicht nachvollziehen. Ich sehe dort nur ein vollständiges Formular, d.h. mit Detailfeld, welches auch zu funktionieren scheint. Eines, in dem nur der Titel einzugeben ist, habe ich nicht gefunden.
Was mir jedoch aufgefallen ist, sind folgende Dinge:
1.
<?php $_POST['link_name'];?> kann nicht funktionieren, weil dort keine Anweisung vorhanden ist, die etwas mit der Variable $_POST['link_name'] anstellt. Bei der Gelegenheit möchtest du die Ausgabe auch mit htmlspecialchars() absichern.
2.
Das Formular unter http://www.saymore.de/ausgehen/add-listing.html funktioniert unnötigerweise nur mit eingeschaltetem Javascript.
3.
Um den Platz zu finden, an dem man seine Frage eintippen kann, muss man schon recht genau hinschauen. Das kleine "Frage stellen" rechts oben ist mir jedenfalls erst nach einem halben Dutzend Durchklicken aufgefallen.
Hast recht mit dem frage hinzufügen ist nicht sonderlich groß zu erkennen.
deswegen auch auf der startseite irgendwannmal wenn ich es schaffe dieses neue formular welches sich hier auf der testseite:
http://www.saymore.de/frage-stellen.html befindet.
Es wird später auf der startseite sein groß und unübersehbar.
das javascript brauche ich um die kategorie auswählen zu können falls einer der meinung ist es soll doch ein andere kategorie sein.
wie könnte ich das nun machen rein codetechnisch?
Das Formular soll an richtige Formular die eingegeben daten senden und das feld ausfüllen.
Hello,
Nur BTW:
im Impressum fehlt der Vorname des Verantwortlichen. Ein Anfangsbuchstabe reicht nicht
Aber zum Thema. Ich habe nicht verstanden, was Du schon hast und was Du da einbauen willst.
Vielleicht könntest Du das nochmal losgelöst von der Technik, mit der es später realisiert werden könnte, erläutern.
Ein harzliches Glückauf
Tom vom Berg
Impressum wird sofort geändert.
Ich möchte das die besucher meiner seite gleich auf der startseite eine inputbox mit button (formular)sehen.
(hab ich soweit auf meiner testseite http://www.saymore.de/frage-stellen.html)
Das ist nötig um nicht immer in die Kategorien navigieren zu müssen.
(einfach nur eine erleichterung)
Weiter im text.
dieses formular der startseite sollte eine frage (text) aufnehmen welche mit dem button abgeschickt wird und mich auf die seite meines 2. formular bringt.
empfänger dieser sendung sollte mein 2.formular sein.
http://www.saymore.de/ausgehen/add-listing.html
(welches sich dann öffnet und die frage im dafür vorgesehenen feld (Geben Sie ihre Frage ein)schon erscheint.
Dieses Feld sollte schon ausgefüllt sein (mit den daten des 1.Formulars)wenn ich auf dieser Seite ankomme. Ich muß es nicht noch einmal ausfüllen.
Nur ausgefüllt sein mehr nicht!!!
Beispiel: http://iq.lycos.de hat das genauso gelöst.
Geh bitte einmal auf meine testseite und schau es dir an
http://www.saymore.de/frage-stellen.html
Hello,
ich steige da noch immer nicht durch, WAS Du da bastelst?
<form action="index.php?option=com_mtree&Itemid=0&cat_id=42&lang=en-GB&task=addlisting" method="post" name="adminForm">
<input name="link_name" type="text" value="" size="24" border="0" />
<input type="submit" name="submitButtonName" border="0">
</form>
Dieses Stück Quelltext schein dafür verantwortlich zu sein, dass auf dem Bildschirm dann ein Eingabefeld mit rechts daneben stehendem Button mit der Beschriftung "Anfrage Abschicken" erscheint.
Da das nirgends im Quelltext des Dokumentes zu finden sit, wirst Du es wohl mit JavaScript ersetzen?
Ich sehe keine Chance, Dir zu helfen, wenn Du nicht Ross und Reiter nennst. Du hast ein CMS im Einsatz? Welches?
Das CMS nutzt aktiv JavaScript? Wofür?
Zumindest hast Du hier eine "Doctype"-Angabe zuviel im Dikument und zwei <body>-Elemente ebenfalls...
Da solltest Du also erstmal anfangen, aufzuräumen.
Ein harzliches Glückauf
Tom vom Berg
ich benutze joomla 1.5.3
es muß ja nicht zwingend das formular sein. es scheint auch falsch zu sein.
Wichtig wäre ein formular zu bauen welches eben den text in das 2. formular einfügt. Dazu brauche ich den richtigen funktionierenden Code des 1. Formulares. Mit den richtigen anweisungen für das 2. formular.
es sollte nur die arbeit verrichten die ich wie gesagt oben beschrieb.
ein formular welches einen eingegebenen text an ein anderes formular sendet an ein bestimmtes feld.
ich hab nochmal die testseite mit einem foto versehen. ganz unten.
Hello,
ich benutze joomla 1.5.3
Und ich denke, dass Dir hier niemand helfen kann oder wird.
Erstens ist der ausgelieferte Quelltext ist alles andere als übersichtlich
und zweitens kannst Du nicht einfach an Deinem CMS vorbei arbeiten.
Alle Kommunikation geht über die "/index.php" und den Ojektbaum von Joomla.
Vermutlich wird da auch eine Session geschrieben im Hintergrund.
Darauf haben wir dann bei vernüfntig eingerichtetem CMS gar keinen Zugriff.
Der Client dürfte dann nur Fragen beantworten können, die das _CMS_ auch gestellt hat und die als unerledigter Vorgang noch im CMS vermerkt sind.
Ich gebe zu, dass ich zur Ermittlung der gesamten Rahmenbedingungen zu faul bin, denn die müssten von Dir geliefert werden. Und da ich auch keinen Zugang auf Deinen Server habe, kann ich mich noch nicht einmal der einfachsten Mittel (Access- und Error-Logs, Testausgabe in ein spezielles Log, usw. ) bedienen.
Nun frage ich mich, wie wir Dir trotzdem helfen können.
Ein harzliches Glückauf
Tom vom Berg
Na du machst mir ja mut... ;-)
Ich würde sagen wir fangen bei 0 an.
ganz ohne sessions und der gleichen.
wie würde der code des 1. formulars aussehen wenn das 2. formular ein dynamisch erzeugtes formular wäre welches aus einer datenbank geladen würde?
Muß ich die datenbank auslesen?
Geht es ohne auslesen nur mit angabe einer id des feldes oder der anweisung "schreibe jetzt den text in das feld mit der id...auf der seite http://www.saymore.de/frage-stellen.html"?
kann diese id dann angsprochen werden im 2.formular?
Welche variablen müßten übergeben werden?
Wie müßte der Quelltext solch eines formulars aussehen?
Hello,
Ich würde sagen wir fangen bei 0 an.
ganz ohne sessions und der gleichen.
Das schlage ich auch vor. Dann sind wir uns ja einig.
Fangen wir also beim "Affenformular" (=Suchbegriff) an.
Wenn Du ein Formular aufbaust, das immer wieder auf sich selbst refernziert, also genauer gesagt, auf das Dokument (die Ressource) un dem es vorhanden ist.
Hast Du sowas schon mal selber gebaut?
Ich will Dich mit der Frage jetzt auch nicht ärgern, sondrn nur wissen, wie weit Du denn schon die Zusammenhänge durchleuchtet hast und selbst nachvollziehen kannst.
Ein harzliches Glückauf
Tom vom Berg
Selbst hab ich sowas noch nicht gemacht.
ich weiß nur das man durch ein formular daten senden kann die bei b aufgeabeitet werden.
dazu muß man formular 1 haben welches variablen übergibt und formular/ datei 2 welches den code enthält der die daten ausgibt.
soweit so gut.
In joomla kann man externe php-skripte includieren welche joomla ausführt. Mein formular ist so ein externes skript/datei welche das formular enthält.
joomla weiß das es das formular ausführen muß und macht das auch problemlos.
Der fehler liegt in meinem formular welches die falschen variablen ausgibt.
ich muß zu meiner schande gestehen ich habs nicht so mit formularen. sie rauben mir den letzten nerv. Außerdem weiß ich nicht welche variablen ich meinem formular mit auf den weg geben soll weil ich ja noch nicht mal weiß wie ich in meinem fall das 2. feld/formular ansprechen soll.
Über ne id über nen namen über blablabla? keine ahnung.
ich hab sämtlichen code der verantwortlich ist auf meiner seite gepostet.
Keine Ahnung wo ich da den code zum auslesen der variablen eingeben soll.
Hello,
Selbst hab ich sowas noch nicht gemacht.
Solltest Du aber, damit Du Dir vorstellen kannst, wie das funktioniert.
Das ist Basiswissen, wenn man CMS umbauen will, also keine vergeudete Zeit :-)
In joomla kann man externe php-skripte includieren welche joomla ausführt.
Da kommen wir der Sache also schon näher.
Dieses includierte Script muss also sowohl den Hinweg (Richtung Client), als auch den Rückweg (Nächster Request des Client, nachdem er den includierten Teil angesprochen hat) verarbeiten können.
<?php ## to_include.php ###
$link_name = '';
if (isset($_POST['link_name']))
{
## Überprüfung der Eingabe hier nicht vergessen!
$link_name = htmlspecialchars($_POST['link_name']);
}
echo " <form action="" . htmlspecialchars($_SERVER['PHP_SELF']) . "" method="POST"">\r\n";
echo " <input name="link_name" type="text" value="$link_name" size="24" border="0" />\r\n";
echo " <input type="submit" name="Anfrage senden" border="0" />\r\n";
echo " </form>\r\n";
## das betroffene Feld kann dann hier vorbelegt werden.
?>
Ein harzliches Glückauf
Tom vom Berg
Super mit deinem code. wir sind schon weiter.
Joomla hat dafür eine komponente die mir diesen include-quark abnimmt und joomla amweist das skript auf dem sever in diesem cms(Joomla) auszuführen.
Das klappt keine frage wunderbar. meine falsche anweisung wird verstanden und das ausgabeergebnis kannst du in den bild auf meiner seite unten bewundern.
es geht einfach nur um die anweisung an die datei die die variablen ( die ich leider nicht kenne und die mir niemand verrät ;-) ) ausliest. code auch gepostet auf meiner seite mit dem funktionierenden aber brauchbaren formular.
* ruf halt die andere Datei von diesem (kleinen) Formular aus auf
* lass diese ggf. prüfen ob Variablen aus diesem Formular übergeben wurden.
* setze diese Variablen (aus dem kleinen Formular) per echo ins INPUT-Feld (des großen Formular).
Dieser Rat wurde mir soeben gegeben. Geht das? wenn ja wie?
Hello,
* setze diese Variablen (aus dem kleinen Formular) per echo ins INPUT-Feld (des großen
Echo wirst Du nicht benötigen, sondern nur den aktiven Namespace und wie die Variablen darin heißen. Und dann natürlich, ob es eine Methode zum Überschreiben gibt, oder ob die Variablen öffentlich sind, also direkt von Dir überschreiben werden dürfen.
Ein harzliches Glückauf
Tom vom Berg
Und das ist das benutzerdefinierte Feld (Feldtyp) welches gefüllt werden soll.
class mFieldType_corename extends mFieldType {
var $name = 'link_name';
function getOutput($view=1) {
$params['maxSummaryChars'] = intval($this->getParam('maxSummaryChars',55));
$params['maxDetailsChars'] = intval($this->getParam('maxDetailsChars',0));
$value = $this->getValue();
$output = '';
if($view == 1 AND $params['maxDetailsChars'] > 0 AND $this->strlen_utf8($value) > $params['maxDetailsChars']) {
$output .= $this->html_cutstr($value,$params['maxDetailsChars']);
$output .= '...';
} elseif($view == 2 AND $params['maxSummaryChars'] > 0 AND $this->strlen_utf8($value) > $params['maxSummaryChars']) {
$output .= $this->html_cutstr($value,$params['maxSummaryChars']);
$output .= '...';
} else {
$output = $value;
}
return $output;
}
}
Siehst du hier soetwas? das ist mein feldcode.
Hello,
Und das ist das benutzerdefinierte Feld (Feldtyp) welches gefüllt werden soll.
class mFieldType_corename extends mFieldType
{
var $name = 'link_name';
function getOutput($view = 1)
{
$params['maxSummaryChars'] = intval($this->getParam('maxSummaryChars', 55));
$params['maxDetailsChars'] = intval($this->getParam('maxDetailsChars', 0));
$value = $this->getValue();
$output = '';
if($view == 1
AND $params['maxDetailsChars'] > 0
AND $this->strlen_utf8($value) > $params['maxDetailsChars'])
{
$output .= $this->html_cutstr($value, $params['maxDetailsChars']);
$output .= '...';
}
elseif($view == 2
AND $params['maxSummaryChars'] > 0
AND $this->strlen_utf8($value) > $params['maxSummaryChars'])
{
$output .= $this->html_cutstr($value, $params['maxSummaryChars']);
$output .= '...';
}
else
{
$output = $value;
}
return $output;
}
}
Siehst du hier soetwas? das ist mein feldcode.
Da fällt mir nur die Methode getValue() ins Auge, die sicherlich in der übergeordneten Klasse "mFieldType " deklariert worden sein muss...
$value = $this->getValue();
Ein harzliches Glückauf
Tom vom Berg
Das haben wir gleich
Könnte das der code von dem übergeordneten dingsda sein?
**
*
* Outputs a single <input> element.
*
* $Id: Savant2_Plugin_input.php,v 1.1 2004/10/04 01:52:23 pmjones Exp $
*
* @author Paul M. Jones pmjones@ciaweb.net
*
* @package Savant2
*
* @license http://www.gnu.org/copyleft/lesser.html LGPL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
*/
class Savant2_Plugin_input extends Savant2_Plugin {
/**
*
* Outputs a single <input> element.
*
* @access public
*
* @param string $type The HTML "type=" value (e.g., 'text',
* 'hidden', 'password').
*
* @param string $name The HTML "name=" value.
*
* @param mixed $value The initial value of the input element.
*
* @param string $attr Any extra HTML attributes to place within the
* input element.
*
* @return string
*
*/
function plugin($type, $name, $value = '', $attr = null)
{
$type = htmlspecialchars($type);
$name = htmlspecialchars($name);
$value = htmlspecialchars($value);
// start the tag
$html = "<input type="$type" name="$name" value="$value"";
// add extra attributes
if (is_array($attr)) {
// add from array
foreach ($attr as $key => $val) {
$key = htmlspecialchars($key);
$val = htmlspecialchars($val);
$html .= " $key="$val"";
}
} elseif (! is_null($attr)) {
// add from scalar
$html .= " $attr";
}
// end the tag and return
$html .= ' />';
return $html;
}
}
?>
HuHu seit ihr alle schon beim fußball?
Ich harre der dinge die noch gepostet werden. bis morgen früh. ist mir egal. ich möchte gern eine lösung gaben.
Hallo,
Da fällt mir nur die Methode getValue() ins Auge, die sicherlich in der übergeordneten Klasse "mFieldType " deklariert worden sein muss...
Vielleicht kann uns Crystin die Deklaration dieser Funktion suchen, eventuell findet sich dort etwas erhellendes.
Ansonsten liesse sich an dieser Stelle ($value = $this->getValue();
) das Feld setzen:
if (isset($_POST['link_name']))
$value = $_POST['link_name'];
else
$value = $this->getValue();
Zu Problemen mit Joomla oder der allgemeinen Sicherheit fragen Sie bitte Ihren Arzt oder Apotheker...
Gruß
Hallo,
Das hat mit dem ersten Formular gar nichts (nicht viel) zu tun. Die zweite PHP-Seite muss den entsprechenden GET-Parameter auslesen und in das zweite Formular eintragen. Nur ob sich das ohne viel Gehacke in Joomla machen lässt...
Gruß
Hello,
Das hat mit dem ersten Formular gar nichts (nicht viel) zu tun. Die zweite PHP-Seite muss den entsprechenden GET-Parameter auslesen und in das zweite Formular eintragen. Nur ob sich das ohne viel Gehacke in Joomla machen lässt...
Wieso GET-Parameter?
Melanie wollte doch posten.
Und ob Joomla das im passenden Modul auswertet, das wollen wir gerade herausfinden.
Dazu muss Melanie aber erst einmal mitteilen, wo sie steht mit ihrem persönlichen Wissen über Formulare und aktive Backends.
Ein harzliches Glückauf
Tom vom Berg
Hallo,
Wieso GET-Parameter?
Melanie wollte doch posten.
Sorry, ich hab vom Sinn her auf GET geschlossen. Äh, wieso Melanie? War das nicht ein anderer Thread ;-)
Gruß
Hello,
Sorry, ich hab vom Sinn her auf GET geschlossen. Äh, wieso Melanie? War das nicht ein anderer Thread ;-)
Ja, bitte um Entschuldigung. Dies hier war ja Crystin ;-)
Ein harzliches Glückauf
Tom vom Berg
das ist ein guter ansatz und so unkompliziert.
ist mir wurscht wenn ich etwas ändern muß am code ich tus ohne wenn und aber.
den code der für das 2. formular verantwortlich ist und wo warscheinlich auch der auslesecode rein muß hab ich auf der meiner seite online gestellt.
http://www.saymore.de/frage-stellen.html
Jetzt stellt sich die frage welcher codeschnipsel wohin muß?
Weißt du rat?