Probleem
Ik probeer een plugin te maken voor e107, een CMS. Om een mooi geintegreerd dropdown menuutje te creëren verwacht het CMS een voorgedefineerde functie en dat alle waardes op 1 regen staan. Zoals dit:
Het is dus de bedoeling dat er in die dropbox de geregistreerde gebruikers komen te staan. Daarvoor query ik naar de database, gebruik array_push om de waardes inclusief komma's netjes in één array te krijgen. Ik, als relatief gevorderede Perl gebruiker, dacht vrolijk een print $array te kunnen doen zoals dat bij Perl ook kan, maar helaas is dat niet mogelijk. Ik zoek dus een manier om in één keer de complete array uit te printen.
Zelf geprobeerd
Zoals de topic titel al doet vermoeden heb ik het al lang en breed met loops geprobeerd zoals er ook in de search meerdere malen wordt gesuggereerd.
Een voorbeeld:
Zoiets werkt dus niet, want dan krijg ik gewoon een lege dropdown menu. Voer ik dezelfde code uit, alleen dan met een print in plaats van $fieldvalu werkt het prima, alleen staat het dan niet op de plek waar het moet staan. Als ik een array element er in hardcode (dus $i veranderen in 0) gaat het ook prima.
- Iet als:
Werkt dus ook niet (logisch want het is in princiepe hetzelfde als hierboven).
- Een ander voorbeeld:
Dit werkt wel. Alleen is is geen optie aangezien het super lelijk is en tevens is de array grootte onbekend is. Het enige wat ik dus moet doen is gewoon de waarde van de complete array eruit kwakken.
- Ik heb ook naar de functie array_values gekeken. Dit is alleen geen optie aangezien de waardes dan inclusief index keys geprint worden wat ik dus niet wil.
Dit is de code voor het genereren van de tabel. Ik heb hier zelf ook mee gespeelt maar er niets nuttigs uit kunnen krijgen. Misschien dat een kleine hack aan deze er voor zorgt dat hij wel gewoon met loops overweg kan of iets dergelijks?
Met de .= functie kan je verschillende strings aan elkaar plakken. En voor de duidelijkheid, er zijn dus meerdere cases voor text boxen, tables, checkboxes enz enz.
Sites
Op http://nl3.php.net/manual/nl/ref.array.php zijn een heleboel mooie functies te vinden, maar helaas niet het gene wat ik nodig heb.
Het zal waarschijnlijk wel heel eenvoudig zijn en ik zal wel iets compleet over het hoofd zien
Ik probeer een plugin te maken voor e107, een CMS. Om een mooi geintegreerd dropdown menuutje te creëren verwacht het CMS een voorgedefineerde functie en dat alle waardes op 1 regen staan. Zoals dit:
PHP:
1
| $fieldvalu = "waarde1,waarde2,waarde3" |
Het is dus de bedoeling dat er in die dropbox de geregistreerde gebruikers komen te staan. Daarvoor query ik naar de database, gebruik array_push om de waardes inclusief komma's netjes in één array te krijgen. Ik, als relatief gevorderede Perl gebruiker, dacht vrolijk een print $array te kunnen doen zoals dat bij Perl ook kan, maar helaas is dat niet mogelijk. Ik zoek dus een manier om in één keer de complete array uit te printen.
Zelf geprobeerd
Zoals de topic titel al doet vermoeden heb ik het al lang en breed met loops geprobeerd zoals er ook in de search meerdere malen wordt gesuggereerd.
Een voorbeeld:
PHP:
1
2
3
4
| For ($i = 0;$i <= $count;$i++) { $fieldvalu = "arr[$i]"; } |
Zoiets werkt dus niet, want dan krijg ik gewoon een lege dropdown menu. Voer ik dezelfde code uit, alleen dan met een print in plaats van $fieldvalu werkt het prima, alleen staat het dan niet op de plek waar het moet staan. Als ik een array element er in hardcode (dus $i veranderen in 0) gaat het ook prima.
- Iet als:
PHP:
1
2
3
4
5
6
7
| $x = 0; while($row = mysql_fetch_array($resultaat)) { $fieldvalu = "$arr[$x]"; $x++ } |
Werkt dus ook niet (logisch want het is in princiepe hetzelfde als hierboven).
- Een ander voorbeeld:
PHP:
1
2
3
4
| For ($i = 0;$i <= $count;$i++) { $fieldvalu = "arr[0],arr[1],arr[2],arr[3]"; } |
Dit werkt wel. Alleen is is geen optie aangezien het super lelijk is en tevens is de array grootte onbekend is. Het enige wat ik dus moet doen is gewoon de waarde van de complete array eruit kwakken.
- Ik heb ook naar de functie array_values gekeken. Dit is alleen geen optie aangezien de waardes dan inclusief index keys geprint worden wat ik dus niet wil.
Dit is de code voor het genereren van de tabel. Ik heb hier zelf ook mee gespeelt maar er niets nuttigs uit kunnen krijgen. Misschien dat een kleine hack aan deze er voor zorgt dat hij wel gewoon met loops overweg kan of iets dergelijks?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| case "dropdown": $ret ="<select class='tbox' style='width:200px' name='".$fieldname."'><option></option>"; for ($i=0; $i<count($tmp); $i++) { $checked = ($tmp[$i] == $presetvalue)? " selected" : ""; $ret .="<option value='$tmp[$i]' $checked />". $tmp[$i] ."</option />\n"; }; $ret .="</select>"; break; <snip> return $ret; |
Met de .= functie kan je verschillende strings aan elkaar plakken. En voor de duidelijkheid, er zijn dus meerdere cases voor text boxen, tables, checkboxes enz enz.
Sites
Op http://nl3.php.net/manual/nl/ref.array.php zijn een heleboel mooie functies te vinden, maar helaas niet het gene wat ik nodig heb.
Het zal waarschijnlijk wel heel eenvoudig zijn en ik zal wel iets compleet over het hoofd zien
