Portal > Foren > PHP > PHP-Programmierung > Frage zum Tutorial"dynamisches Füllen einer SELECT-Liste"
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 11.03.2006, 23:22 Nach oben    #1
flupsi
Gast
 
Beiträge: n/a
Standard Frage zum Tutorial"dynamisches Füllen einer SELECT-Liste"

Hallo zusammen,

Ich habe eine Frage zu diesem Tutorial.

Wieso kann ich eine SELECT-Liste nicht einfach so anlegen? :

PHP-Code:
echo "<select name="irgendwas" size="1"\n";

//hier steht die DB-Abfrage

$result mysql_query($sql) or die (mysql_error());
while(
$ausgabe=mysql_fetch_assoc($result))
{
echo 
" <option value="$ausgabe[id]">$ausgabe[Name]</option>\n";
}
echo 
" </select>\n"
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.03.2006, 23:28 Nach oben    #2
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Also zuerst sind deine echo()s mal falsch

Der Vorteil daran, das ganze in eine Funktion zu packen, ist die Arbeitsersparnis und bei mehrerem Vorkommen der <select>-Liste und natürlich auch die bessere Wiederverwendbarkeit.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.03.2006, 23:47 Nach oben    #3
flupsi
Gast
 
Beiträge: n/a
Standard

Ups...habe nicht escaped. Wenn es mal schnell gehen soll...*g*
Also gibt es grundsätzlich keine Einwände dagegen, wenn man es so macht?

Grüße
flupsi
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.03.2006, 23:58 Nach oben    #4
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Nein, ich denke nicht. Die Funktion ist halt der bequemere und überischtlichere Weg
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.03.2006, 23:59 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Natürlich geht das so auch. Das ist ja gar nicht das Ziel dieses Tutorials.
Das Ziel ist ja, eine Funktion zu schreiben, die man immer wieder verwenden kann.

Weiterhin lernt man in dem Tutorial - bzw. ich hoffe, dass man es lernt - wie man solche Probleme mittels eigener Funktionen umsetzt.
Weiterhin hat Deine Version ja keine Möglichkeit der Konfiguration der SELECT-Liste.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 00:12 Nach oben    #6
flupsi
Gast
 
Beiträge: n/a
Standard

Meine Frage habe ich aus einem anderem Grund gestellt. Ich habe bereits beide Versionen benutzt. Wenn ein und dieselbe Select-Liste öfter gebraucht wird, hat Deine Version mittels einer Funktion ganz klare Vorteile. Braucht man die Liste nur einmal, macht die Funktion keinen Sinn.

Naja, ich dachte, es gäbe vielleicht noch einen anderen Grund für den Einsatz einer Funktion. Es hätte ja sein können, das Select-Listen einen Sonderstatus bei der PHP-Programmierung haben. Da habe ich wohl etwas falsch verstanden und mich dann in dieser Idee verrannt.
Ich habe schon seit einigen Tagen nach der Besonderheit von Select-Listen in der PHP-Programmierung gegoogelt (und natürlich nichts gefunden).

Vielleicht wollte ich das Forum auch mal wieder mit einer ausgesucht blöden Frage auflockern (jetzt schäm ich mich)...

Grüße
flupsi
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 00:22 Nach oben    #7
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Zitat:
Zitat von flupsi
Wenn ein und dieselbe Select-Liste öfter gebraucht wird, hat Deine Version mittels einer Funktion ganz klare Vorteile. Braucht man die Liste nur einmal, macht die Funktion keinen Sinn.
Und das ist genau falsch.

Die Funktion erstellt doch jede beliebige Liste. Du gibst Daten und Konfigurationseinstellungen als Parameter in die Funktion und erstellst somit jede beliebige Liste.
Du könntest die Funktion ja sogar noch erweitern, um der Liste beliebige CSS-Eigenschaften oder Klassen hinzufügen zu können.

Meiner Ansicht nach ist die Arbeit mit Funktionen in den meisten Fällen sinnvoller, weil man einfach ein strukturiertes System erstellt.
Ist nur eine persönliche Erfahrung, aber ich hoffe eben, dass ich diese dem Ein oder Anderen noch mitgeben kann .


Zitat:
Zitat von flupsi
Es hätte ja sein können, das Select-Listen einen Sonderstatus bei der PHP-Programmierung haben.
Um es nochmal klar zu sagen: Nein.
Auswahllisten sind HTML-Elemente und haben insofern nichts mit PHP zu tun. Sie dienen ausschließlich der Darstellung von Inhalten. PHP ist zu diesem Zeitpunkt, wie allseits bekannt, schon längst mit der Arbeit fertig.

Zitat:
Zitat von flupsi
jetzt schäm ich mich
Quatsch. Meiner Ansicht nach hast Du es genau richtig gemacht. Du hast Dich mit dem Tutorial befasst, hattest eine eigene Idee, bist dieser Idee nachgegangen, bist zu keinem eindeutigen Ergebnis gekommen und hast dann hier gefragt.

Finde ich absolut richtig!

