formular faten empfangen und verarbeiten?
Eingetragen von Anonymous (0)
am 13.06.2006 - 22:58 Uhr in
am 13.06.2006 - 22:58 Uhr in
hi drupal forum,
ich versuch mich grade ein wenig in Drupal bzw. in die drupal Form API rein zu arbeiten. leider schaff ich es nich die abgesendeten Daten zu verarbeiten oder auszugeben. Hier mein Code
<?php
$form['ort'] = array(
'#type' => 'textfield',
'#title' => t('Ort'),
'#size' => 20,
'#maxlength' => 50,
'#description' => t('Bitte gebe einen Ort ein!'),
);
$form['submit'] = array('#type' => 'submit', '#value' => t('Senden'));
$output = drupal_get_form('testform', $form);
print $output;
print "<p>Ort: " . $form_values['ort']."<br/>";
?>
Das $form_values['ort'] wird einfach nicht ausgeben. Irgendwie steh ich voll aufm schlauch und weiß einfach nicht was ich falsch mache. Ich mache bestimmt irgendwas falsch! Hat jemand vieleicht einen Tipp für mich?
Danke, Peter
- Anmelden oder Registrieren um Kommentare zu schreiben
Irgendwo wird Dein Formular
am 14.06.2006 - 07:24 Uhr
Irgendwo wird Dein Formular auf einer Webseite sein und Du kannst dort den Submit klicken. Hast Du Dir mal den HTML-Code, den Dein Drupalformular ausgibt, angesehen?
Poste diesen HTML-Code doch einfach mal.
-------------
quiptime
hallo quiptime, danke für
am 14.06.2006 - 07:54 Uhr
hallo quiptime, danke für deine antwort.
hier der html code :
<form action="/drupal47/?q=node/5" method="post" id="testform">
<div><div class="form-item">
<label for="edit-ort">Ort:</label>
<input type="text" maxlength="50" name="edit[ort]" id="edit-ort" size="20" value="" class="form-text" />
<div class="description">Bitte gebe einen Ort ein!</div>
</div>
<input type="submit" name="op" value="Senden" class="form-submit" />
<input type="hidden" name="edit[form_id]" id="edit-form_id" value="testform" />
</div></form>
für mich sieht alles korekt aus, aber vieleicht seh ich auch den Wald vor lauter bäumen nicht.
hab auch schon print $_post['edit']['ort']; ausprobiert ohne erfolg. ich kann die eingebenen Formulardaten einfach nicht ausgeben oder verarbeteiten.
Aus meiner Sicht ist der
am 14.06.2006 - 08:52 Uhr
Aus meiner Sicht ist der HTML-Code in Ordnung. Das Formular kann senden.
Was aber die Variable $_post['edit']['ort'] betrifft.
Erstens:
Richtig ist $_POST['edit']['ort']
$_POST ist eine globale PHP-Variable und muss mit großen Buchstaben geschrieben werden.
Zweitens:
Wenn schon, dann ['edit']['ort'] und nicht nur ['edit']. Denn nur ['edit'] sollte Dir nicht den Inhalt des Feldes liefern sondern die Info, daß es ein Array ist.
-------------
quiptime
Senden von Formulardaten
am 14.06.2006 - 09:29 Uhr
Die Formulardaten schickst du am besten mit der Funktion:
<?php
function NAMEDEINESMODULS_form_submit($form_id, $form_values) {
//Beispiel schreibt die Daten in eine Tabelle
db_query("INSERT INTO {callback} (firma, title) VALUES ('%s', '%s')",
$form_values['firma'], $form_values['telefon']);
//Zeige eine 'Danke Seite an'
drupal_goto('Danke');
}
?>
Meinolf
-------
http://drupal.mdwp.de
Vielen dank für eure
am 14.06.2006 - 13:04 Uhr
Vielen dank für eure antworten.
@qiuptime
Leide liefert $_POST['edit']['ort']; kein ergebniss. hast du noch eine andere Idee?
@Meinolf
d.h. das $form_values['firma'] bzw. in meinem Fall $form_values['ort'] einen Wert enhalten müsste, tut es aber nicht (s.o.). liegt es vieleicht daran das ich kein modul entwickle, sondern das formular in eine seite mit php-filter aufrufe?
Modul
am 14.06.2006 - 13:28 Uhr
Die Form-API ist in erster Linie für die Modulentwicklung gedacht.
Und mein Beispiel-Code auch.
Ich würd auch Formulare nicht über gespasteten PHP-Code entwickeln.
Die Vorgehensweise eignet sich eher für PHP-Snippets in Blöcken.
Meinolf
-------
http://drupal.mdwp.de
naja, noch 'ne Idee?
am 14.06.2006 - 14:24 Uhr
naja, noch 'ne Idee?
Laut Deines HTML-Formularcode sendet das Formular seine Daten an "/drupal47/?q=node/5".
Wer oder was ist der Empfänger der Formulardaten? $_POST ist zwar global - aber wo willst Du den Inhalt von $_POST['edit']['ort'] verarbeiten?
Noch 'ne Idee.
Manchmal sieht man ja den Wald vor lauter Bäumen nicht.
Gib mal den Codesnipped mit dem Du den Inhalt von $_POST['edit']['ort'] ermitteln willst.
Noch 'ne Idee.
Teste doch mal außerhalb von Drupal, ob auf dem Server $_POST zur Verfügung steht bzw. in einem Formular funktioniert. Eventuell ist es kein Drupalproblem. Was ich aber auch nicht glaube, denn im Drupalcode wird $_POST in vielen Modulen verwendet. Falls es ein generelles Problem mit der Variable $_POST gibt würde ja nichts bei Deiner Drupalsite funktionieren.
PS:
Habe mir eben auf drupal.org diversen Examplecode angesehen. An beliebiger Stelle in irgendwelchen Funktionen wird da $_POST['edit']['mein_name'] verwendet. Sollte also funktionieren.
-------------
quiptime
Re: naja, noch 'ne Idee?
am 14.06.2006 - 14:50 Uhr
naja, noch 'ne Idee?
Laut Deines HTML-Formularcode sendet das Formular seine Daten an "/drupal47/?q=node/5".
Wer oder was ist der Empfänger der Formulardaten?
Das formular ruft sich selber wieder auf.
$_POST ist zwar global - aber wo willst Du den Inhalt von $_POST['edit']['ort'] verarbeiten?
eigentlich soll es eine Zahl sein und soll etwas berechnet werden. Aber zuerstmal benotige ich testweise die eingebene variable.
Noch 'ne Idee.
Manchmal sieht man ja den Wald vor lauter Bäumen nicht.
Gib mal den Codesnipped mit dem Du den Inhalt von $_POST['edit']['ort'] ermitteln willst.
hier der derzeitge code:
<?php
$form['ort'] = array(
'#type' => 'textfield',
'#title' => t('Ort'),
'#size' => 20,
'#maxlength' => 50,
'#description' => t('Bitte gebe einen Ort ein!'),
);
$form['submit'] = array('#type' => 'submit', '#value' => t('Senden'));
$output = drupal_get_form('testform', $form);
print $output;
print "<p>Ort: " . $form_values['ort']."<br/>";
print "<p>Ort: " . $_POST['edit']['ort']."<br/>";
?>
weder $form_values noch $POST['edit']['ort'] gibt was aus. Ich bin mit meinem latein am ende - evtl. hast du mal lust den code bei dir zu testen?
Noch 'ne Idee.
Teste doch mal außerhalb von Drupal, ob auf dem Server $_POST zur Verfügung steht bzw. in einem Formular funktioniert. Eventuell ist es kein Drupalproblem. Was ich aber auch nicht glaube, denn im Drupalcode wird $_POST in vielen Modulen verwendet. Falls es ein generelles Problem mit der Variable $_POST gibt würde ja nichts bei Deiner Drupalsite funktionieren.
alles funktioniert bestens - sowohl drupal als auch eigene skripte.
PS:
Habe mir eben auf drupal.org diversen Examplecode angesehen. An beliebiger Stelle in irgendwelchen Funktionen wird da $_POST['edit']['mein_name'] verwendet. Sollte also funktionieren.
ich habe so ziemlich alle code beispiele auf drupal.org durchgetestet, komme aber nicht zum richitgen Ergebniss.
Danke für eure hilfe!
@pelak, vor ein paar Tage
am 14.06.2006 - 15:50 Uhr
@pelak,
vor ein paar Tagen hatte ich beim Testen das gleiche Problem. Ich konnte die Formdaten $_POST['edit']['irgendwas'] nach dem Submit nicht ausgeben.
Da ich für mich das Problem noch nicht klären konnte geht es mir so wie Dir. Es gibt jetzt mehrere Möglichkeiten. Aufgeben, warten auf das ein Wissender diesen Thread liest und sich erbarmt die Lösung zu posten oder es selbst herausbekommen.
Aufgeben kommt für mich nicht in Frage. Warten - naja mal sehen eventuell passiert es ja. Selbst herausbekommen bringt den größten Wissensschub.
Ich weiß nicht wie wichtig Dir dieses Problem ist, wir können hier mit der Problemlösung weitermachen. Hast Du Interesse?
Habe da noch eine Überlegung. Die geht in eine ganz andere Richtung. Und eventuell lacht sich ja bei den folgenden Posts zur Lösung des Problems mit Formdaten $_POST['edit']['irgendwas'] ausgeben ein mitlesender Wissender vor seinem Bildschirm kaputt.
Also @pelak, es ist Dein Thread. Wollen wir weitermachen bis zur Lösung?
-------------
quiptime
Re: @pelak,
am 14.06.2006 - 16:15 Uhr
@pelak,
vor ein paar Tagen hatte ich beim Testen das gleiche Problem. Ich konnte die Formdaten $_POST['edit']['irgendwas'] nach dem Submit nicht ausgeben.
Da ich für mich das Problem noch nicht klären konnte geht es mir so wie Dir. Es gibt jetzt mehrere Möglichkeiten. Aufgeben, warten auf das ein Wissender diesen Thread liest und sich erbarmt die Lösung zu posten oder es selbst herausbekommen.
es gibt noch eine weitere möchglichkeit: und zwar nach einer alternativ lösung zu suchen. ich habe jetzt das formular innerhalb eines nodes als normales html-formular gebaut und es funktioniert alles bestens.
trotzdem interessiert mich eine lösung auf basis der drupal form-api brennend. ich würde sehr gerne wissen, wo mein/unser denkfehler ist.
darum: hast du (oder jemand anderes) noch ideen dazu?
Kurz noch zu meinem
am 14.06.2006 - 16:25 Uhr
Kurz noch zu meinem erfolglosen Test. Mein Formular befand sich nicht in einem node.
Nun zu meiner Idee.
Kann es sein, daß wenn ein Formular irgendwo platziert wird, Drupal als Sicherheitsfunktion die Daten dieses Formulares nicht verfügbar macht bzw. man nicht ohne Weiteres die Formulardaten verarbeiten kann. Wenn ich nun diesem Gedanken folge müßte man sein irgendwo platziertes Formular sozusagen "bei Drupal registrieren", um berechtigt mit den Formulardaten arbeiten zu können.
-------------
quiptime
Warum nicht als Modul
am 14.06.2006 - 22:29 Uhr
Ich will ja nicht nerven, aber warum wollt ihr das nicht als Modul umsetzen?
Das ist doch die normale Vorgehensweise.
Meinolf
-------
http://drupal.mdwp.de
Re: Warum nicht als Modul
am 14.06.2006 - 22:47 Uhr
Ich will ja nicht nerven, aber warum wollt ihr das nicht als Modul umsetzen?
Das ist doch die normale Vorgehensweise.
wahrscheinlich hast du recht.
eigenltich möchte ich nur ein formular mit zwei feldern erstellen, dessen werte mitienander multipliziert werden - mehr nicht. ich dachte das könnte man einfach per PHP und der form-api in einem node regeln.
Ja - und schau dir das mal an
am 15.06.2006 - 00:03 Uhr
http://drupal.org/node/68159
Meinolf
-------
http://drupal.mdwp.de