Auswahlmenü mit variablen Werten

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

  • Auswahlmenü mit variablen Werten

    Ich hätt' da mal ne Frage.
    Meine Absicht ist es, ein Auswahlmenü in meinem Formular zu erstellen. Die auswählbaren Punkte sollen einer Tabelle der Datenbank entnommen werden.
    Ich hab jetzt einiges ausprobiert, komme aber auf keinen grünen Zweig.
    Wie unten zu sehen, habe ich versucht das Problem mit einer while-Schleife zu lösen, aber das mit den Variablen klappt so irgendwie nicht.
    Kann mir jemand helfen und sagen, was ich falsch mache? Irgendwie muss das ja gehen...

    PHP-Code:
      function load_admin_infolinksadd($id)
      {
            include(
    '../inc/database.inc.php');
            
    $connection mysql_connect($db['host'],$db['uid'],$db['pwd']);
            
    mysql_select_db($db['db']);
            
    $sql_theme 'SELECT theme FROM info_theme';
            
    $result_theme mysql_query($sql_theme);
            
    $tmprslt '';
            
    $tmprslt .= '<form action="infolinks_insert.php" method="post">';
            
    $tmprslt .= '<table width="100%" border="0" 
    cellpadding="2" cellspacing="2">'
    ;
            
    $tmprslt .= '<tr><th>Thema:</th><td>';
            while(
    $info_theme 
    mysql_fetch_object($result_theme))
            {
              
    $tmprslt .= '<select size="4" name="theme" 
    multiple><option value=$theme>$info_theme->theme</select>'
    ;
            }
            
    $tmprslt .= '</td></tr>';
            
    $tmprslt .= '<tr><th>Titel:</th><td><input type="text" name="title" size="64"></td></tr>';
            
    $tmprslt .= '<tr><th>URI:</th><td><input type="text" name="uri" size="64"></td></tr>';
            
    $tmprslt .= '<tr><th>Kommentar:</
    th><td><textarea name="comment" cols="64" 
    rows="16"></textarea></td></tr>'
    ;
            
    $tmprslt .= '<tr><th>Sichtbar?</th><td><input 
    type="radio" name="visible" value="0" checked> ja 
    <input type="radio" name="visible" value="-1"> nein</
    td></tr>'
    ;
            
    $tmprslt .= '<tr><td colspan="2"><input 
    type="submit" value="Speichern"> <input type="reset" 
    value="Zurücksetzen"></td></tr>'
    ;
            
    $tmprslt .= '</table>';
            
    $tmprslt .= '</form>';
        return 
    $tmprslt;
      } 

  • #2
    "klappt so nicht" ist eine eher schlechte Fehlerbeschreibung.

    Darüber hinaus sollte dir ein Blick in den HTML-Quelltext schon zeigen, was du falsch machst...

    Kommentar


    • #3
      ok. war evtl etwas aussagelos, sorry.
      Also nochmal:
      Ich bekomme keine Fehlermeldung, aber in der Zeile Thema dreimal die Ausgabe '$info_theme->theme' statt der Inhalte der Tabelle.
      Irgendwas stimmt also mit meinr while-schleife nicht, wenn das überhaupot so funtioniert wie ich das dachte.

      Der Quelltext hat mir ehrlich gesagt nicht unbedingt weitergeholfen.

      Bin ich denn aufm völlig falschen dampfer mit meiner whileschleife?

      Kommentar


      • #4
        Grundlagen: Strings richtig trennen:

        http://www.php-resource.de/forum/sho...ichtig+trennen

        Kommentar


        • #5
          danke Dir erstmal für die schnelle antwort.
          Du hast recht,... es sind immerwieder die grundlagen an denen es bei mir hapert und zu denen ich häufig nicht die auch für mich verständlichen quellen finde. Aber ich bin stetig dabei meine Lücken zu füllen.

          Anyway. Ich hab das ganze soweit hinbekommen. Das heisst: Mein Auswahlmenü funktioniert.

          PHP-Code:
              include('../inc/database.inc.php');
              
          $connection mysql_connect($db['host'],$db['uid'],$db['pwd']);
              if(
          $connection)
              {
                
          mysql_select_db($db['db']);
                
          $sql 'SELECT id, theme, title, comment, uri, visible FROM info_links WHERE id = '.$id;
                
          $sql_theme 'SELECT theme FROM info_theme';
                
          $result mysql_query($sql);
                
          $result_theme mysql_query($sql_theme);
                if(
          $result)
                {
                  
          $info_links mysql_fetch_object($result);
                  
          $tmprslt .= '<form action="infolinks_update.php" method="post">';
                  
          $tmprslt .= '<table width="100%" border="0" cellpadding="2" cellspacing="2">';
                  
          $tmprslt .= '<tr><th>Thema:</th><td>';
                  while(
          $info_theme mysql_fetch_object($result_theme))
                  {
                  
          $tmprslt .= '<select name="theme" size="3" 
          multiple><option value="'
          .$info_theme->theme.'">"'.
          $info_theme->theme.'"</select>';
                  }
                  
          $tmprslt .= '</td></tr>';    
          ....... 
          Doch gibt es weiterhin zwei Probleme:

          Wenn ich in meinem Formular einen Wert ausgewählt habe und einen zweiten danach anklicke, bleibt der erste aktiviert und wird nicht automatisch deaktiviert. Bei meiner alten Version hat das noch gklappt:
          PHP-Code:
                  $tmprslt .= '<select name="theme" size="3" 
          multiple><option value="steuern">Steuern<option 
          value="wirtschaft">Wirtschaft<option 
          value="freizeit">Freizeit<option 
          value="lokales">Lokales</select>'

          nur jetzt mit der while-schleife funktioniert das nicht mehr. Weiß jemand warum?

          Zweites Problem:
          Ich möchte den bereits in der Tabelle gespeicherten Wert im Auswahlmenü markieren. Geht das einfach mit php (und wenn ja, wie) oder muss ich mich da an JS wagen?

          dnke euch für jegliche hilfe,
          toby

          Kommentar


          • #6
            könnte daran liegen, dass du multiple angibst.

            das markieren ist ebenfalls pures html. guck mal bei selfhtml nach selected im bezug auf dein selectfeld,

            Kommentar


            • #7
              nur jetzt mit der while-schleife funktioniert das nicht mehr. Weiß jemand warum?
              wohl eher ein html-problem. welche doctype-defintion hast du?

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

              Kommentar


              • #8
                @tobiaz
                ich habe ihn anders herum verstand, er will multiple aber es geht nicht

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

                Kommentar


                • #9
                  @Kropff:
                  Ich glaube ich will kein multiple. Zumindest dann nicht, wenn es heisst, dass ich damit MEHRERE Menüpunkte auswählen kann.

                  Ich möchte zumindest nur EINEN Menüpunkt von MEHREREN die zur Auswahl stehen, markieren können.

                  Hab jetzt mal das multiple weggenommen und es hat nix geändert.

                  welche doctype-defintion hast du?
                  Noch gar keine.
                  Hab in meinem HTML-Dokument noch keine eingetragen.

                  Kommentar


                  • #10
                    hoppala.
                    hab grad festgestellt, dass das mit der while-schleife wohl so doch nicht funktioniert.
                    Ich kann deshalb mehrere Felder auswählen, weil er mehere Auswahlfelder anlegt und nicht eines mit mehreren Werten. *schäm*

                    Hab meine falsche while-Schleife auf jeden Fall nochmal überarbeitet und nun funktioiert es und sieht so aus:
                    PHP-Code:
                            $tmprslt .= '<select name="theme" size="1">';
                            while(
                    $info_theme mysql_fetch_object($result_theme))
                            {
                            
                    $tmprslt .='<option value='.$info_theme->theme.'>'.$info_theme->theme.'';
                            }
                            
                    $tmprslt .= '</select>'
                    Ich danke Euch dennoch für alle Geddankenanstöße. Es hilft doch immer wieder alles irgendwie weiter.

                    Nur das Prob. mit der Anzeige des 'gespeicherten' Werts also jenem, der in der Datenbank liegt, das weiß ich immer noch nicht wie das gehen soll.
                    Der HTML-Tag wäre wohl <option selected>.
                    Das heißt ja wohl ich müsste eine if-abfrage machen, die die einträge überprüft und im gegebenen fall nicht <option> sondern <option selected> verwendet.


                    Könnt Ihr mir evtl einen kleinen Schubbser geben, wie der code ungefähr aufgebaut sein müsste?

                    toby

                    Kommentar


                    • #11
                      hmm, dass sollte dir nach meinem ersten posting schonmal aufgefallen sein

                      Nur das Prob. mit der Anzeige des 'gespeicherten' Werts also jenem, der in der Datenbank liegt, das weiß ich immer noch nicht wie das gehen soll.
                      Der HTML-Tag wäre wohl <option selected>.
                      Das heißt ja wohl ich müsste eine if-abfrage machen, die die einträge überprüft und im gegebenen fall nicht <option> sondern <option selected> verwendet.


                      Könnt Ihr mir evtl einen kleinen Schubbser geben, wie der code ungefähr aufgebaut sein müsste?
                      Es ist genau das. Nicht mehr und nicht weniger. Jetzt fasse deine Worte in einen Code und gut ist.

                      Kommentar


                      • #12
                        genial.
                        Es hat geklappt.
                        ich danke Euch allen für Eure Hilfe.

                        toby

                        Kommentar

                        Lädt...
                        X