Zurück   PSD-Tutorials.de > Webbereich > PHP und andere Scriptsprachen


Antwort
 
Themen-Optionen
Alt 24.05.2012, 11:50   #1 Nach oben scrollen
Powerproster
Newbie
 

Registriert seit: 14.04.2009
Beiträge: 91

Dynamische Auswahlliste: Name und ID übergeben

Hallo zusammen,

ich lasse mir eine Auswahlliste dynamisch gererieren:

PHP-Code:
 <select name="auswahl">
        <?php
            $sql
="SELECT id, firstname, lastname FROM addressbook ORDER BY lastname, firstname ASC";
            
$result mysql_query($sql);
            while (
$myrow mysql_fetch_array($result)) {
                echo 
"<option>".$myrow["lastname"]." "$myrow["firstname"]. "</option>\n";
            }
        
?>
    </select>
Gibt es eine Möglichkeit die ID des angewählten Listenelementes auch zu übergeben?
__________________
in diesem Sinne Isometric
  Mit Zitat antworten


Alt 24.05.2012, 12:57   #2 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Dynamische Auswahlliste: Name und ID übergeben
<option>-Tags können ein value-Attribut besitzen, genauso wie die meisten anderen Elemente eines Formulars. Du musst also nur die id des Datensatzes als value erzeugen lassen.


Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall
  Mit Zitat antworten
Alt 25.05.2012, 12:26   #3 Nach oben scrollen
Powerproster
Newbie
Themenstarter
 

Registriert seit: 14.04.2009
Beiträge: 91
AW: Dynamische Auswahlliste: Name und ID übergeben
Das Zuweisen der ID an value habe ich hinbekommen, aber ich scheitere daran, wenn ich nicht nur die ID, sondern auch den Namen zuweisen möchte.

$row[0] ist die ID
$row[1] ist der Name

Inzwischen habe ich eine Funktion, die so aussieht:
PHP-Code:
  while ($row mysql_fetch_row($result)) {
    
$anzeige $row[0] . ' ' $row[1];
    
$optionlist .= '<option value="' $row[0] . '"' . ($row[0] == $selection ' selected="selected"' '') . '>' $anzeige .'</option>';
    } 
So bekomme ich die ID übergeben und kann sie weiter bearbeiten. Allerdings hätte ich im value auch noch gern den Namen und das bekomme ich nicht hin ...
__________________
in diesem Sinne Isometric
  Mit Zitat antworten
Alt 25.05.2012, 13:10   #4 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Dynamische Auswahlliste: Name und ID übergeben
Hmmm? Wenn du weißt,
a) wie du $row[0] ausgibst,
b) das der Name in $row[1] steht und
c) wie Strings verbunden werden,
wieso gibst du dann nicht einfach $row[1] verbunden mit $row[0] aus?


Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall
  Mit Zitat antworten
Alt 25.05.2012, 13:27   #5 Nach oben scrollen
Powerproster
Newbie
Themenstarter
 

Registriert seit: 14.04.2009
Beiträge: 91
AW: Dynamische Auswahlliste: Name und ID übergeben
Gute Frage ....

So wie du es vorgeschlagen hast klappt es.

Ich hatte gedacht es geht "eleganter". Ich brauche die Werte später einzeln und habe versucht das array "row" als value zu übergeben und dann später die verschiedenen Werte des arrays zu verarbeiten.

Jetzt verbinde ich die Werte des arrays "row" erst mit einem Trennzeichen zu einem String und später trenne ich das ganze wieder mit der explode-Funktion.

Gibt es keine Möglichkeit das array "row" komplett zu übergeben? So habe ich es versucht, allerdings erfolglos ...

PHP-Code:
  while ($row mysql_fetch_row($result)) {
    
$anzeige $row[0] . ' ' $row[1];
    
$optionlist .= '<option value="' $row '"' . ($row[0] == $selection ' selected="selected"' '') . '>' $anzeige .'</option>';
    } 
