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 - 10: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 - 11: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 - 09: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 - 09: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

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 5 Tagen
  • Hey danke
    vor 1 Woche 6 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 1 Tag
  • In der entsprechenden View
    vor 3 Wochen 1 Tag
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Tag
  • gelöst
    vor 5 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 29 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