[Variablen] Formular-Aufklappmenü aus Datenbank generieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Variablen] Formular-Aufklappmenü aus Datenbank generieren

    Hi,

    ich brauche für ein Formular ein Aufklappmenü, deren einzelne Punkte sich aus einer Datenbankabfrage aufbauen.

    Die Abfrage funktioniert, auch die Ausgabe als Tabelle:
    PHP-Code:
      <table border="0" cellpadding="1" cellspacing="1">
        <tr>
          <td>event_name</td>
          <td>event_date</td>
        </tr>
        <?php do { ?>
        <tr>
          <td><?php echo $row_Events['event_name']; ?></td>
          <td><?php echo $row_Events['event_date']; ?></td>
        </tr>
        <?php } while ($row_Events mysql_fetch_assoc($Events)); ?>
      </table>
    nicht aber als Aufklappmenü. Was mache ich falsch? :
    PHP-Code:
    <form name="form1" method="get" action="index.php">
    <select name="select">
      <?php
    do {
    ?>
      <option value="<?php echo $row_Events['event_name']?>"><?php echo $row_Events['event_name']?></option>
      <?php
    } while ($row_Events mysql_fetch_assoc($Events));
      
    $rows mysql_num_rows($Events);
      if(
    $rows 0) {
          
    mysql_data_seek($Events0);
       
    $row_Events mysql_fetch_assoc($Events);
      }
    ?>
    </select>
    <input type="submit" value="anzeigen">
    </form>
    Herzlichen Dank
    macangelo

  • #2
    Zeig mal die Ausgabe deines Skripts
    Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

    um so schlimmer für die Tatsachen.

    Kommentar


    • #3
      gerne:
      Ausgabe meines Scriptes

      erst kommt die kleine Tabelle mit den (beiden) Veranstaltungen die ich im html-code angegeben habe.

      Dann das Aufklappmenü.

      Unten kommt dann die Tabelle, die mal damit umgehen soll.

      herzlichen Dank

      macangelo

      Kommentar


      • #4
        Ehm, ja natürlich. Das hätte man auch ohne Ausgabe gesehen.

        Du darfst hier keinen do-while Loop verwenden, da du ja sonst auf die Variable zugreifst, bevor Du sie deklarierst.

        ==>
        PHP-Code:
        while ($row_Events mysql_fetch_assoc($Events)) {

        printf('  <option value="%s">%s</option>\n',
          
        $row_Events['event_name'],
          
        $row_Events['event_name']

        Noch ein paar Tipps am Rande:
        1. <br><br><br> bringt gar nichts, wenn du einen größeren Abstand haben willst, dann mach <p style="height:100px;">
        2. Trenne Code von Inhalt. Das ist eine ganz wichtige Regel, wenn Du mal ein größeres Projekt machst, dann bist Du um jedes Zeichen froh, das nicht in deinem Code steht.
        3. Verwende Doch eine Klasse um deine Select-Box zu erstellen, es gibt Millionen davon
        Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

        um so schlimmer für die Tatsachen.

        Kommentar


        • #5
          Thanks - but

          wie wäre das denn jetzt richtig?

          Übrigens, selbst wenn ich die do-while-Schleife weglasse, werden Werte nicht geparst...

          Herzlichen Dank

          macangelo

          Kommentar


          • #6
            Sorry, wenn ich deinen Code jetzt so umbaue, aber es kraust mich einfach bei dem Anblick.

            Das ist ja fast ein Verbrechen an der Kunst (sorry)

            Template:
            Code:
            <html>
            <head>
            <title></title>
            </head>
            <body>
            <form name="form1" method="get" action="index.php">
            <select name="select">
              {$s_options_events}
            </select>
            </form>
            </body>
            </html>
            PHP
            PHP-Code:
            <?php

            require_once('Smarty.class.php');

            ....
            while(
            $a_cur_event=mysql_fetch_assoc($r_events)){
              
            $s_options_events.=sprintf('<option value="%s">%s</option>',
                
            $a_cur_event['event_name'],
                
            $a_cur_event['event_name']);
            }
             
            $c_smarty=new Smarty();
            $c_smarty->assign('s_options_events'$s_options_events);
            $c_smarty->display('templat.tpl');
            ?>
            Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

            um so schlimmer für die Tatsachen.

            Kommentar


            • #7
              Hi Winner

              Erst einmal herzlichen Dank für Deine Antworten und Deine Mühe. Ich muß dazu sagen, dass ich - wie man leicht sieht - in die ganze PHP-Materie noch nicht sehr tief eingestiegen bin, sprich am Anfang bin und lerne.

              Dass es Dich graust bei meiner Vermischung von html- und PHP-Code verstehe ich gut. Dass dieses Smarty ein sehr hilfreiches Tool ist verstehe ich auch. Was ich - in Deiner sicherlich eleganten Lösung - nicht verstanden habe ist, wo mein Fehler lag und wie ich den korrigieren kann (damit ich lernen und verstehen kann!). Wenn Du mir dazu einen kleinen Hinweis geben könntest wäre das klasse.

              Darüberhinaus werde ich Deine Tipps gerne beherzigen.

              Einen schönen Tag

              macangelo

              Kommentar


              • #8
                Du musst der Variabeln einen Wert zuordnen, bevor du sie ansprechen kannst. Deshalb darfst Du keine do {} while verwenden, sondern eine {} while Schleife.

                Und verwende sprintf() statt deinem HTML Code, dann passt das.
                Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

                um so schlimmer für die Tatsachen.

                Kommentar

                Lädt...
                X