__________________
in diesem Sinne Isometric
  Mit Zitat antworten
Alt 25.05.2012, 13:38   #6 Nach oben scrollen
Newbie
Newbie
 
Benutzerbild von rwGrafik
 

Registriert seit: 24.02.2010
Beiträge: 5
AW: Dynamische Auswahlliste: Name und ID übergeben
Warum gibst Du die id nicht einfach in einem id-Attribut und den namen im value aus?

Um alle Inhalte von row auszugeben würd ich eine foreach-Schleife empfehlen:
z.B. so: foreach($row as $ausgabe) echo ausgabe;
  Mit Zitat antworten
Alt 25.05.2012, 14:08   #7 Nach oben scrollen
Powerproster
Newbie
Themenstarter
 

Registriert seit: 14.04.2009
Beiträge: 91
AW: Dynamische Auswahlliste: Name und ID übergeben
Ich hole mal etwas weiter aus:

die dynamische Auswahlliste wird so erzeugt:
PHP-Code:
<select name="eintrag" size="1"> <?php echo  create_optionlist('addressbook''id''lastname, firstname'$id_hf);  ?> </select>
in der Funktion "create_optionlist" steckt dann die While-Schleife:

PHP-Code:
while ($row mysql_fetch_row($result)) {
    
$anzeige $row[0] . ' ' htmlspecialchars($row[1]);
    if (isset (
$row[2])) {
    
$anzeige .= " " htmlspecialchars($row[2]) ;
    }
    
    
$optionlist .= '<option value="' $row[0] . ',' $row[1] . '"' . ($row[0] == $selection ' selected="selected"' '') . '>' $anzeige .'</option>'//     $optionlist .= '<option value="' . $row[0] . '"' . ($row[0] == $selection ? ' selected="selected"' : '') . '>' . $anzeige .'</option>';
    
}
  return 
$optionlist
Nach dem Absenden des Formulares werden folgende Werte für den Eintrag in die Datenbank erzeugt:

PHP-Code:
 $eintrag_sql explode(","$eintrag);
        
$team['lastname']              = $eintrag_sql[1];
        
$team['id_hf']                 = $eintrag_sql[0]; 
Ich suche jetzt eine Möglichkeit, wie ich das Verketten des Strings und das anschließende Exploden umgehen kann. Müßte doch möglich sein, oder?
__________________
in diesem Sinne Isometric
  Mit Zitat antworten
Alt 25.05.2012, 15:11   #8 Nach oben scrollen
Newbie
Newbie
 
Benutzerbild von rwGrafik
 

Registriert seit: 24.02.2010
Beiträge: 5
AW: Dynamische Auswahlliste: Name und ID übergeben
So wie ich das sehe, wird das nicht anders gehen, da nur ein Name-Attribut pro HTML-TAG erlaubt ist. Den Inhalt desselben, kannst Du dann, wie geschen auslesen.
Und so kompliziert, bzw. aufwendig ist das doch gar nicht, oder?
Ralph
  Mit Zitat antworten
Alt 25.05.2012, 15:20   #9 Nach oben scrollen
Powerproster
Newbie
Themenstarter
 

Registriert seit: 14.04.2009
Beiträge: 91
AW: Dynamische Auswahlliste: Name und ID übergeben
Der Aufwand hält sich zwar in Grenzen, allerdings wäre es mit einem Array flexibler und ich könnte auch mal drei oder noch mehr einzelne Werte übergeben ohne den Code jedes mal anpassen zu müssen:
__________________
in diesem Sinne Isometric
  Mit Zitat antworten
Alt 25.05.2012, 15:36   #10 Nach oben scrollen
Newbie
Newbie
 
Benutzerbild von rwGrafik
 