Nichtsdestotrotz ist der Thread im falschen Forum.

Der Thread wurde verschoben, wegen ...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten.,

verschoben

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 11:41 Nach oben    #8
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

Zitat:
Zitat von Ben
Quatsch. Meiner Ansicht nach hast Du es genau richtig gemacht. Du hast Dich mit dem Tutorial befasst, hattest eine eigene Idee, bist dieser Idee nachgegangen, bist zu keinem eindeutigen Ergebnis gekommen und hast dann hier gefragt.

Finde ich absolut richtig!
Find ich auch. Hast alles richtig gemacht, hast deinen Kopf benutzt und dann nachgehackt. so wie es sein muss
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 12:39 Nach oben    #9
flupsi
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat:
Zitat:
Zitat von flupsi
Wenn ein und dieselbe Select-Liste öfter gebraucht wird, hat Deine Version mittels einer Funktion ganz klare Vorteile. Braucht man die Liste nur einmal, macht die Funktion keinen Sinn.
Und das ist genau falsch.

Die Funktion erstellt doch jede beliebige Liste. Du gibst Daten und Konfigurationseinstellungen als Parameter in die Funktion und erstellst somit jede beliebige Liste.
Du könntest die Funktion ja sogar noch erweitern, um der Liste beliebige CSS-Eigenschaften oder Klassen hinzufügen zu können.

Meiner Ansicht nach ist die Arbeit mit Funktionen in den meisten Fällen sinnvoller, weil man einfach ein strukturiertes System erstellt.
Ist nur eine persönliche Erfahrung, aber ich hoffe eben, dass ich diese dem Ein oder Anderen noch mitgeben kann .
Ich habe es mir zur Angewohnheit gemacht, Funktionen in eine extra Datei auszulagern. Diese wird in meiner index.php per require_once eingebunden.
Wenn ich dann Deine Funktion zweimal dort einsetze, um halt zwei verschiedene Select-Listen zu generieren, muss ich eine Menge Variablen umbenennen.
Brauche ich die 2. Liste nur einmal, ist der Aufwand sehr groß.
Wieder ein Denkfehler von mir, oder nachvollziehbar?

Grüße
flupsi
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 12:47 Nach oben    #10
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

Denkfehler, warum passt du die Funktion nicht so an, dass du beide Listen mit dieser einen Funktion erstellen kannst?
Hau doch mal deine beiden Funktionen rein, dann schaun wir da mal drüber und packen die zusammen.
Ansonsten solltest du dir nochmal Infos über die Lebensdauer einer Variablen anschauen. hier
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 13:08 Nach oben    #11
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hi,
einfaches Beispiel:
PHP-Code:
<?php

    
require_once('functions.inc.php');

    
# Liste 1
    
$sql 'SELECT data FROM tabelle1';
    
$res mysql_query($sql) or exit(mysql_error());
    
$data mysql_fetch_assoc($res);
    
array_pop($data);

    
$config = array( /* irgendwelche Sachen */ );
   
    
buid_selectlist($data$configtrue);

    
    
# Liste 2
    
$sql 'SELECT data FROM tabelle2';
    
$res mysql_query($sql) or exit(mysql_error());
    
$data mysql_fetch_assoc($res);
    
array_pop($data);

    
$config = array( /* irgendwelche Sachen */ );
   
    
buid_selectlist($data$configtrue);     

?>
Ein und die selbe Funktion, zwei unterschiedliche Listen werden ausgegeben.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 15:47 Nach oben    #12
flupsi
Gast
 
Beiträge: n/a
Standard

So, seit 2Std spiele ich nun mit dieser Funktion herum...was mir meine Frau inzwischen mit scheelen Seitenblicken quittiert *gg*

Wenn mich nicht alles täuscht, ist da ein kleiner Schwachpunkt im Script, wenn man es für mehrere Tabellen nutzen will.

PHP-Code:
$selectHTML .= '<option value="' $key['id'] . '" ' $preselected '>' $key['name'] . '</option>';
            
$selectHTML .= "\n"
Das script setzt voraus, dass alle Tabellen die Feldnamen "id" und "name" beinhalten.
Habe ich Tabellen mit a) "id" und "name" und beispielsweise b) "userid" und "username",
muss ich eine neue Funktion schreiben. Sehe ich das richtig?

Wenn ich schon Eure Geduld strapaziere will ich dann doch eine (wenn auch kleine) Verbesserung einfliessen lassen.
Ich habe die CSS-Klasse mit eingebaut.

PHP-Code:
$selectHTML '<select name="' $config['name'] . '" size="' $config['size'] . '" '" class="' . $config['class'] . '">';
        $selectHTML .= "
n"; 
Dann muss nur noch die Klasse definiert werden:

PHP-Code:
$config['class']       = 'meine_klasse_fuer_selectfelder'
Vielleicht kann es ja jemand gebrauchen.

Grüße
flupsi
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 15:58 Nach oben    #13
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

