[gelöst]Webform und mehrfache Dateneingabe
am 15.02.2011 - 13:26 Uhr in
Hallo zusammen,
leider fiel mir kein besserer Titel ein. Also ich möchte folgendes mit dem Modul Webform gestalten.
Es soll aus einer Auswahlliste eine Zahl (1..6) gewählt werden und anschliessend werden Lieferscheinnummern
eingescannt. Da eine Zahl (genauer gesagt eine Tour) bis zu 40 Lieferscheine an einem Tag haben kann, ist es natürlich
nicht gerade optimal immer wieder die Tour auszuwählen... in das Textfeld zu klicken und dann den LS einzuscannen.
Wie bekomme ich es also hin, das sich Webform die Auswahl aus dem vorherigen Scan merkt und den Cursor sofort ins
Textfeld platziert.
Dann wäre es noch interessant, wie ich die Tabelle bestimmen kann in der die Eingaben gespeichert werden.
Danke im voraus
Ati
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich denke Du solltest Dir
am 15.02.2011 - 14:28 Uhr
Ich denke Du solltest Dir hier besser eine eigene Lösung mit Hilfe der Form API bauen, die mehr Flexibilität zulässt.
Desweiteren benötigst Du natürlich jQuery für das "Springen" zum nächsten Textfeld.
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Spannend!! Dann werde ich
am 15.02.2011 - 15:00 Uhr
Spannend!! Dann werde ich mich wohl mal in die Thematik einlesen!
Edit: Gibt es vielleicht ein gutes Tutorial auf deutsch?
Ich bin nicht doof....ich denk nur anders
Södele, ich habe mich mal ein
am 16.02.2011 - 15:14 Uhr
Södele,
ich habe mich mal ein bissl eingelesen und 2 von 3 "Problemen" habe ich gelöst.
Ich habe ein neues Modul erstellt welches das Formular darstellt und die Daten speichert.
Hier mal der bisherige Code:
<?php
drupal_add_js(drupal_get_path('module', 'lsrouting') .'/lsrouting.js');
function lsrouting_menu() {
$items = array();
$items['lsrouting/form'] = array(
'title' => t('LS-Routing'),
'page callback' => 'lsrouting_form',
'access arguments' => array('access content'),
'description' => t('LS-Routing'),
'type' => MENU_CALLBACK,
);
return $items;
}
function lsrouting_form() {
return drupal_get_form('lsrouting_my_form');
}
function lsrouting_my_form($form_state) {
$form['tour']= array(
'#type' => 'select',
'#title' => t('Tour'),
'#options' => array(
'0' => t(' '),
'1' => t('1'),
'2' => t('2'),
'3' => t('3'),
'4' => t('4'),
'5' => t('5'),
'6' => t('6'),
),
'#description' => t('Bitte Tournummer angeben!!'),
);
$form['au'] = array(
'#type' => 'textfield',
'#title' => t('Lieferscheinnummer:'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Speichern',
);
return $form;
}
function lsrouting_my_form_submit($form, &$form_state) {
$tour = $form_state['values']['tour'];
$au = $form_state['values']['au'];
db_query("Insert into lsrouting (tour, au) values ('$tour', '$au')");
drupal_set_message(t('Datensatz gespeichert'));
}
?>
Damit der Cursor sofort im entsprechendem Feld sich befindet habe ich einen hilfreichen
jQuery-Code gefunden:
$(document).ready(function() {
// focus auf das erste Textfeld der Seite
$("input[type='text']:first", document.forms[0]).focus();
});
Aber ich habe aktuell keine Idee wie ich die ausgewählte Tour des vorherigen Scans als "default" beibehalten kann.
Gibt es vielleicht von euch mal einen entsprechenden Tip?
Danke im voraus!
Ati
Ich bin nicht doof....ich denk nur anders
Ich denke, es gibt zwei
am 16.02.2011 - 15:32 Uhr
Ich denke, es gibt zwei Möglichkeiten:
Single-User: Mit variable_get/set arbeiten. Das wären dann die Drupal-eigenen Defaults-Variablen, für die man sich auch selbst eine Modul-Admin Seite erstellen kann:
function mymodule_admin() {
$form['mymodule_var1'] = array('#type' => 'textfield',
'#title' => t('Pfad'),
'#default_value' => variable_get('mymodule_var1', ''),
'#size' => 100,
//'#maxlength' => 2,
'#description' => t("Meine Variable."),
'#required' => FALSE,
);
return system_settings_form($form);
Multi-User: Ablegen in die $_SESSION
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Erst war ich entzückt...bis
am 16.02.2011 - 15:56 Uhr
Erst war ich entzückt...bis ich gemerkt habe das es da bei mir doch noch (logischerweise) Verständnisprobleme gibt.
Das Prinzip der "Single-User" Lösung ist fast so wie ich es haben will...mal abgesehen von der Buttonbeschriftung und dem
Bestätigungstext. Allerdings wird nach "return system_settings_form" nichts mehr gespeichert.
Werde es jetzt mal mit der $_Session versuchen!!
Ich bin nicht doof....ich denk nur anders
in meinem Code oben fehlt
am 16.02.2011 - 16:03 Uhr
in meinem Code oben fehlt halt die end }
function mymodule_admin() {
$form['mymodule_var1'] = array('#type' => 'textfield',
'#title' => t('Pfad'),
'#default_value' => variable_get('mymodule_var1', ''),
'#size' => 100,
//'#maxlength' => 2,
'#description' => t("Meine Variable."),
'#required' => FALSE,
);
return system_settings_form($form);
}
Und das ist nur der Code fürs Modul, um die Variable mal zu initialisieren.
Dann die Variable einfach wo auch immer mit Variable_set() setzen und mit variable_get() holen.
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Nun bei mir war sie aber drin
am 16.02.2011 - 16:06 Uhr
Nun bei mir war sie aber drin ;-). Hat trotzdem nicht gespeichert.
Mit $_SESSION klappt alles wunderbar...weiß allerdings nicht, ob dies so der richtige Weg ist.
Ich habe da so ein Talent Dinge ans laufen zu bekommen, wo andere dann die Hände überm Kopf
zusammen schlagen. Werde diesen Thread dann mal als "gelöst" markieren bevor es haue gibt!
Ati
Ich bin nicht doof....ich denk nur anders
Alles klar. Ich hätte es
am 16.02.2011 - 16:11 Uhr
Alles klar. Ich hätte es wahrscheinlich auch über die $_SESSION gelöst.
Wegen des Codes: Du hast aber schon "mymodule" durch Deinen Modul-Namen ersetzt, ja?
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Hm ich denke, mal so nüchtern
am 16.02.2011 - 16:19 Uhr
Hm ich denke, mal so nüchtern betrachtet, ich hatte bei der Singler-User Lösung ein Verständnisproblem.
Allerdings hatte ich schon den Modulnamen entsprechend geändert.
Ich bin nicht doof....ich denk nur anders