Hallo, lieber Forumbenutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
Benutzeravatar
bigh03
Beiträge: 32
Registriert: 20. Apr 2006, 16:02
Wohnort: Wien

Mehrfach Select

11. Jun 2010, 03:11

Hallo,

ich hab da mal eine Frage eventuell kann mir jemand weiter helfen!
:?
Ich möchte in einen Addon eine Mehrfach Auswahlliste erstellen.

Hier der Code (Die anzeige hab ich jetzt einmal weggelassen):

Code: Alles auswählen

<?php
$eintrag = array('one','two','three');

if ($func=='edit' || $func=='add') {
	$form = new rex_a350_form($table,'Team');
	
	$field =& $form->addSelectField('funktion');
	$field->setLabel("Funktion");
	$select = &$field->getSelect();
		$select->setMultiple(true);
		$select->setSize(10);
		$select->addArrayOptions($eintrag, true);

	if ($func == 'edit') {
		$form->addCreateField();
		$form->addUpdateField();
	}

	$form->show();
}
?>
Das funktioniert ja auch und wird auch angezeigt.
Nur wenn ich jetzt auf Speichen gehe, wird nur ein Wert in der DB Spalte 'funktion' eingetragen.

Und beim Bearbeiten wird dann natürlich auch nur der eine Wert angezeigt und Selektiert.

Was mache ich da Falsch?

lg,
Herbert

Benutzeravatar
bigh03
Beiträge: 32
Registriert: 20. Apr 2006, 16:02
Wohnort: Wien

11. Jun 2010, 15:35

Hat keiner eine Idee wie das gehen könnte? :(

Goldfisch
Beiträge: 230
Registriert: 22. Sep 2004, 17:47
Wohnort: Aschaffenburg
Kontaktdaten: Website

11. Jun 2010, 19:50


Benutzeravatar
bigh03
Beiträge: 32
Registriert: 20. Apr 2006, 16:02
Wohnort: Wien

14. Jun 2010, 15:37

Danke Goldfisch,

leider werde ich mit dem Link Auch nicht schlauer :oops:
Das ganze ist schon beim Speichern komisch!
Da wird immer nur ein Wert in die DB eingetragen.

Auch wenn ich 'one' und 'three' auswähle. Es wird dann immer der letzte Wert, also in dem Fall, 'three' in dei DB eingetragen.

Hab ich da was im Code vergessen?

lg,
Herbert

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

14. Jun 2010, 15:42

bigh03 hat geschrieben:Hab ich da was im Code vergessen?
Versuch´s mal statt $field =& $form->addSelectField('funktion'); mit $field =& $form->addSelectField('funktion[]');, damit der Browser auch weiß, dass mehrere Werte übertragen werden sollen.
LG,
Xong

Bild Määääääääääääääääääääääääh!

Benutzeravatar
bigh03
Beiträge: 32
Registriert: 20. Apr 2006, 16:02
Wohnort: Wien

14. Jun 2010, 15:54

Danke Xong, das wars auch nicht! Da kommt dann nur eine Fehlermeldung.
Weil er ja den Spaltennamen nicht finden Kann.

lg,
Herbert

Benutzeravatar
Gregor.Harlan
Entwickler
Beiträge: 1130
Registriert: 4. Jun 2007, 10:35
Wohnort: Frankfurt am Main

14. Jun 2010, 18:10

Hi,

füge diese Zeile hinzu:

Code: Alles auswählen

$field->setAttribute('multiple', 'multiple');
Ab REX 4.3 sollte es auch ohne diese Zeile funktionieren.

Gruß, Gregor
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!

Benutzeravatar
bigh03
Beiträge: 32
Registriert: 20. Apr 2006, 16:02
Wohnort: Wien

14. Jun 2010, 19:43

Danke Gregor!

Hier noch das ganze wie es sein sollte damit es funktioniert:

Code: Alles auswählen

<?php
$eintrag = array('one','two','three');

if ($func=='edit' || $func=='add') {
   $form = new rex_a350_form($table,'Team');
   
   $field =& $form->addSelectField('funktion');
   $field->setAttribute('multiple','multiple');
   $field->setLabel("Funktion");
   $select = &$field->getSelect();
      $select->setMultiple(true);
      $select->setSize(10);
      $select->addArrayOptions($eintrag, true);

   if ($func == 'edit') {
      $form->addCreateField();
      $form->addUpdateField();
   }

   $form->show();
}
?>
Danke an alle :D und lg,
Herbert

Benutzeravatar
bigh03
Beiträge: 32
Registriert: 20. Apr 2006, 16:02
Wohnort: Wien

21. Jun 2010, 16:26

So jetzt hätte ich dazu doch noch eine Frage!

Jetzt möchte ich das im Backend bei der Eingabe Seite, nur die Einträge die gleich mit der $oid sind.

Code: Alles auswählen

$qry = "SELECT name as label,id FROM ".$table."_partner WHERE partner_von = " . $oid . " AND status='1'";
$field = &$form->addSelectField('partner');
$field->setAttribute('disabled','disabled');
$field->setAttribute('style','background:#EFF9F9; border:none;');
$field->setLabel("Partner <br />(nur zur Info)");
	$select =& $field->getSelect();	
	$select->addSqlOptions($qry);
Nun ist es ja aber so das in der Spalte "partner_von" die ID's ja so gespeichert sind -> 1|+|2|+|3 usw..
Wie kann ich jetzt die SQL Abfrage in ein Array oder Variable speichern damit ich das Ganze dann in ein Textfeld ausgeben kann.
Das Ganze soll nur eine Hilfestellung des Users werden und soll auch nicht mitgespeichert werden.
Es ist mir klar dass es dann nur beim Editieren angezeigt wird, da ja vorher noch keine $oid vorhanden ist.

lg,
Herbert

Benutzeravatar
bigh03
Beiträge: 32
Registriert: 20. Apr 2006, 16:02
Wohnort: Wien

5. Jul 2010, 12:33

So ich hab das ganze jetzt so hinbekommen. Eventuell nicht der beste Weg aber es geht:

Code: Alles auswählen

$sql = new rex_sql;
$sql->debug = true;
$qry = "SELECT name, partner_von, id FROM ".$table."_partner WHERE status='1' ORDER BY name ASC";
$sql->setQuery($qry);
$attribute_fields = $sql->getArray();

$i = 0;
$ausgabe = '';
foreach ($attribute_fields as $attributes) {
	$i++;
	if( $i <= (count($attribute_fields) - 1) ) {
		$ausgabe .= $attributes['name'] . ', ';
	} else {
		$ausgabe .= $attributes['name'];
	}			
}	
$field =& $form->addTextField('partner');
$field->setAttribute('value', $ausgabe);
$field->setAttribute('disabled','disabled');
$field->setAttribute('style','background:#fff; color:#000; border:1px solid #828790;');	
$field->setLabel('Partner');
lg,
Herbert

Zurück zu „Allgemeines [R4]“