[SQL/PHP] alle mogelijke ENUM waarden opvragen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 11-09 15:50

Johnny

ondergewaardeerde internetguru

Topicstarter
Na veel zoeken kom ik er toch niet uit.

Ik heb een website die met PHP werkt en een MySQL database. Sommige kolommen zijn van het ENUM type.

Iedere keer als ik iets verander aan de ENUM moet ik overal op mijn website de selectboxen ook gaan veranderen.

Ik wil dus dat dat dynamisch gebeurt en dat alle selectboxen automatisch alle mogelijke waarden weergeven.

Na lang zoeken dacht ik het antwoord te hebben gevondenmet SHOW COLUMNS. Maar als ik de volgende code gebruik zijn er verschillende problemen:

- Het aantal waarden in de array is het aantal rijen, niet de verschillende mogelijkheden, ik krijg alle verschillende waarden, en een heleboel lege terug. dat is nog wel op te lossen door te checken of ie leeg is of niet.
- Alleen de waarden die al gebruikt zijn komen terug, dus als ik een nieuwe mogelijkheid zou toevoegen zou hij nog niet gebruikt zijn en niet in de lijst komen, end dus niet kunnen worden gebruikt.

PHP:
1
2
3
4
5
6
7
8
$query="SHOW COLUMNS FROM houses LIKE 'town'"; 
$result=mysql_query($query,$db); 
$town = mysql_fetch_array($result); 

for($i = 0; $i <= count($town); $i++)
    {
    echo("<option value=\"".$town[$i]."\">".$town[$i]."</option>\n");
    }

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Probeer het eens met DESC table en een regex oid.

Rustacean


Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
PHP:
1
2
3
4
5
6
7
8
9
10
$sql="SHOW COLUMNS FROM tablename LIKE 'fieldname'";
$rs=mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($rs)==1) {
    $r=mysql_fetch_array($rs,MYSQL_ASSOC);
    $enums=$r['Type'];
    preg_match('/enum\(([^)]+)\)$/',$enums,$matches);
    $list=split(',',$matches[1]);
    $list=preg_replace('/\'(.*)\'/','\1',$list);
}
print_r($list);


At your service ;) , de waarden netjes in de array $list (=$town) bij jou
.

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 11-09 15:50

Johnny

ondergewaardeerde internetguru

Topicstarter
beetle71 schreef op 02 July 2003 @ 21:27:
PHP:
1
2
3
4
5
6
7
8
9
10
$sql="SHOW COLUMNS FROM tablename LIKE 'fieldname'";
$rs=mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($rs)==1) {
    $r=mysql_fetch_array($rs,MYSQL_ASSOC);
    $enums=$r['Type'];
    preg_match('/enum\(([^)]+)\)$/',$enums,$matches);
    $list=split(',',$matches[1]);
    $list=preg_replace('/\'(.*)\'/','\1',$list);
}
print_r($list);


At your service ;) , de waarden netjes in de array $list (=$town) bij jou
.
Ik snap niet precies hoe het werkt, maar het werkt. _/-\o_

Ik heb wel nog even zitten prutsen omdat er nog $i = 4 in mijn for loop stond waardoor hij al stopte voordat hij begon. :X

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.