Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

Formular mit DB-Abfragen,Prüfungen und Speichern erstellen

Eingetragen von Ati (210)
am 30.03.2011 - 11:41 Uhr in
  • Anfängerfragen
  • Drupal 6.x

Hallo zusammen,

nachdem ich die einfachen Sachen aus unserem Intranet mit Drupal nachgebildet habe, sind jetzt die komplizierteren Sachen dran.
So benutzen wir hier eine Toureplanung, welche ich per PHP von Hand programmiert habe. Ich möchte mal kurz den bisherigen Ablauf schildern.

Im ersten Schritt muß der Mitarbeiter ein Lieferdatum und eine PLZ auswählen. Die PLZ wird über ein Dropdown-Feld gewählt, welches durch eine DB-Abfrage gefüllt wird. Dann wird der Button "Prüfen" gedrückt und auf einer neuen PHP-Seite erscheinen alle bereits vorhandenen Termine für den entsprechenden LKW.
Über diese Auflistung gibt es dann ein Formular, in welchem (durch Schritt 1 festgelegten) die Tourennummer,PLZ und Ort mit Stadtteil voreingestellt sind.
Hier gilt es jetzt weitere Eingaben zu machen wie Uhrzeit (Dropwdown wieder aus DB gefüllt),Terminart (Fix-Termin, Bis-Termin), Kundenname, Strasse und Bemerkung. Nach dem Speichern wird dann nochmal geprüft, ob der Uhrzeittermin bereits vergeben ist und wenn ja kommt eine Meldung im Formular das eben der Termin nicht mehr eingetragen werden kann. Erst wenn eine Uhrzeit gewählt wird die frei ist, kann der Liefertermin gespeichert werden.

Jetzt weiß ich nciht so recht wie ich dieses komplexe Thema mit Drupal angehen kann und wollte mal um Rat fragen.

Danke
Ati

‹ Multisite 1 Datenbank in getrennte Datenbanken ändern Datenbankverbindung geht nicht ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Also prinzipiell ist es kein

Eingetragen von Exterior (2903)
am 30.03.2011 - 12:59 Uhr

Also prinzipiell ist es kein Problem, Formular-Felder mit DB-Werten zu füllen. Einfach DB-Werte abfragen, daraus ein Array erstellen und dieses entsprechend für die Options der Felder verwenden.

Und für die verschiedenen Seiten kannst du dich mal in das Thema Multistep-Formulare einlesen. Damit kannst du ein Formular in Seiten aufteilen und z. B. Anhand der Werte von Seite 1 die DB-Werte für Seite 2 abfragen usw.

http://www.ferolen.com/blog/how-to-create-multistep-form-in-drupal-6-tut...
http://civicactions.com/blog/2009/may/29/multi_step_node_forms_drupal_6
http://www.appnovation.com/create-multiple-step-form-drupal-6

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Tip

Eingetragen von Ati (210)
am 31.03.2011 - 10:03 Uhr

Ich habe mir mal einiges dazu durchgelesen, wobei ich bei jedem Tutorial so ein paar Verständnisprobleme hate.
Also habe ich mal versucht ein Multistep-Formular zu entwickeln so wie ich es verstanden habe. Der Code sieht bisher wie folgt aus:

<?php
drupal_add_js
(drupal_get_path('module', 'tourenplanung') .'/tourenplanung.js');
jquery_ui_add('ui.datepicker');

function
tourenplanung_menu() {
 
$items = array();
 
$items['tourenplanung/form'] = array(
   
'title' => t('Tourenplanung'),
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('tourenplanung_multiform'),
   
'access arguments' => array('access content'),
   
'description' => t('Tourenplanung'),
   
'type' => MENU_NORMAL_ITEM,
  );
  return
$items;
}

function
tourenplanung_multiform($form_state) {
// Ist $form_state['storage']['page_two'] gesetzt entsprechende Funktion aufrufen
if (isset($form_state['storage']['page_two'])) {
    return
tourenplanung_multiform_page_two();
  }
 
// Füllen des Dropdownfeldes
 
$result = db_query('select * from tbl_plz ORDER BY plz');
 
$tourenges = array();
  while (
$row = db_fetch_object($result)) {
 
$touren[$row->id] = $row->plz.' '.$row->ort;
  }
 
 
// Seite 1 wird gezeigt wenn $form_state['storage']['page_two'] nicht gesetzt ist
 
$form['tourenplan'] = array(
   
'#type' => 'fieldset',
   
'#title' => t('Name'),
  );
 
$form['tourenplan']['termin'] = array(
   
'#type' => 'textfield',
   
'#size' => 15,
   
'#title' => t('Liefertermin'),
   
'#description' => 'Bitte Liefertermin angeben!!',
   
'#required' => FALSE,
  );
 
 
$form['tourenplan']['tour'] = array(
 
'#type' => 'select',
 
'#title' => t('Ort'),
 
'#options' => $touren,
 
'#required' => FALSE,
 
'#description' => t('Bitte Lieferort angeben!!'),
  );
 
 
$form['next'] = array(
   
'#type' => 'submit',
   
'#value' => 'Next >>',
  );
  return
$form;
}

