Drop-Down-Feld auslesen, speichern und updaten

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

  • Drop-Down-Feld auslesen, speichern und updaten

    Folgendes Problem:

    Ich lasse in einem Drop-Down-Feld 5 festgelegte Einträge aus einer Datenbank erscheinen zum Auswählen. Die Auswahl wird dann wiederrrum in der Datenbank in einer anderen Tabelle gespeichert. soweit wunderbar. Aber jetzt muss ich diese gespeicherten Daten auch updaten, sprich ändern können. Dabei sollen die festgelegten Daten wieder in einem Drop Down Feld angezeigt werden, allerdings mit dem gespeicherten Eintrag vorselektiert. Ist das machbar ?

    Hier ist mein momentaner Code:
    PHP-Code:
    <td align="left" width="300">&nbsp;Bearbeiter:&nbsp;&nbsp;<select name="bearbeiter_id">
                        <?php
                            $abfrage_bearbeiter 
    "SELECT * FROM mitarbeiter ORDER BY bearbeiter_id ASC";  //Mitarbeiter aus Datenbank aufsteigend nach ID auslesen
                            
    $data_ma_name mysql_query($abfrage_bearbeiter); //Abfrage mit "mysql_query" in eine Variable schreiben
                            
    while($feld_ma_name mysql_fetch_array($data_ma_name))  // Schleife für Listenfeld wird solange durchlaufen
                                                                                     // bis in Variable kein Datentyp mehr ist
                            
    {
                                echo 
    "<option value='".$feld_ma_name['bearbeiter_id']."'>".$feld_ma_name['bearbeiter_name']."</option>\n";  // Ausgabe des Namens in Listenfeld, ID wird als VALUE übergeben
                            
    }
                        
    ?>
                            </select></td>

  • #2
    <option selected="selected" sorgt dafür,dass ein eintrag standardmäßig ausgewählt ist

    du kannst in der while-schleife zumausgeben alle einträge abfragen ob es sich um den gerade eingetragenen handelt und gibst das dann grad aus
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Joa warum ASC ?

      $abfrage_bearbeiter = "SELECT * FROM mitarbeiter ORDER BY bearbeiter_id ASC"; //Mitarbeiter aus Datenbank aufsteigend nach ID auslesen


      $abfrage_bearbeiter = "SELECT * FROM mitarbeiter ORDER BY bearbeiter_id DESC"; //Mitarbeiter aus Datenbank aufsteigend nach ID auslesen

      in diesem Falle wird die höchste ID nach oben gesetzt dann kommt der rest ich dene das müsste dir schon helfen

      also hast du 5 ID`s wird es bei dir so angezeigt:

      1
      2
      3
      4
      5

      Mit DESC anstatt ASC würde es so aussehen:

      5
      4
      3
      2
      1

      mfg
      Jan

      Kommentar


      • #4
        Original geschrieben von mrhappiness
        du kannst in der while-schleife zumausgeben alle einträge abfragen ob es sich um den gerade eingetragenen handelt und gibst das dann grad aus
        is das nicht umstäfnlich wenn die ID automatisch gezählt wird :P ?

        Kommentar


        • #5
          Also, ich habe mii jetzt mal selber geholfen und habe die Idee mit der If-Abfrage aufgegriffen und umgesetzt. Funzt auch soweit wunderbar. Aber an einem Teil des Codes habe ich Probleme:

          Hier der Teil der funktioniert:
          PHP-Code:
          <td align="left" width="160" valign="middle">&nbsp;Server:&nbsp;&nbsp;<select name="server_id">
                              
                              <?php
                              
                                      $abfrage_ser_name 
          "SELECT * FROM server ORDER BY server_id ASC";  // Servernamen aus Datenbank aufsteigend nach ID auslesen
                                      
          $data_ser_name mysql_query($abfrage_ser_name);
                                      while(
          $feld_ser_name mysql_fetch_array($data_ser_name))  // Schleife für Listenfeld
                                      
          {
                                          echo 
          "<option"?> <?php if($data['server_id'] == $feld_ser_name['server_id']){echo("selected");} ?> <?php echo "value='".$feld_ser_name['server_id']."'>".$feld_ser_name['ser_name']."</option>\n";  // Ausgabe in Listenfeld
                                      
          }
                              
          ?>                    
                              </select></td>
          Das Array "$data" enthält den Datensatz, der geändert werden soll.
          Nun kommt der Code der nicht so recht funktioniert:

          PHP-Code:
          $HTTP_REQUEST_VARS = array_merge($HTTP_GET_VARS); // Übergabe der "sb_id" aus der vorherigen Seite
                  $id = $HTTP_REQUEST_VARS['sb_id'];
                  
          $abfrage = mysql_query("SELECT * FROM tagesstatus WHERE tag_id = '$id' "); // Abfrage des Datensatzes mit der "sb_id"
          $data = mysql_fetch_array($abfrage);

          $abfrage_ser_sysname = mysql_query("SELECT ser_sysname FROM server WHERE server_id = '$data[server_id]' ");
          $data_ser_sysname = mysql_fetch_array($abfrage_ser_sysname);
          ...
          ...
          ...
          <td align="left" width="350" valign="middle">&nbsp;Service:&nbsp;&nbsp;<select name="systemname">
                              <?php
                                      $abfrage_ser_sysname 
          "SELECT ser_sysname FROM server ORDER BY server_id ASC";   // Abfrage Datenbank nach dem Systemnamen
                                      
          $data_ser_sysname mysql_query($abfrage_ser_sysname);
                                      while(
          $feld_ser_sysname mysql_fetch_array($data_ser_sysname))  // Schleife für Listenfeld
                                      
          {
                                          echo 
          "<option"?> <?php if($data_ser_sysname[0] == $feld_ser_sysname[0]){echo("selected");}?> <?php echo "value='".$feld_ser_sysname['systemname']."'>".$feld_ser_sysname['ser_sysname']."</option>\n";  // Ausgabe in Listenfeld
                                      
          }
                                      
                              
          ?>
                              </select>
                              </td>
          Im obigen Teil wird der Systemname zu der zugehörigen server_id ausgelesen. Soweit so gut. Aber wenn ich diesen dann unten in der If-Abfrage prüfe um das "selected" zu bekommen, erhalte ich folgende Fehlermeldung:
          $abfrage_ser_sysname = "SELECT ser_sysname FROM server ORDER BY server_id ASC"; // Abfrage Datenbank nach dem Systemnamen
          Diese ist allerdings im Formularfeld enthalten und selektiert.
          Ich weiß immer noch nicht so recht woher dieses "undefined Index" kommt, ich hatte es schonmal und habe es aber dann wegbekommen, aber nun weiß ich nicht so recht woran es liegt.....
          Zuletzt geändert von el_espiritu; 21.08.2003, 10:02.

          Kommentar


          • #6
            PHP-Code:
            if($data_ser_sysname[0] == $feld_ser_sysname[0]) {...} 
            diese abfrage ist extrem unsinnig.

            $data_ser_sysname enthält lediglich die ressourcenkennung deines abfrageergebnisses, aber keinerlei werte - es deshalb mit den in $feld_ser_sysname stehenden werten zu vergleichen, macht keinerlei sinn.

            die "undefined Index"-meldung kommt wahrscheinlich ebenfalls daher. $data_ser_sysname ist kein array, deshalb kannst du auch nicht mit dem index 0 darauf zugreifen.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ja aber mit der server_id klappt's ja auch....da ist $data ein Array mit Indizes, wie stell ich das dann an das ich mit dieser IF-Abfrage zu meinem Ergebnis komme??

              Kommentar


              • #8
                Hat keiner eine Lösung?

                Kommentar

                Lädt...
                X