Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Form durch Query zusammenbauen

Eingetragen von drupalino (1064)
am 26.07.2010 - 19:29 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo zusammen, ich baue gerade ein Modul.

Darin existiert ein Formular, welches Selectboxen enthält. Diese muss ich durch DB-Abfragen zusammenbauen lassen, nur ist da immer das Problem, dass ich eine verschachtelte Query habe und dadurch sich das Form zerreisst.

<?php

function my_form_form($form_state){

   
$forms = array();
   
   
   
// set vocabulary id #
   
$vid = 1;
   
$sql_vocabulary = "SELECT * FROM {term_data} WHERE vid = %d";
   
$result_vocabulary = db_query(db_rewrite_sql($sql_vocabulary), $vid);

   

    while (
$data_vocabulary = db_fetch_object($result_vocabulary)){   
       
$form["$data_vocabulary->name"]['feed_item_length'] = array(
           
'#type' => 'select',
           
'#title' => t($data_vocabulary->name),
           
'#default_value' => variable_get('feed_item_length','teaser'),
               
'#options' => array(
                   
$sql_ob = "SELECT * FROM {term_node} WHERE tid = $data->tid";
               
$result_ob = db_query($sql_ob);
                     while (
$data_ob = db_fetch_object($result_ob)){

                   
$sql_vi = "SELECT * FROM {node} WHERE vid = $data_ob->vid";
                   
$result_vi = db_query($sql_vi);

                        while (
$data_vi = db_fetch_object($result_vi)){
   
                        
$data_vi->vid." => ".t($data_vi->vid),
               
                       
                        }
                        }

               
                ),
               
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
       
               
        );   
    }       
       
    return
$form;

   

   
}




?>

Wie kann ich das lösen, hat jemand einen Tipp?

Habe auch schon das in einer externen funktion durchlaufen lassen, damit wird es richtig zusammengebaut als String, aber der kann dann wohl nicht innerhalb der my_form_form function nicht mehr richtig verarbeitet werden

‹ Form Submit Nochn Gallery-Modul ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Also wenn du mir kurz den

Eingetragen von manuelBS (330)
am 26.07.2010 - 20:35 Uhr

Also wenn du mir kurz den Teil:

Zitat:

'#options' => array(
$sql_ob = "SELECT * FROM {term_node} WHERE tid = $data->tid";

erklärst und mir sagst, was du denn in deinem #options Array haben willst, kann ich dir vielleicht auch helfen, aber so bekomme ich es gerade leider nicht zusammen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php

Eingetragen von drupalino (1064)
am 26.07.2010 - 20:47 Uhr

<?php

$form
['feed']['feed_item_length'] = array(
 
'#type' => 'select',
 
'#title' => t('Display of XML feed items'),
 
'#default_value' => variable_get('feed_item_length','teaser'),
 
'#options' => array(
   
'title' => t('Titles only'),
   
'teaser' => t('Titles plus teaser'),
   
'fulltext' => t('Full text'),
  ),
 
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
);

?>

wäre ja ein Select Formular.

Nun habe ich ja ein Select erstellt mit dem obersten Query und in

Zitat:

'#options' => array(
$sql_ob = "SELECT * FROM {term_node} WHERE tid = $data->tid";

Baue ich dann mit dem Sub-Query die Options für das Selectfeld zusammen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also auch auf die Gefahr hin,

Eingetragen von manuelBS (330)
am 26.07.2010 - 21:07 Uhr

Also auch auf die Gefahr hin, dass ich mich etwas weit aus dem Fenster lehne, so

Zitat:

'#options' => array(
$sql_ob = "SELECT * FROM {term_node} WHERE tid = $data->tid";
$result_ob = db_query($sql_ob);
while ($data_ob = db_fetch_object($result_ob)){

$sql_vi = "SELECT * FROM {node} WHERE vid = $data_ob->vid";
$result_vi = db_query($sql_vi);

while ($data_vi = db_fetch_object($result_vi)){

$data_vi->vid." => ".t($data_vi->vid),

}
}

),

wird das nix. Ich würde es mal so versuchen, dass du dir ne Funktion _modulname_get_term_options baust, die dir das so umbaut, wie du es brauchst. Du kannst denke ich keine SQL Querys in ein Array stecken und hoffen, dass Sie ausgeführt werden (von dem Semikolon im Array, das zu einem Fehler führen würde mal abgesehen. Bau dir also ein Funktion, die saubere Querys ausführt und dir ein Array der Form (key=>Value) mit deinen Werten zurückgibt.

Ich hoffe das passt so für dich.
Grüße
Manuel

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich weiß beim besten

Eingetragen von Exterior (2903)
am 26.07.2010 - 21:12 Uhr

Also ich weiß beim besten Willen nicht, wie das funktionieren soll...

Bei den Options muss ein Array aus Werten angegeben werden, du gibst da ein Array mit einer SQL-Anweisung usw. an. Also ich habe echt keine Ahnung, wie genau das von statten gehen söllte.

Und warum machst du die ganzen Abfragen usw. nicht schon vorher? Also so:

<?php


function my_form_form($form_state){

   
$forms = array();
   
   
   
// set vocabulary id #
   
$vid = 1;
   
$sql_vocabulary = "SELECT * FROM {term_data} WHERE vid = %d";
   
$result_vocabulary = db_query(db_rewrite_sql($sql_vocabulary), $vid);

   

    while (
$data_vocabulary = db_fetch_object($result_vocabulary)){   
       
       
$options = array();
       
$sql_ob = "SELECT * FROM {term_node} WHERE tid = $data->tid";
       
$result_ob = db_query($sql_ob);
       
        while (
$data_ob = db_fetch_object($result_ob)){
         
$sql_vi = "SELECT * FROM {node} WHERE vid = $data_ob->vid"; 
         
$result_vi = db_query($sql_vi);
         
         
          while (
$data_vi = db_fetch_object($result_vi)){
           
$options[$data_vi->vid] = t($data_vi->vid);
          }
        } 
       
       
       
$form["$data_vocabulary->name"]['feed_item_length'] = array(
           
'#type' => 'select',
           
'#title' => t($data_vocabulary->name),
           
'#default_value' => variable_get('feed_item_length','teaser'),
           
'#options' => $options,
           
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
       
               
        );   
    }       
       
    return
$form;   
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der Tag war echt heute zu

Eingetragen von drupalino (1064)
am 26.07.2010 - 21:27 Uhr

Der Tag war echt heute zu lange....

man man man, ihr zwei habt ja so recht. Ich gehöre geschlagen ;-)

Aber genauso einen "Anstubser" habe ich gebraucht ;-)

Vielen Dank

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Tag 2 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Tag 18 Stunden
  • melde mich mal wieder, da ich
    vor 7 Wochen 5 Tagen
  • Hey danke
    vor 7 Wochen 6 Tagen
  • Update: jetzt gibt's ein
    vor 8 Wochen 11 Stunden
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 2 Tagen
  • In der entsprechenden View
    vor 9 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20463

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

» 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 18 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