Programmierung einer Auswahlliste

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
reinsle
Mitglied
Beiträge: 93
Registriert: 26.02.2005 18:21
Wohnort: Pfronten
Kontaktdaten:

Programmierung einer Auswahlliste

Beitrag von reinsle »

Hy Forum,

wir haben bei uns im Forum jetzt eine Mail, die im Profil auswählbar ist, ob man diese haben möchte oder nicht. Jetzt möchte ich das so umbauen, das eine sog. Category auswählbar ist, also welche Art von Mails man haben möchte. Dies sollte wenn möglich eine Liste mit mehrfachauswahl sein, bei der der User auswählen kann, was er haben möchte. Der Inhalt dieser Liste sollte von einer Datenbank geladen werden, und die Auswahlen sollten in der Usertabelle gespeichert werden.

Hat von euch sowas jemand schon gemacht?? ICh muss dazu sagen, ich bin in HTML jetzt ned der fitteste.

Danke euch.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

  • Der HTML-Tag für Auswahllisten heißt <select>, die einzelnen Optionen <option>
  • Für die Auswahlmöglichkeiten legst du eine Tabelle mit 2 Spalten an: ID und Auswahlmöglichkeit (in meinem Beispiel-Code id und name). Diese wird ausgelesen und in ein <select> eingetragen:

    Code: Alles auswählen

    $sql = 'SELECT * FROM ' . MAIL_CAT_TABLE;
    if (!$result = $db->sql_query($sql))
    {
      message_die(GENERAL_ERROR, 'Could not get mail categories', '', __LINE__, __FILE__, $sql);
    }
    $select = '<select name="user_mail_cat'>';
    while ($cat = $db->sql_fetchrow($result))
    {
      // Ist die ID des aktuellen Eintrags die vom Benutzer ausgewählte?
      // wenn ja => als Standard auswählen...
      $selected = ($userdata['user_mail_cat'] == $cat['id']) ? ' selected="selected"' : '';
      $select .= '<option value="' . $cat['id'] . '"' . $selected . '>' . $cat['name'] . '</option>';
    }
    $db->sql_freeresult($result);
    $select .= '</select>';
    Natürlich müssen die Variablen und Spaltennamen aus der DB entsprechend angepasst werden.
  • Diese $select-Variable kannst du dann ganz normal per Template-System ausgeben lassen.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
reinsle
Mitglied
Beiträge: 93
Registriert: 26.02.2005 18:21
Wohnort: Pfronten
Kontaktdaten:

Beitrag von reinsle »

Hy,

oki, das sollte eigentlich nicht zu schwer sein. Das probier ich die Tage mal aus.

Hast du evtl. noch ne Idee, wie ich das Codiere, das ich das in der Usertabelle speichern kann?? Ich mein jetzt, ich hab ne ID-Spalte. Diese Spalte wird per auto_increment hochgezählt. Gibts da ne Funktion, wie ich das basteln kann?
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Ich benutze das immer in einer definierten Funktion: ( Beispiel Generieren einer Dropdownbox aller User )

Code: Alles auswählen

function get_userliste() //Alle User in ein DropDown Filed packen
{
	global $lang, $db;
	
	
	//Vorbereiten der DropDown Box
    $select_user = array();
	$select_user = "<select name='selected_user'>";
	$select_user .= '<option value=\'0\'>'.$lang['cp_select_user'].'</option>';
	
    //Alle User IDs und Usernamen in $result packen
    $sql  = "SELECT user_id, username 
             FROM " . USERS_TABLE . "  
			 WHERE user_id != '-1' 
             ORDER BY username";
    $result = $db->sql_query($sql);
    
    //Solange im $result etwas vorhanden ist, den Namen ins Array $select_user packen
	while($row = $db->sql_fetchrow($result)) 
	{
		if ($selected_user == $row['user_id']) {
			$status = 'selected';
		}
		else
		{
			$status = '';
		}
		
		$select_user .= '<option value="' . $row['user_id'] . '" ' . $status . '>' . $row['username'] . '</option>';
	}
	
	$select_user .= '</select>';
	
    // Variable $result leeren
    $db->sql_freeresult($result);
      
    // Ergebnis Array zurückgeben an Anforderer
    return $select_user;
}
reinsle
Mitglied
Beiträge: 93
Registriert: 26.02.2005 18:21
Wohnort: Pfronten
Kontaktdaten:

Beitrag von reinsle »

@dr.death:

Ja, oki, aber der baut mir ja wieder die eine Auswahlliste. Mein Gedankenproblem ist jetzt eigentlich, wie ich mir die Info speichere, welche Auswahlmöglichkeiten sind den vom User ausgewählt worden, damit ich sie wieder anzeigen kann, bzw. wenn ich die Mails sende, zu sehen, welche sind den eigentlich gewünscht?

Danke euch.
Benutzeravatar
AceVentura
Mitglied
Beiträge: 366
Registriert: 30.07.2005 02:16
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag von AceVentura »

Ein MOD Request durch die Hintertür gestellt ;)
Aber Respekt, dass du es selber versuchen willst.

Vorweg: haste dir den Newsletter MOD einmal angesehen ? Ich glaube der könnte was für dich sein.

Ansonsten bleibt dir nur die Möglichkeit alles in der Usertabelle zu speichern.
Hast du dich mal mit den SQL Befehlen vertraut gemacht ? (und damit, wie sie in phpBB ausgeführt werden)

@Doc:
warum nimmst du hier ein Array und keinen String?

Code: Alles auswählen

$select_user = array();
reinsle
Mitglied
Beiträge: 93
Registriert: 26.02.2005 18:21
Wohnort: Pfronten
Kontaktdaten:

Beitrag von reinsle »

Hy AceVentura,

Also ich bin fit in SQL. bin selber Softwareentwickler und Programmiere RichtClients in Java. Wie gesagt, mit HTML bin ich leder ned so firm, hab aber schon einiges in PHPBB rumgebastelt, einige eigene MODS auch geschrieben.

Nein, den ModNewsletter kenn ich ned, schau ihn mir aber noch an, vielleicht kann ich den so umstricken, wie ichs brauch. Danke dir für deinen Tipp.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

AceVentura hat geschrieben: @Doc:
warum nimmst du hier ein Array und keinen String?

Code: Alles auswählen

$select_user = array();
Tja, gute Frage :-)

Wer weiß was mich da geritten hat.

Der Code stammt aus meinem, nicht veröffentlichten, Kurs Planer MOD.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Für die Profileigenschaft schmeiße ich einfach mal diesen Link in die Runde: MOD:modify_profile. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“