Ik ben bezig met het beheer van een dynamische tabel. Dit wil zeggen dat gebruikers (ala phpMyAdmin) eigen kolommen kunnen toevoegen en verwijderen. Dit is allemaal gelukt maar bij het invoeren van wat een nieuwe record wil ik een html-form bouwen aan de hand van de kolommen. Hierbij maak een ik loop van de kolommen, en hiermee zet ik alle velden op. Dit gebeurt op de volgende manier:
Bij een enum-veld heb ik een script gevonden om de enum waardes om te zetten naar een select-veld, alleen vond ik het wat omslachtig. Het volgende heb ik al gevonden:
Hierbij is $valuestring een array van waardes die dus makkelijk om te zetten zijn naar een select-veld. Nou ben ik van mening (en jullie waarschijnlijk ook) dat de 4 ereg_replace + de split met 1 regexp op te lossen moet zijn. Zover was ik al gekomen:
PHP:
1
2
3
4
5
6
7
| <? $query = "SHOW COLUMNS FROM relaties"; $result = mysql_query($query) or error("db-fout: ".mysql_error()); while($record = mysql_fetch_object($result)) { // input-veld } ?> |
Bij een enum-veld heb ik een script gevonden om de enum waardes om te zetten naar een select-veld, alleen vond ik het wat omslachtig. Het volgende heb ik al gevonden:
PHP:
1
2
3
4
5
6
7
8
9
| <? $thisrow = mysql_fetch_array($result); $valuestring = $thisrow[1]; $valuestring = ereg_replace("enum", "", $valuestring); $valuestring = ereg_replace("\(", "", $valuestring); $valuestring = ereg_replace("\)", "", $valuestring); $valuestring = ereg_replace("\'", "", $valuestring); $values = split(",", $valuestring); ?> |
Hierbij is $valuestring een array van waardes die dus makkelijk om te zetten zijn naar een select-veld. Nou ben ik van mening (en jullie waarschijnlijk ook) dat de 4 ereg_replace + de split met 1 regexp op te lossen moet zijn. Zover was ik al gekomen:
PHP:
waarbij het dus al mogelijk is om de waardes tussen enum() los te krijgen. Iemand een idee om dit dus in 1 regexp op te lossen?
1
2
3
4
5
6
| <? $teststr = "enum('Man', 'Vrouw', 'Onslachtig')"; $pattern = "/enum\((.*?)\)/i"; preg_match_all($pattern, $teststr, $matches); print_r($matches); ?> |
[ Voor 8% gewijzigd door Verwijderd op 11-07-2003 10:58 ]