[PHP+MSSQL] Migratie Access naar php + Query vraag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mac-er
  • Registratie: November 2006
  • Laatst online: 01-09 12:55
Hallo,

Ik zit hier met het probleem dat we hier een gigantische database hebben lopen op MSSQL. Aangezien wij binnen de organisatie zijn overgestapt op het Mac OS X platform wordt er nu telkens gebruik gemaakt van de oude Citrix omgeving om met den gigantische Access front-end deze database te kunnen benaderen.

Nu zijn de plannen om deze database te migreren naar een Filemaker database die dus ook op Mac werkt. De connectie wordt nu dus geregeld via een ODBC applicatie die we daarvoor hebben aangeschaft.

Waar ik nu dus met een probleem zit is dat er in Access bij vele situaties query's op een andere query zijn uitgevoerd, dit komt b.v. voor dat er een hoofdquery is die een query uitvoert met enkele dialoogvensters en al erbij, op het query resultaat daarvan wordt dan b.v. de ene keer een query uitgevoerd om b.v. alleen bedrijven te laten zien die voor contactpersoon X zijn, en de andere keer wordt er een query uitgevoerd die in een andere tabel de status project afgerond hebben.

Aangezien dit een gigantische database is met gigantisch veel query's en formulieren ben ik me nu dus af aan het vragen wat de mogelijkheden zijn om dat op een handige en efficiente manier over te zetten naar Filemaker. Ik heb wel al diverse formulieren gemaakt, maar tot nogtoe zijn dat alleen maar overzichten waar geen query aan te pas komt. Kan me hier iemand advies over geven hoe ik dit kan aanpakken? Als iemand een ander Mac OSX pakket hiervoor weet om dit op een veel makkelijkere manier te doen wil ik ook dat gerust bekijken!

Verder wil ik ook de mogelijkheden bestuderen om dit alles te migreren naar PHP die dan connectie maakt naar deze MSSQL server, hiervoor is ook al een UNIX server ingericht als webserver die ik hier dus voor kan gaan gebruiken. Maar ook hier loop ik tegen de vraag aan hoe ik het handigste het probleem kan oplossen dat ik een query op een andere query kan uitvoeren. Zelf dacht ik er aan om b.v. een query result in een array te plaatsen, en vervolgens een nieuwe query op die array uit te voeren. Dit is zomaar iets wat in me opkomt, dus of dit de beste oplossing is en hoe dit werkt weet ik niet.

Het allerliefste wil ik namelijk iets hebben in een php formulier zoals hieronder waar ook een andere ICT'er met database kennis, maar zonder PHP kennis makkelijk wat in aan kan passen.
PHP:
1
2
3
4
5
6
<?php
// Query overzicht
$Q1 = "SELECT * FROM medewerkers";
$Q2 = "SELECT * FROM $q1 WHERE actief = 'ja'";
$Q3 = "SELECT * FROM $q1 WHERE klanten.relatiemanager = 'Persoon X'";
?>


Dit is natuurlijk geen net overzicht, maar dit is om het even snel duidelijk te maken wat ik bedoel. Kan iemand mij zeggen of hier een manier voor is, of dat dit beter kan? Qua overzicht lukt het wel omdat ik het in categorieen opdeel van de soort query (interne naam die wij hier hanteren is b.v. FIN voor de financieele afdeling) en het plaatsen van commentaarregels.

Ik heb namelijk niet het voornemen om voor iedere query een file te maken met alle query's die daar bij horen.

To Apple or not to Apple? That's the banana!


Acties:
  • 0 Henk 'm!

  • lier
  • Registratie: Januari 2004
  • Laatst online: 09:10

lier

MikroTik nerd

Ik weet niet (zeker) of PHP stored procedures ondersteund, maar het lijkt mij de meest nette aanpak om de data aan je front end aan te bieden.

Eerst het probleem, dan de oplossing


Acties:
  • 0 Henk 'm!

  • mac-er
  • Registratie: November 2006
  • Laatst online: 01-09 12:55
lier schreef op maandag 19 april 2010 @ 09:50:
Ik weet niet (zeker) of PHP stored procedures ondersteund, maar het lijkt mij de meest nette aanpak om de data aan je front end aan te bieden.
Bedankt voor de tip, ik heb dit nagezocht, en PHP ondersteund inderdaad Stored Procedures. Het artikel wat hierover gaat hoe dit werkt heb ik gevonden op:
http://www.devarticles.co...ored-Procedures-With-PHP/

Maar waar ik nu een beetje mee zit, als ik in een stored procedure op de server een stored procedure aanmaak, dan zal ik daar natuurlijk niet een variabele in mee kunnen geven die uit de PHP komt.

Ik heb b.v. bij het overzicht een dropdown list. Die pagina moet dan in principe een overzicht laten zien van alle medewerkers, via de dropdown list kan ik dan kiezen om b.v. een waarde naar de stored procedure mee te geven zoals alles selecteren waar de afdeling Boekhouding is om maar iets te noemen. Dat is niet altijd een statische waarde uit een dropdown lijst, maar dit kan ook iets zijn wat een gebruiker invult voor b.v. het project met id 98 te selecteren.

Is het mogelijk om dit mee te geven aan de Stored Procedure of kan dit niet en moet er een andere mogelijkheid worden gebruikt?

Die zelfde vraag is overigens ook van toepassing voor het filemaker deel van mijn vraag omdat ik daar dan eventueel ook Stored Procedures voor kan gebruiken.

