login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Data ophalen met functie (Opgelost)

Offline Ultimatum - 18/03/2008 17:54
Avatar van UltimatumPHP expert Ik moet nu op een pagina een overzicht maken van bedrijven en daar weer de afdelingen onder en van die afdelingen dan weer de gegevens. Maar het lijkt me niet echt efficient om 3 loops in elkaar te maken. Ik dacht dus dat ik per ding (alle bedrijven, afdelingen, gegevens) in een functie zet en het dan op de pagina uitlees. Maar nu komt mijn probleem. Ik moet dus in die 3 functies de gegevens in een array stoppen en dan op de overzicht pagina moet ik alsnog de 3 arrays gaan uitlezen en dan heb ik dus weer 3 loops in elkaar. Ik vroeg me af of er een manier of zoiets is om dus 3 arrays uit te lezen of gegevens in de functie anders op te slaan om niet 3 loops in elkaar te hebben.

Of is het beste gewoon om de gegevens niet via een functie op te halen maar gelijk? Want ik heb die gegevens wel vaker nodig dus leek me zelf beter om de gegevens in een functie te lezen zodat ik alleen die functie hoef op te roepen op 3 verschillende pagina's in plaats van 3x een query maken en die fetchen.

Ik zat dus alleen met het uitlezen van die functie omdat als ik door middel van foreach die array uit de functie weer uitlees heb ik het zelfde effect als dat ik geen functie gebruik

Hoop dat het duidelijk is want het verhaal werd toch iets langer dan dat ik gepland had 

4 antwoorden

Gesponsorde links
Offline Rik - 18/03/2008 19:08
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Als je één keer met drie loops uitleest kan je ook gelijk ergens in een variabele de hele output opslaan. Dan kan je die later op verschillende plaatsen in je script opnieuw gebruiken. Dat is het handigste als je de gegevens op precies dezelfde manier moet hebben. Als dat niet zo is kan je binnen die drie loops verschillende formaten ervan opslaan.

Tot zover de loops. Ik zou voordat je verder gaat eens kijken hoe de gegevens zijn genormaliseerd of hoe je dat het beste zou kunnen doen. Dan zou je door middel van joins alles in één query kunnen zetten. Als je dan in die ene loop die je nodig hebt om daar het resultaat van uit te lezen de gegevens gelijk overzichtelijk opslaat in een array kan je dat ook makkelijk weer opnieuw gebruiken.

De methode met normaliseren en joins is volgens mij de meest efficiënte, maar ik weet niet of dat binnen jouw script mogelijk is.
Offline Ultimatum - 18/03/2008 19:13
Avatar van Ultimatum PHP expert Ik heb mijn database compleet genormaliseerd, het is een school project dus het is in samenwerking van de leraar gegaan dus dat is wel goed neem ik aan .

Maar ik moet eerst alle bedrijven hebben en onder het bedrijf moeten alle afdelignen van dat bedrijf staan. Als ik een inner join gebruik dan loopt hij door alle records heen alsof ze bedrijven zijn toch, dan kan ik toch geen onderscheid maken tussen bedrijven en afdelingen?
Offline Rik - 18/03/2008 19:30 (laatste wijziging 18/03/2008 19:30)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je kan dan ook de afdelingen nemen en de bedrijven daarop joinen. Als je dan sorteert op bedrijf kan je alsnog per bedrijf uitlezen. Je houdt dan een variabele bij als je over de resultaten loopt met daarin het bedrijf dat bij de vorige row is gevonden. (En dan natuurlijk leeg op het begin) Telkens als het vorige bedrijf anders is dan het bedrijf in de huidige row weet je dat je aan een nieuw bedrijf begint en dus een header of iets dergelijks moet outputten.

  1. <?php
  2. $result = mysql_query('..');
  3. $prevComp = '';
  4. while ($row = mysql_fetch_assoc($result)) {
  5. if ($row['comp'] !== $prevComp) {
  6. // ... Header voor het bedrijf outputten
  7. }
  8.  
  9. // ... Afdeling outputten
  10.  
  11. $prevComp = $row['comp'];
  12. }
  13. ?>
Offline Ultimatum - 18/03/2008 19:33 (laatste wijziging 18/03/2008 20:24)
Avatar van Ultimatum PHP expert Hmm..., zal wel even kijken. Je hebt me in ieder geval op weg geholpen, kijken of ik het verder zelf kan .

Hé, het werkt . Heb zelfs niets hoeven wijzigen behalve dan de query en veld namen  . Nog bedankt hé 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.181s