Korrektur (falsch Zeichensetzung)
PHP-Code:
$selectHTML '<select name="' $config['name'] . '" size="' $config['size'] . '" class="' $config['class'] . '">'
Für dein 'Name' 'Username' Problem gibt es eine einfache Lösung:
Du kannst deine SQL-Abfragen so ändern:
PHP-Code:
$sql 'SELECT User_ID AS Value, Username AS Name FROM tabelle1'
Dann kannst du folgende Zuweisung in der Funktion machen:
PHP-Code:
$selectHTML .= '<option value="' $key['Value'] . '" ' $preselected '>' $key['Name'] . '</option>'
Die Definitionsbeschreibung (Kommentare über der Funktion) sollten aber erklären, was für Indexe dein Array haben soll.
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 16:03 Nach oben    #14
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hi,
nunjaaa .. das ist nicht unbedingt richtig, was Du schreibst. Natürlich ist diese Funktion nun extra so aufgebaut, dass man den Zusammenhang zwischen Daten und Schlüssel des Arrays innerhalb der Funktion sieht.

Aber die Frage ist eigentlich auch recht gut (ich werde diesen Thread im Tutorial verlinken!).

Man könnte die Funktion natürlich insofern erweitern, dass man in das Konfigurationsarray nur vorbestimmte Attribute übernehmen kann. Im Tutorial verlinke ich zu den möglichen Attributen einer Auswahlliste. Zzgl. dann z.B. noch eine CSS-Klasse.

So. Das Konfigurationsarray wird dann wie bekannt gefüllt, wobei nicht alle Attribute verwendet werden müssen.
Innerhalb der Funktion fragen wir dann ab, ob das Attribut gesetzt ist. Ist das der Fall, so wird es eingebaut, ansonsten logischerweise nicht.

Beispiel.
PHP-Code:
if(array_key_exists('attributname'$config)) {
    
$attributname " " $config['attributname'];
}
else {
    
$attributname '';
}

$selectHTML .= '<option' $attributname ' value="' $data['id'] . '"> ... '
Jetzt sagst Du ... "ja, aber jetzt kann ich doch trotzdem ein $data-Array haben, indem anstatt "id", "userid" steht.
Klar. Das kannt Du haben. Allerdings wüsste ich gerade nicht so ganz, wie man das umgehen könnte, außer, indem man aus der Datenbank z.B. wie folgt ausliest

SQL Code:
  1. SELECT
  2.     userid AS id,
  3.     username AS name
  4. FROM
  5.     usertabelle

Dann existieren im Array letztlich auch nur die Schlüssel "id" und "name".
Müsste man sich mal Gedanken drüber machen, wie man das noch dynamisch lösen könnte.

Ich habe irgendwas im Hinterkopf, aber .. hmm .. ich komm gerade nicht darauf.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 16:21 Nach oben    #15
flupsi
Gast
 
Beiträge: n/a
Standard

Die Möglichkeit, die Daten bei der DB-Abfrage zu manipulieren, habe ich noch garnicht in Betracht gezogen. Es funktioniert aber einwandfrei. Danke für die Anregung.

Zitat:
Hi,
nunjaaa .. das ist nicht unbedingt richtig, was Du schreibst. Natürlich ist diese Funktion nun extra so aufgebaut, dass man den Zusammenhang zwischen Daten und Schlüssel des Arrays innerhalb der Funktion sieht.
Ich wollte die Funktion nicht kritisieren...für mich war es eine Schwäche, weil ich keine Lösung gesehen habe habe (die ja eigentlich ganz einfach ist). Das hat sich ja nun erledigt.
Alles in Allem habe ich die letzten paar Std wohl eine Menge gelernt, womit Dein Tutorial voll und ganz den Zweck erfült hat, wofür Du es vorgesehen hattest.
Vielen Dank!

Grüße
flupsi
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 16:23 Nach oben    #16
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Zitat:
Zitat von flupsi
Ich wollte die Funktion nicht kritisieren
Na, ich find es gut, wenn sich jemand Gedanken macht und kritisiert. Ich bin schließlich nicht unfehlbar. Wäre auch leicht unheimlich.


Zitat:
Zitat von flupsi
Alles in Allem habe ich die letzten paar Std wohl eine Menge gelernt, womit Dein Tutorial voll und ganz den Zweck erfült hat, wofür Du es vorgesehen hattest.
Vielen Dank!
Wow. Super. Freu ich mich.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 16:26 Nach oben    #17
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

Ein besseres Lob gibt es für ein Tutorialersteller nicht *ben auf die schulter klopf*
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
indireckte Frage zu Template system kampfgnom PHP-Programmierung 4 04.06.2007 04:12
Frage zu dynamisches Füllen einer select Liste. Scout PHP-Programmierung 10 30.03.2007 09:49
Problem mit zu vielen MySQL-Querys / Grundkonzeption Chr!s PHP-Programmierung 13 27.08.2006 16:59
Your most abnormal Query Guradia Datenbanken 21 19.04.2006 00:15
[PHP] Dynamisches Füllen einer SELECT-Liste Ben Tutorials 5 09.03.2006 17:51


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45