To Apple or not to Apple? That's the banana!


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Wat je kunt doen is je query's aanpassen en VIEWS gebruiken. Zie ook: http://www.w3schools.com/sql/sql_view.asp

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 07:32
Wat je eigenlijk wil is filteren op een of meerdere velden toch? Dat is toch eigenlijk waar het om draait? In dat geval kan je een flexibele filter query maken waar je veldjes aan toe kan voegen. Bijvoorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$table='medewerkers'; //could be an array of allowed tables
$user=4; //could be some security measure, for example only allow access to your own data

//conditions could be sent by get variables
$conditions=array(
  "actief=1",
  "relatiemanager=5",
);

//pseudo code, check inputs
$sql="SELECT * FROM ".$table." WHERE user=".$user."";
foreach($conditions AS $condition) {
  $sql.=" AND ".$condition;
}

echo $sql;

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 06:00
Zolang jouw SP (afkort: Stored Procedure) parameters ondersteunt (voornamelijk: IN) dan is het geen probleem om een waarde door te geven. Het werkt ongeveer zo:

PHP:
1
$query = "CALL testprocedure('string')"; //of EXECUTE dacht ik..


Voor meer informatie over Stored Procedures en MySQL (MSSQL is goede documentatie over beschikbaar @ MSDN): http://www.mysqltutorial....rocedures-parameters.aspx

Hier staat het aardig simpel uitgelegd waar het voor is.

Acties:
  • 0 Henk 'm!

  • mac-er
  • Registratie: November 2006
  • Laatst online: 01-09 12:55
Bedankt voor de snelle hulp!

Ik wil nu graag verder gaan met het voorbeeld van DJLuc.

Alleen wil ik nog even vragen of het mogelijk is om ipv. waar nu $table staat een view aan te roepen. Want in dat geval is het gewoon een kwestie van een selectie aan een view meegeven.

Edit: nog een subvraag, kan ik ook een record toevoegen aan een view waarna hij me alles op het goede niveau plaatst?

[ Voor 17% gewijzigd door mac-er op 19-04-2010 10:46 ]

To Apple or not to Apple? That's the banana!


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Gezien de vragen die je hebt (die redelijk basic zijn): waarom niet 'gewoon' in Filemaker? Blijkbaar hebben jullie al gekozen voor het opnieuw bouwen van die applicatie. Ik vermoed dat je de Access applicatie sneller kunt overzetten naar Filemaker dan naar PHP.

Verder: als je dan toch naar PHP wilt overzetten: zoek een framework uit dat het bouwen van HTML formulieren en het definieren van relaties tussen tabellen vereenvoudigd. Zie bv http://www.atk-framework.com/ (maar er zijn er meer).

Als het echt een gigantische applicatie is dan helpt het gebruik van een framework om de boel een beetje overzichtelijk te houden.

Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Waarom geen OpenOffice (Base) om met de database te connecten? Via ODBC kun je prima connecten, vervolgens werken de gebruikers verder zoals ze altijd via Access hebben gewerkt. Het lijkt er tenslotte sterk op.

Mocht je de MSSQL-server ook willen omzetten naar iets anders, zou ik ook eens naar PostgreSQL kijken. Werkt prima op OS X (en Windows, Linux, etc), schaalt uitstekend en is gratis. Daarnaast is het nog een ver familielid van MSSQL, met betrouwbaarheid zit het dus wel goed.

Acties:
  • 0 Henk 'm!

  • mac-er
  • Registratie: November 2006
  • Laatst online: 01-09 12:55
Om te beginnen, PHP is idd. een beetje bijzaak, maar daar willen we ook serieus naar kijken. Er is een kleine kans dat het in de vorm van een website komt als Filemaker niet toereikend blijkt te zijn

Verder is het niet mogelijk om MSSQL naar een andere database te converteren, deze zal dus op een windows server blijven draaien. Probleem is namelijk dat er ooit een applicatie is gekocht die veel gebruikt wordt (webbased in flash) die alleen maar overweg kan met MSSQL, vandaar dat we aan dit model database zijn verbonden.

We willen ook niet verdergaan met Base, dan vallen we namelijk weer terug op de Access interface waar we toch wel redelijk graag vanaf willen. Daarom willen we het liefst filemaker gebruiken, en voor zover dat niet toereikend is willen we als alternatief PHP houden.

Maar weet iemand wat de mogelijkheden zijn van Stored Procedures binnen filemaker, en hoe we deze aan kunnen roepen + variabelen meegeven?

EDIT: subvraag:
Ik ben nu een view als test aan het maken, en die kan ik inderdaad aanroepen in Filemaker. Maar is het ook mogelijk om met een trucje (via filemaker of mssql) een filter maken?

In MSSQL kan ik b.v. aan de view het volgende toevoegen:
SQL:
1
WHERE     (project_name = @projectnaam)


Helaas werkt dit niet en moet ik dus een andere oplossing zoeken. Weet iemand eentje voor me?

[ Voor 18% gewijzigd door mac-er op 19-04-2010 14:13 . Reden: toevoeging subvraag ]

To Apple or not to Apple? That's the banana!


Acties:
  • 0 Henk 'm!

  • mac-er
  • Registratie: November 2006
  • Laatst online: 01-09 12:55
Nog even een toevoeging, moet het perse met een @ zijn? Ik lees ook iets over een vraagteken plaatsen waar in het voorbeeld @projectnaam staat, maar dan maakt hij er zelf een parameter van.

Want het zijn op zich geen statische query's, hij kan b.v. net zo goed filteren op alles tussen die datum en die datum.

To Apple or not to Apple? That's the banana!

Pagina: 1