function
tourenplanung_multiform_page_two() {
 
$termin = $form_state['storage']['termin'];
 
drupal_set_message('<pre>'. var_export($termin, 1) .'</pre>');
 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => 'Submit',
  );
  return
$form;
}

function
tourenplanung_multiform_submit($form, &$form_state) {
// Buttonklick page 1
 
if ($form_state['clicked_button']['#id'] == 'edit-next') {
   
$form_state['storage']['page_two'] = TRUE; // Wenn Button gedrückt dann
                                               // $form_state['storage']['page_two']setzen
                                              
    //Eingabe speichern
   
$form_state['storage']['termin'] = $form_state['values']['termin'];
  }
 
 
}


?>

Ich wollte mir dann mal den Inhalt des Termins ausgeben lassen und erhalte als Ergebnis "NULL"?
Was habe ich da falsch verstanden?

Ati

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich habe gesucht und

Eingetragen von Ati (210)
am 04.04.2011 - 10:31 Uhr

Also ich habe gesucht und gesucht...gelesen und gelesen...aber ich verstehe es noch nciht ganz. Egal welchen Beispielcode ich mal verwendet habe, es
wurden irgendwie nie die Eingaben aus der ersten Seite gespeichert. Also habe ich im Rahmen meines beschränkten Wissens eine Hilfe gebaut, wo
ich in einem "hidden"-Feld die Eingaben aus der verhoerigen Seite speicher...das klappt auch ganz gut. Der nächste Step ist jetzt allerdings zwischendurch
eine SQL-Abfrage auszuführen und das Ergebnis daraus in zwei Variablen zu speichern...und hier hänge ich nun. Vielleicht erstmal den aktuellen Testcode:

function tourenplanung_multiform($form_state) {

if (!isset($form_state['storage']['step'])) {   
$form_state['storage']['step'] = 1; 
} 
$result = db_query('Select id,plz,ort from tbl_plz');
while ($row = db_fetch_object($result)) {
$touren[$row->id] = $row->plz.' '.$row->ort;
}
switch ($form_state['storage']['step']) {   
case 1:     
$form['lterm'] = array(
    '#type' => 'textfield',
    '#size' => 15,
    '#title' => t('Lieferantentermin'),
    '#required' => TRUE,
  );
$form['tourid']= array(
  '#type' => 'select',
  '#title' => t('Tour'),
  '#options' => $touren,
  '#required' => TRUE,
  '#description' => t('Bitte Tournummer angeben!!'),
);  
break;   

case 2:
print_r($form_state['values']);   
$id = $form_state['values']['tourid'];
$result = db_query('Select plz,ort from tbl_plz where id =%d',$id);
while ($row = db_fetch_object($result)) {
$plz = $row->plz;
}
$form['terminplz'] = array(
    '#type' => 'hidden',
    '#default_value' => $plz,
  );
$form['termindat'] = array(
    '#type' => 'hidden',
    '#default_value' => $form_state['values']['lterm'],
  );
$form['terminort'] = array(
    '#type' => 'hidden',
    '#default_value' => $form_state['values']['tourid'],
  );
$form['terminplz'] = array(
    '#type' => 'hidden',
    '#default_value' => $form_state['values']['tour']['plz'],
  );
$form['bem1'] = array(
    '#type' => 'textfield',
    '#title' => t('Bemerkung'),
    '#required' => FALSE,
  );
$form['bem2'] = array(
    '#type' => 'textfield',
    '#title' => t('Bemerkung'),
    '#required' => FALSE,
  ); 
break;   

case 3:
print_r($form_state['values']);
   
break;  

Wenn ich mir iim dritten Schritt nun alle Inhalte des arrays anzeigen lasse, ist 'terminplz' leer. Was mache ich falsch?

Ati

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • Danke ich werde mir die
    vor 4 Wochen 9 Stunden
  • Vielen Dank für Ihren
    vor 4 Wochen 3 Tagen
  • Composer ist sehr ratsam
    vor 4 Wochen 5 Tagen
  • Vielen Dank für den
    vor 5 Wochen 12 Stunden
  • Die alten CMS Vergleiche von contentmanager.de
    vor 5 Wochen 1 Tag
  • Gut gemacht
    vor 5 Wochen 1 Tag
  • Layout Builder etc. z.B. für Landing Pages
    vor 5 Wochen 1 Tag
  • Links
    vor 5 Wochen 3 Tagen
  • Moin,wow, sehr gutes
    vor 5 Wochen 4 Tagen
  • Dass ist eine spannende
    vor 5 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250316
Registrierte User: 20566

Neue User:

  • Robertspaft
  • drupalthemes
  • rofilm

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 23 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association