Ik heb ook een vraag mbt MySQL.
Sinds we van forumsoftware veranderd zijn, is er in de database ook het één en ander veranderd. Er zijn tabel- en kolomnamen veranderd, bijgekomen enz. Dat is niet echt het probleem.
Er zijn ook waarden verplaatst en op een onhandigere manier ingedeeld.
Voor het maken van de steunpuntenkaart werd altijd onderstaande query gebruikt:
SELECT id_member, real_name, latitude, longitude, is_supportpoint FROM smf.smf_members WHERE latitude IS NOT NULL ORDER BY id_member
Dit leverde dan ongeveer dit op:
+-----------+---------------------+---------------------+---------------------+-----------------+
| id_member | real_name | latitude | longitude | is_supportpoint |
+-----------+---------------------+---------------------+---------------------+-----------------+
| 2 | Dennis Kaarsemaker | 52.512864885511505 | 5.474442601116607 | 1 |
| 4 | nicolas | 52.216600000000000 | 5.483300000000000 | 0 |
| 70 | kennywest | 50.999253662381100 | 3.759126663208010 | 0 |
De hele kolom "is_supportpoint" is er nog wel, alleen ontbreekt in de forumsoftware de mogelijkheid om die weer te geven of aan te passen. De forumsoftware aanpassen kan wel, maar dan moeten een groot aantal bestanden ingrijpend veranderd worden. En dat is niet wat we willen.
Er is wel een tweede mogelijkheid bijgekomen om custom profielvelden te maken, alleen maakt dat de query's nogal onhandig. Die extra profielvelden worden in de tabel voor de thema-instellingen bijgehouden:
SELECT id_member, variable, value FROM smf.smf_themes WHERE id_member = 1830
+-----------+----------------------+------------------------------------------------------+
| id_member | variable | value |
+-----------+----------------------+------------------------------------------------------+
| 1830 | show_board_desc | 0 |
| 1830 | show_children | 0 |
| 1830 | show_no_avatars | 0 |
| 1830 | show_no_signatures | 0 |
| 1830 | return_to_post | 1 |
| 1830 | cust_launch | johanvandijk |
| 1830 | cust_st | Ja |
+-----------+----------------------+------------------------------------------------------+
Dit is de query om de voorkeuren van mijn account op te vragen (ik heb geknipt in de resultaten), het gaat dan om de variabele "cust_st".
De vraag is nu welke query er gedaan moet worden, zodat er van ieder lid zijn voorkeur gegeven wordt?
Wat ik graag aan resultaten wil is dit:
+-----------+---------------------+---------------------+---------------------+-----------------+
| id_member | real_name | latitude | longitude | value |
+-----------+---------------------+---------------------+---------------------+-----------------+
| 2 | Dennis Kaarsemaker | 52.512864885511505 | 5.474442601116607 | ja |
Het enige probleem is dat niet voor ieder lid de variabele "cust_st" bestaat. In dat geval zou de kolom "value" het liefst nee moeten bevatten, om nog meer veranderingen in bestaande scripts te voorkomen.
Verder lijkt het me dat de query op de extra database ook een stuk zwaarder zal zijn voor de server. Kan iemand aangeven hoeveel zwaarder?
Het voordeel van deze methode is dat de voorkeur ook zonder veel problemen in het profiel opgenomen kan worden en dat men er zelfs op zou kunnen zoeken.
Nog weer een andere optie is om zelf een extra php-pagina te maken die dmv SSI.php die bij de forumsoftware zit die de oude vertrouwde "is_supportpoint"-kolom aanpast. Zo kan een lid zelf de functie aan- en uitzetten zonder dat de hele forumsoftware op de schop moet.
Het voordeel van deze manier is dat de externe scripts niet verder aangepast hoeven te worden.
Heeft iemand enig inzicht in wat de handigste manier is om dit probleem aan te pakken?