Smarty html_options Problem

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

  • Smarty html_options Problem

    Hallo zusammen,
    ich habe ein Problem mit der Vorselektierung in einem DropDown-Feld, das mit der Funktion "html_options" aus der Smarty-Template-Engine erstellt wurde.

    Zum Verständnis:

    Es geht bei der Projekt um die datenbankbasierte Verwaltung von Rechnern, Druckern und Monitoren. In dem Code soll ein Formular zum Ändern von Rechnerdaten vorbereitet und angezeigt werden. Vorbereiten heißt, dass das Änderungsformular mit Werten aus einer ACCESS-Datenbank (deshalb ODBC) gefüllt wird. Man soll natürlich einem Rechner auch einen Drucker zuweisen können. Ist ein Drucker bereits an den Rechner angeschlossen, soll er im Dropdown-Feld vorselektiert werden, was aber irgendwie nicht klappen will...

    Hier mal der vereinfachte PHP-Code:

    PHP-Code:
    // Verfügbare Drucker auflisten
    $res=odbc_exec($connect,"SELECT * FROM Drucker");
    for(
    $a=0;$row=odbc_fetch_array($res);$a++)
    {
         
    // Gucken ob der Drucker schon irgendwo angeschlossen ist
         
    if(!odbc_fetch_row(odbc_exec($connect,"SELECT * FROM Rechnerinfos
                                       WHERE Drucker='"
    .$row["name"]."' 
                                       AND Host_Name<>'"
    .$_GET["hostname"]."' 
                                       AND standort='"
    .$_GET["standort"]."'")))
         {
               
    $drucker[]=$row["name"];
         }
    }
    // Daten aus der Rechnerinfos-Tabelle holen
    $rechnerinfos=odbc_fetch_array(odbc_exec($connect,"SELECT * FROM Rechnerinfos 
                                                        WHERE Host_Name='"
    .$_GET["hostname"]."'"));
                    
    // Daten aus der BGInfo-Tabelle holen
    $res=odbc_exec($connect,"SELECT * FROM BGInfoTable 
                               WHERE Host_Name='"
    .$_GET["hostname"]."'");
    $bgidata=odbc_fetch_array($res);

    $smarty->assign('bgidata',$bgidata);
    $smarty->assign('drucker',$drucker);
    $smarty->assign('rechnerinfos',$rechnerinfos);
    $smarty->assign('hostname',$_GET["hostname"]);
    $smarty->display('rechner_aendern_form.html'); 
    Soweit alles klar? In der Variable "rechnerinfos['Drucker']" (Der Wert zum Vorselektieren) steckt der richtige Wert...schon überprüft...

    Nun in HTML:

    PHP-Code:
    (...)
    <
    tr bgcolor='FFFFFF'>
        <
    td class='rechner_td1'>
            <
    font class='font1'>Drucker:</font>
        </
    td>
        <
    td class='rechner_td1'>
            <
    select size='1' name='rechner[]'>
                    <
    option>keine</option>
                    {
    html_options selected=$rechnerinfos.Drucker options=$drucker}
            </
    select>
        </
    td>
        <
    td class='rechner_td1'>
            <
    font class='font1'>Betriebssystem:</font>
        </
    td>
        <
    td class='rechner_td1'>
            <
    font class='font1'>{$bgidata.OS_Version}</font>
        </
    td>
    </
    tr>
    (...) 
    Ich kann machen was ich will...das Vorselektieren klappt einfach nicht.

    Ich hoffe einer von euch kann mir helfen.

    Grüße,
    Sebastian
    Zuletzt geändert von Sebix; 23.08.2007, 15:12.

  • #2
    code umbrechen.

    Kommentar


    • #3
      Hi Sebix

      Kann dir keine problemspezifische Antwort geben. Aber bei mir hat Smarty teilweise zicken gemacht, wenn ich Arrays loopen wollte, die mehr als ein Eintrag hatten. Musste die nach dem Auslesen noch speziell bearbeiten, damit ich mit nem Counter durchrasseln konnte.

      Kanns schlecht beschreiben, drum geb ich dir kurz ein Beispiel.

      So sieht meine Funktion aus, die ich anstelle von mysql_fetch_array brauche:

      PHP-Code:
          public static function db_fetch_output_data($res)    {
              
      $x 0;
              while(
      $row mysql_fetch_array($resMYSQL_ASSOC))    {
                  foreach(
      $row as $key=>$val)    {
                      
      $retval[$x][$key] = $val;
                  }
                  
      $x++;
              }
          return 
      $retval;
          } 
      Gibt dann ein Array in de Form

      $array[0]['SelectOption'] = "Value1";
      $array[1]['SelectOption'] = "Value2";
      $array[2]['SelectOption'] = "Value3";

      Wenn ich jetzt das in nem Select will, mach ich das folgendermassen:

      PHP-Code:
      <select name="something">
      {
      section name=array loop=$array}
      <
      option value="{$array[array].SelectOption}">{$array[array].SelectOption}</option>
      {/
      section}
      </
      select
      Bei fragen, einfach fragen...

      Gruss
      De Igäl

      Kommentar


      • #4
        Original geschrieben von TobiaZ
        code umbrechen.
        besser?

        @Igäl:
        Danke, aber das löst mein Problem nicht. Aufgelistet wird bei mir alles ohne Probleme, aber eben nicht vorselektiert... ;(

        Kommentar


        • #5
          mal den erzeugten html-code angesehen? steht den da irgendwas mit selected= ?

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Nein, steht kein selected drin.

            Kommentar


            • #7
              Hast du $rechnerinfos.Drucker mal ausgeben lassen? Andere Möglichkeit ist, die Funktion html_options mal direkt zu debugen.
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar


              • #8
                Jap, die Variable gibt den richtigen Wert aus.

                Andere Möglichkeit ist, die Funktion html_options mal direkt zu debugen.
                Das heißt?

                Kommentar


                • #9
                  Das heißt?
                  Smarty Code, da gibt es glaub ich einen Ordner mit den Funktionen, Eingaben darin ausgeben lassen, prüfen ob If-Zweige erreicht werden, usw.
                  Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                  Kommentar


                  • #10
                    Problem gelöst! Im Ausgabe-HTML-Code hatten die Values der options einen falschen Wert.

                    Kommentar

                    Lädt...
                    X