Input: <select value="CMS_VAR[0][] ...> nicht mög

Gesperrt
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Input: <select value="CMS_VAR[0][] ...> nicht mög

Beitrag von damian2you »

Hallo

Ich möchte im Input eine Selct-Box mit mehrfachauswahl benutzen, welche dann die werte an den Output via CMS_VAR sendet. Um ein Array vom einer select box zu herhalten, muss es heissen: name="DEINNAME[]".
Die beiden eckigen Klammern ermöglichen die übergabe eines arrays.

Leider bekomme ich aber eine fehlermeldung wenn ich CMS_VAR[0][] übergeben möchte, wie kann ich das umgehen? bsw. ein array an das output übergeben (ohne db wenn möglich)
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

das geht momentan nur mit der serialize funktion

also

Code: Alles auswählen

"CMS_VAR[0]" = serialize($MeinArray);
und im output dann mit unserialize

Code: Alles auswählen

$MainArray = unserialize( "CMS_VALUE[0]" );
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

ok danke

aber wie mache ich das nun:
wenn ich im input "CMS_VAR[0]" = serialize($MeinArray); setze gibt es eiene fehlermeldung....

bin einbisschen ein anfänger...thx
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

achso - die cms vars müssen in ner input übergeben werden. habe schon länger nix mehr in contenido inputs gemacht.

ok dein problem ist ja, dass du ne multiselectbox hast, deren mehere werte du übergeben willst.

du brauchst im input also einmal deine multiselectbox und ein hidden field, was dein cms_var enthält. dazu noch eine kleine javascript funktion, die dir die werte aneinanderfügt (also serialisiert)

das ist ein beispielhafter input:

Code: Alles auswählen

?>
<script language="JavaScript" type="text/JavaScript">
<!--
function getMultiSelVals(el)
{ // return multiselect array as string
   if ( !el ) { alert("Bitte das Multiselect Element angeben!");return }
   selectedVals = ''
   sep='|'
   for(i = 0; i < el.length; i++)
      if ( el.options[i].selected == true )
         selectedVals += (selectedVals>''? sep: '') + el.options[i].value;
   return (selectedVals);
}
-->
</script>

<select name="multiselect" multiple="multiple"
onchange="javascript:document.getElementById('meintextfeld').value=getMultiSelVals(this);"
>
<option value="1">wert1</option>
<option value="2">wert2</option>
<option value="3">wert3</option>
</select>

<br><br>
<input id="meintextfeld" type="hidden" name="CMS_VAR[100]" value="" />
<?php
das füllt dir bei multiselect das hidden feld nach folgender art: 1|2|3

der output schaut dann so aus:

Code: Alles auswählen

<?php
$meinArray = explode("|", "CMS_VALUE[100]");

print_r ( $meinArray );
?>
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Input Auswahl Selektinierungs-Werte verwenden

Beitrag von damian2you »

Herzlichen Dank, funktioniert wunderbar.

Nun habe ich betreffend dem Input noch eine kleine Frage:

Nachdem ich die Kategorien ausgewählt habe, rufe ich die Konfiguration nochmals auf, nun werden zwar die jeweiligen Kategorien selektioniert, aber diese selektionierten "Werte" werden danach nicht verarbeitet, wenn ich z.b. einfach speichere oder etwas anderes in der Konfiguration verändere.
Nur wenn ich min. 1 selektionierter Wert wieder auswähle, werden die werte beim speichern verarbeitet.
wie kann ich das abfangen, so dass man diese Konfiguration nur einmal einstellen muss?

Thx vielmals

Hier noch der Input Code:

Code: Alles auswählen

$selSubnav = explode("|", "CMS_VALUE[100]");
var_dump($selSubnav);
$countSelSubnavi = count($selSubnav);

?>

<table cellspacing="0" cellpadding="0" cellpadding="4">

    <tr>
        <td align="left" valign="top"><?php echo mi18n("Navigationsebenen auswählen");?>:</td>
        <td>
			<script language="JavaScript" type="text/JavaScript">
				<!--
				function getMultiSelVals(el)
				{ // return multiselect array as string
				   if ( !el ) { alert("Bitte das Multiselect Element angeben!");return }
				   selectedVals = ''
				   sep='|'
				   for(i = 0; i < el.length; i++)
					  if ( el.options[i].selected == true )
						 selectedVals += (selectedVals>''? sep: '') + el.options[i].value;
				   return (selectedVals);
				}
				-->
				</script>


            	<?php 
				echo "<select name=\"multiselect\"  style=\"height: 200px;\" multiple=\"multiple\" onchange=\"javascript:document.getElementById('meintextfeld').value=getMultiSelVals(this);\">";
            

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
                     $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
                     "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
                     "AND C.visible=1 ORDER BY A.idtree";
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // how many levels
              $levels = 3;

              if ( $db->f("level") == 0) {
			      $spaces = "";          
             } elseif ($db->f("level") == 1) {
			  $spaces = "->";
			  }elseif ($db->f("level") == 2) {
			  $spaces = "---->";
			  }elseif ( $db->f("level") == 3) {
			   $spaces = "-------->";
			  }

				if ( $db->f("level") < 4) {
						foreach ($selSubnav as $key => $value) {
							if ($selSubnav != "" && $db->f("idcat") == $value){
							echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces  .$db->f("name") ."</option>";
							$ActSelId = $value;
							}
						}
						if ($db->f("idcat") != $ActSelId){
							echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
						}
			  
				}
			
            } // end while

echo "      </select><input id=\"meintextfeld\" type=\"hidden\" name=\"CMS_VAR[100]\" value=\"\" />";
?></td>
	</tr>
	
</table>

<?php

betrifft diese Zeilen:

Code: Alles auswählen

foreach ($selSubnav as $key => $value) {
                     if ($selSubnav != "" && $db->f("idcat") == $value){
                     echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces  .$db->f("name") ."</option>";
                     $ActSelId = $value;
                     }
                  }
                  if ($db->f("idcat") != $ActSelId){
                     echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
                  } 
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

das hidden field so schreiben:

Code: Alles auswählen

<input id="meintextfeld" type="hidden" name="CMS_VAR[100]" value="CMS_VALUE[100]" />
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

HAMMMER !!! Danke schön (-;
damian2you
Beiträge: 40
Registriert: Di 13. Mär 2007, 17:01
Kontaktdaten:

Beitrag von damian2you »

Kann ich die Key-Werte des Arrays CMS_VAR[100] auch selbst definieren? Wenn ja wie?

D.h. ich möchte bei meiner auswahlliste, dass man neben den einträgen die man ausgewählt hat auch den Key des neuen Array angeben kann....brauche das für die Sortierung...

thx
Gesperrt