[PHP/MySQL] mysql_field_type() & ENUM

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer een class te schrijven die dynamisch formulieren genereert a.d.h.v. een tabel. Het leek allemaal zo simpel: Met mysql_field_type bepaal je wat voor soort input-veld er getoond moet worden (tekst, kommagetal, datum etc) en de naam van het veld komt overeen met de mysql_field_name.

Wat blijkt nou... mysql_field_type is uiterst beperkt. Niks varchar, text, longblob, enum of wat dan ook. Ze vallen allemaal onder de noemer "string".

Mijn vraag is: Is er alsnog een manier om de "echte" veldtypes te weten te komen, of is het een kwestie van if's of cases om te bepalen met wat voor veld je nou uiteindelijk te maken hebt?

Tweede vraag: Hoe kan je de waardes van een ENUM-veld opvragen als de tabel geen records heeft? M.a.w. als ik een ENUM("man","vrouw") heb, hoe kan PHP de waardes "man" en "vrouw" te weten komen? Ik ben hier ERG benieuwd naar... heb het antwoord niet kunnen vinden in m'n MySQL en PHP boeken.

[ Voor 6% gewijzigd door Verwijderd op 17-08-2003 17:17 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 16-09 20:14
Als tip zou ik je kunnen geven om eens een kijkje te nemen in de source van phpMyAdmin. phpMyAdmin haalt ook gewoon alle veldtypes van een tabel op zelfs ENUMS.

In deze file zou je je antwoord moeten vinden:
tbl_properties_structure.php

It’s nice to be important but it’s more important to be nice


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

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


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Hmm ik heb zoiets ook net gebouwd :D Ik gebruik alleen standaard element typen (text/radio/select) om te bepalen wat voor type veld er moet worden gebruikt, en geef het soort content in een apart veld aan zodat de valdiatie rule creator dit later kan gebruiken. Zo kan je ook nog andere validatietypen toevoegen :)

het leuke is aan mijn formbuilder: de formulieren om gegevens in te voegen aan de formbuilder komen óók uit de formbuilder :+ PHP code is dus minimaal _o_

[ Voor 21% gewijzigd door SchizoDuckie op 17-08-2003 21:18 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah. Heb trouwens een optie gevonden om twee vliegen in 1 klap te slaan.

Wanneer je de query "SHOW COLUMNS FROM tabelnaam" runt, krijg je een aantal rows terug dat overeenkomt met het aantal kolommen in je tabel. Iedere row is natuurlijk ook weer een array, waarbij index 0 de kolomnaam is, index 1 is het type, maar dan het èchte type, dus: varchar(255), of: enum('y','n'). Er zijn overigens nog meer waarden in de array, maar die zijn voor dit probleem niet relevant.

A.d.h.v. een simpele regexp kan je op die manier dus gemakkelijk alle mogelijke ENUM opties opvragen. EN je kunt een accurate type validatie doen :) Alaaf!