Registriert seit: 24.02.2010
Beiträge: 5
AW: Dynamische Auswahlliste: Name und ID übergeben
Dann machs doch wie geschrieben:
ersetze folgende Zeile:
Zitat:
$optionlist .= '<option value="' . $row[0] . ',' . $row[1] . '"' . ($row[0] == $selection ? ' selected="selected"' : '') . '>' . $anzeige .'</option>'; // $optionlist .= '<option value="' . $row[0] . '"' . ($row[0] == $selection ? ' selected="selected"' : '') . '>' . $anzeige .'</option>';
durch:
Zitat:
$optionlist .= '<option value="';
//hierdurch ist die Anzahl der enthaltenen Werte unerheblich
foreach[$row as $x) $optionlist .= $x . ',';
$optionlist .='"' . ($row[0] == $selection ? ' selected="selected"' : '') . '>' . $anzeige .'</option>'; // $optionlist .= '<option value="' . $row[0] . '"' . ($row[0] == $selection ? ' selected="selected"' : '') . '>' . $anzeige .'</option>';
  Mit Zitat antworten
Alt 25.05.2012, 15:38   #11 Nach oben scrollen
Newbie
Newbie
 
Benutzerbild von rwGrafik
 

Registriert seit: 24.02.2010
Beiträge: 5
AW: Dynamische Auswahlliste: Name und ID übergeben
Hm, wie packt man Code in son PHP-Code-Behälter?
Nu ja muss jetzt los, Dir noch viel Spass und frohe Pfingsten.
Ralph
  Mit Zitat antworten
Alt 25.05.2012, 17:05   #12 Nach oben scrollen
Posting-Frequenz: 14µHz
Premium-SupporterPremium-SupporterPremium-SupporterPremium-SupporterPremium-Supporter
 
Benutzerbild von Duddle
 

Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.262
AW: Dynamische Auswahlliste: Name und ID übergeben
Du musst doch nicht die an die ausgewählte id angehängten Daten komplett im Formular verstauen.

Wenn du eine eindeutige id hast und übergeben bekommst, warum fragst du dann nicht die Datenbank nach den Daten für diese id? Ich akzeptiere "aber das sind 2 Datenbank-Anfragen statt 1!" nicht als Antwort, solche "Optimierungen" sind im Normalfall unnötig/übereifrig.



Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall
  Mit Zitat antworten
Alt 25.05.2012, 21:43   #13 Nach oben scrollen
Powerproster
Newbie
Themenstarter
 

Registriert seit: 14.04.2009
Beiträge: 91
AW: Dynamische Auswahlliste: Name und ID übergeben
@Duddle:
da hast natürlich vollkommen recht, dass es Quatsch ist alle Daten, die an der ID dran hängen in die andere Tabelle zu kopieren.
In diesem speziellen Fall ist es für mich aber praktischer wenn ich neben der ID noch 2 weitere Werte (Vorname und Nachname) übernehme, weil die Hauptseite so aufgebaut ist, dass man die angezeigten Spalten per Variablen steuern kann. Und im Moment bin ich sicher überfordert, wenn ich versuche die Startseite so umzuprogrammieren, dass ich über die ID mir aus meheren Tabellen Spalten anzeigen kann lassen kann, deren Auswahl ich über eine Config-Datei steuere.
Alle anderen Auswertungen und Anzeigen greifen über die IDs dann immer auf die Original-Tabelle zu.
Ist sicher nicht perfekt programmiert, aber die übernommen Werte (Vorname und Nachname) ändern sich in der Regel nicht.

@rwGrafik:
danke dir, so funktioniert es. Einziger kleiner Schönheitsfehler ist ein "," zu viel, aber das stört ja eigentlich nicht, weil es nur als Trennzeichen funktioniert. Hast du noch eine Idee, wie man das noch wegbekommt? Im Prinzip dürfte beim letzten Schleifendurchlauf kein "," mehr angehängt werden.

Und ...
Das Icon für den [ PHP ] - Code findest du 3 Icons neben dem Zitat-Icon.
__________________
in diesem Sinne Isometric
  Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen