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

[gelöst] dropdown menü realisieren?

Eingetragen von airliner (309)
am 19.05.2010 - 13:37 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Moin Leude!

Ich bin grad ein wenig beim Customizing unserer Abwesenheitsliste bei...
Dabei geht es darum, dass die Einträge aus der Fehlzeitenliste (zuvor aus einer MsSQL-Datenbank in die Drupal-DB kopiert) angezeigt und gefiltert werden soll.
Anzeigen klappt ohne Probleme, das Suchen nach Mitarbeiternamen bzw. nach einem Datum geht auch.
Anstatt der Suchfelder möchte ich nun DropDownMenüs realisieren, am besten ohne groß AJAX oder JS zu nutzen.

Ich hab auch schon elendig oft google gequält, bin aber nicht fündig geworden.

Die Quälcodes sehen so aus:

Code für allgemeine Ausgabe der Fehlzeiten aller Mitarbeiter

<?php
//Datenbankverbindung und -auswahl
mysql_connect("xxx","xxx","xxx") OR DIE("MySQL Database connection failed." . mysql_error());
mysql_select_db("drupal6") or DIE("MySQL DB unavailable." . mysql_error());
?>


//Suchfeld für die Mitarbeiternamen mit Weiterleitung auf eine andere node (der Quellcode steht weiter unten)
<form action="URL/index.php?q=node/128" method="POST">
<input type="text" size="17" name="Personensuche">
<input type="submit" value="nach Namen suchen">
</form>

//Code für die Datumssuche, steht ebenfalls weiter unten
Bitte das Datumsformat beachten: TT.MM.YYYY
<form action="URL/index.php?q=node/135" method="POST">
<input type="text" size="17" name="Datum">
<input type="submit" value="nach Datum suchen">
</form>

Info: In dieser Liste erscheinen nur die Abwesenheiten der letzten 7 und der kommenden 28 Tage.

<?php

$sql_query
='SELECT Employee_No, Name, DATE_FORMAT(Datum, "%d.%m.%Y") AS Zeitraum, Missing_Day
            FROM fehlzeiten ORDER BY Name, Datum ASC;'
;

$query = mysql_query($sql_query);

if(!
mysql_num_rows($query))
{
    echo
"Keine Abwesenheiten für die kommenden 28 Tage eingetragen.";
}
else
{

//Das war der Versuch des DropDownMenus, allerdings passiert hier noch nichts, man kann nur auswählen
//$result = mysql_query('SELECT DATE_FORMAT(Datum, "%d.%m.%Y") AS Zeitraum FROM fehlzeiten GROUP BY Datum ASC;');
// echo "<select>" ;
// echo "<option name='Datum'>Datum wählen:</option>";
//           while ($res = mysql_fetch_assoc($result)) {
//               $a = $res['Zeitraum'];
// echo "<option>$a</option>";                    
//            }
//           echo "</select>"; 

   
echo "<table id=simple>";
                echo
"<tr>";
                echo
"<th>Name</th>";
                echo
"<th>Datum</th>";
                echo
"<th>Grund</th>";
                echo
"</tr>";
    while(
$row = mysql_fetch_row($query))
    {
        echo
"<tr>";
        echo
"<td>".utf8_encode($row[1])."</td>";

               if(
$row[3]=="Grund1"){
                           
$row[3]="Grund2";
                            } else if (
$row[3]=="Grund3") {
                                       
$row[3]="Grund2";
                            }

        echo
"<td>$row[2]</td>";
                echo
"<td>$row[3]</td>";
        echo
"</tr>";
    }
    echo
"</table>";
}
?>

Code für die Seite der Personensuche:

<?php
//Wieder DB-Verbindung aufbauen
mysql_connect("xxx","xxx","xxx")
    OR DIE(
"MySQL Database connection failed." . mysql_error());
mysql_select_db("drupal6") or DIE("MySQL DB unavailable." . mysql_error());

$Personensuche = $_POST['Personensuche'];

$sql_query="SELECT Employee_No, Name, DATE_FORMAT(Datum, '%d.%m.%Y')
    AS Zeitraum, Missing_Day FROM fehlzeiten WHERE Name LIKE '%
$Personensuche%'
    ORDER BY Name, Datum ASC;"
. mysql_error();

$query = mysql_query($sql_query);

if(!
mysql_num_rows($query))
{
    echo
"Keine Abwesenheiten für die kommenden 28 Tage eingetragen.";
}
else
{

//Ausgabe wie oben

?>

Und hier der Code für die Datumsabfrage:

<?php
//Wieder die Verbindung aufbauen

$Datum = $_POST['Datum'];

$sql_query="SELECT Employee_No, Name, DATE_FORMAT(Datum, '%d.%m.%Y')
    AS Zeitraum, Missing_Day FROM fehlzeiten WHERE DATE_FORMAT(Datum, '%d.%m.%Y') LIKE '%
$Datum%'
    ORDER BY Name, Datum ASC;"
. mysql_error();

$query = mysql_query($sql_query);

if(!
mysql_num_rows($query))
{
    echo
"Für dieses Datum sind keine Abwesenheiten eingetragen.";
}
else
{

    echo
"<table id=simple>";
                echo
"<tr>";
                echo
"<th>Name</th>";
                echo
"<th>Datum</th>";
                echo
"<th>Grund</th>";
                echo
"</tr>";
    while(
$row = mysql_fetch_row($query))
    {
//Ausgabe der Ergebnisse wie oben
}
?>

Sobald etwas ausgewählt wurde, darf auch gern auf eine andere Seite weitergeleitet werden.
Hauptsache das DropDownMenu reagiert auf Mausklick (also die Auswahl) und die jeweils gewählten Daten werden von der DB abgefragt.
Wenn es mit Views gehen sollte, wäre ich sehr verbunden, wenn mir jemand dazu ein paar Hinweise geben könnte, welche Einstellungen gesetzt werden sollten. Hatte mit Views noch nicht wirklich viel am Hut.

‹ problem mit hook_form_alter() [gelöst] CCK-Felder in eigener Validierung ansprechen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Ohne deinen Artikel

Eingetragen von rapsli (1500)
am 20.05.2010 - 05:48 Uhr

Hallo
Ohne deinen Artikel gross gelesen zu haben... es könnte also durchaus sein, dass ich am Ziel vorbeischiesse, aber hast du mal Module versucht einzusetzen, z.B.: http://drupal.org/project/jump oder dann gibt es auch noch ein Views plugin.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ein Modul dafür würde nicht

Eingetragen von airliner (309)
am 20.05.2010 - 08:18 Uhr

Ein Modul dafür würde nicht funktionieren, da es sich hier nicht um Standard-Drupal-Tabellen und -Inhalte handelt.
Aber danke für den Vorschlag des Moduls. Für Standard-Menüs ist es sicherlich gut geeignet.

Ich habe es jetzt aber gelöst, siehe unten:

<script type="text/javascript">
function submitForm() {
  document.getElementById("formElement").submit();
}
</script>

<?php
mysql_connect
("xxx","xxx","xxx") OR DIE("MySQL Database connection failed." . mysql_error());
mysql_select_db("drupal6") or DIE("MySQL DB unavailable." . mysql_error());
$sql_query='SELECT Employee_No, Name, DATE_FORMAT(Datum, "%d.%m.%Y") AS Zeitraum, Missing_Day
            FROM fehlzeiten ORDER BY Name, Datum ASC;'
;

$query = mysql_query($sql_query);

if(!
mysql_num_rows($query))
{
    echo
"Keine Abwesenheiten für die kommenden 28 Tage eingetragen.";
}
else
{
//Das ist das Beispiel für die Namenssuche, Datumssuche ist an sich baugleich, nur die SQL-Query ist anders
$result = mysql_query('SELECT Name FROM fehlzeiten GROUP BY Name ASC;');

//Ich musste einfach nur eine form drumsetzen und einen Button einsetzen.
//Ein Button ist in diesem Falle eh besser, da man sich durchaus verklicken kann, ohne, dass die Seite sofort neu geladen wird.
echo "<form id='formElement' action='URL/index.php?q=node/128' method='POST'><select name='Personensuche'>";
echo
"<option>Mitarbeiter wählen:</option>";
           while (
$res = mysql_fetch_assoc($result)) {
              
$a = $res['Name'];
//Das UTF8_Encode muss mit rein, da sonst keine Umalute angezeigt werden und der ausgewählte Name nicht gefunden wird
echo "<option>".utf8_encode($a)."</option>";              
               
            }

           echo
"</select><input type='submit' value='nach Namen suchen'></form>";
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

nur so nebenbei... deine DB

Eingetragen von rapsli (1500)
am 20.05.2010 - 09:01 Uhr

nur so nebenbei... deine DB Abfragen sind nicht wirklich "Drupal-like" http://api.drupal.org/api/group/database/6

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das sollten sie auch nie, da

Eingetragen von airliner (309)
am 20.05.2010 - 09:09 Uhr

Das sollten sie auch nie, da die Tabelle, die ich abfrage nur als Zwischenspeicher dient und einfach nur "da sein" soll.
Ich brauche da keine große Funktionalität.

Die Tabelle wurde auch nur ins Leben gerufen, da ich nicht ständig auf die ERP-DB zugreifen will, sobald sich jemand die Abwesenheitsliste anschaut (Sicherheits- und Performanceaspekte). Zumal die Abfrage der ERP-DB bei Weitem aufwändiger wäre...

  • 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 2 Wochen 1 Tag
  • Hey danke
    vor 2 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 6 Stunden
  • Da scheint die Terminologie
    vor 3 Wochen 9 Stunden
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

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 28 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