[PHP & MYSQL] Formulier opbouwen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Goedenavond,

Een tijd geleden heb ik een cms systeem gebouwd, nu ben ik dit aan het herschrijven en wil dus het een en ander optimailseren.

Voor de output snap ik nu inmiddels hoe joins werken. Dit maakt de query's een stuk eenvoudiger en ik heb er vooral een stuk minder nodig.

Nu mijn vraag:

Voor in het invoeren van de database heb ik een formulier. Hierin zitten een aantal dropdown boxes. Deze worden nu allemaal met een aparte query gevuld vanuit verschillende tabellen. Is er ook een mogelijkheid om dit ook met 1 query te doen. Zo ja, dan ben ik benieuwd hoe dit heet zodat ik er op kan googelen

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Het formulier ( inclusief dropdown boxen ) is toch ook gewoon output?

Als ze afhankelijk van elkaar zijn en bijv via ajax gevoed worden dan zou je theoretisch alle mogelijke waardes uit je dbase op kunnen halen en daar overheen itereren per ajax call, maar dan doe je het effect van een dbase teniet.

Zonder ajax is het gewoon 1 query en die output een beetje verdelen over je form-boxes.

Maar geef anders een wat voorbeeldcode hoe je het nu doet, want misschien zit er wel een fout in je dbase structuur waardoor je moeilijk zit te doen.

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Okey, hierbij de code

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
if(isset($_REQUEST['menu'])){
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>?p=toevoegen&menuToevoegen" enctype="multipart/form-data">
    <table cellspacing="0" cellpadding="0">
<tr>
    <td colspan="3" class="formHeader">Toevoegen menu</td>
</tr>
<tr>
    <td class="formItem">Website:</td>
    <td class="formInput"><select name="site_id">
<?php
    $result=mysql_query("SELECT * FROM cms_sites
                            ORDER BY site_url");
    ## De verkregen gegevens tonen
    while ($row=mysql_fetch_object($result)){
    echo("<option value='$row->parent_id'");if($row->default_site==0){echo(" style='background-color:#EEFBC1;' selected");}echo(">$row->site_url</option>");}
    ?>
    </select></td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">Type menu:</td>
    <td class="formInput"><select name="menuLaag">
            <option value="id_1">Laag 1 (Afdeling)</option>
            <option value="id_2">Laag 2 (Type producten)</option>
            <option value="id_3">Laag 3 (Producten)</option>
    </select></td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">Naam (volledig):</td>
    <td class="formInput"><input type="text" name="menuNaamVolledig"></td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">Naam (button geschikt):</td>
    <td class="formInput"><input type="text" name="menuNaamButton">&nbsp;(optioneel)</td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">Afbeelding button:</td>
    <td class="formInput"><input type="file" name="bestand1"></td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">Achtergrond flash animatie:</td>
    <td class="formInput"><input type="file" name="bestand2"></td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">Na toevoegen direct koppelen aan content?</td>
    <td class="formInput"><select name="content_id">
    <?php
    $result=mysql_query("SELECT * FROM cms_content WHERE prullenbak = '0'
                        ");
    ## De verkregen gegevens tonen
    while ($row=mysql_fetch_object($result)){?>
    <option value="<?php echo $row->parent_id;?>"><?php echo $row->contentNaam;?></option>
    <?php }?>
    </select>
    </td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">Koppelen aan:</td>
    <td class="formInput"><input type="file" name="bestand2"></td>
    <td class="formVraag"><img src="images/vraagteken.jpg" width="15" height="15" alt="" border="0"></td>
</tr>
<tr>
    <td class="formItem">&nbsp;</td>
    <td class="formInput" colspan="2"><input type="submit" name="verwerken" value="verwerken" style="width:70px;">&nbsp;<input type="reset" name="verwerken" value="annuleren" style="width:70px;"></td>
</tr>
</table>
</form>
<?php
}
?>

Zoals te zien heb ik nu twee keer een query naar verschillende plaatsen. Zijn deze dus in 1 query te stoppen

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Gomez12 schreef op zondag 05 april 2009 @ 23:21:
Zonder ajax is het gewoon 1 query en die output een beetje verdelen over je form-boxes.
Wat heeft AJAX er mee te doen? Je kan ook zonder AJAX meer dan 1 query draaien hoor. ;)

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 10:36

Patriot

Fulltime #whatpulsert

josvane schreef op zondag 05 april 2009 @ 23:47:
Okey, hierbij de code

[ .. lap code .. ]

Zoals te zien heb ik nu twee keer een query naar verschillende plaatsen. Zijn deze dus in 1 query te stoppen
Dit met één query doen heeft geen nut. Er is vast een heel erg kromme manier om het te doen, maar dan moet je al met het resultaat gaan modderen om het te scheiden. Dat is dus nooit iets wat je wilt doen.

[ Voor 21% gewijzigd door Patriot op 06-04-2009 00:14 ]


Acties:
  • 0 Henk 'm!

  • Martine
  • Registratie: Mei 2002
  • Niet online
Je kan toch gewoon een functie maken die een checkbox output? ;)

Acties:
  • 0 Henk 'm!

  • DamadmOO
  • Registratie: Maart 2005
  • Laatst online: 19-09 19:31
cms_content en prullenbak in 1 query... of je bent tevreden met je prullenbak of je doet alles gewoon in 1 taal :X

Of je je queries kan samenvoegen ligt aan waar de data vandaan komt. Zit het voor alle drop down boxen in 1 tabel dan kan je het 1 keer ophalen en dan het resultaat hiervan per drop down box verschillend filtreren. Maar of dat performance technish beter is kan ik je zo 1-2-3 niet zeggen. Dat ligt er natuurlijk ook aan hoeveel backend/frontend servers je hebt en of deze uberhaupt wel fysiek andere servers zijn (waarschijnlijk niet).

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 10:36

Patriot

Fulltime #whatpulsert

Martine schreef op maandag 06 april 2009 @ 00:12:
Je kan toch gewoon een functie maken die een checkbox output? ;)
Waar heb jij het over?
DamadmOO schreef op maandag 06 april 2009 @ 00:14:
cms_content en prullenbak in 1 query... of je bent tevreden met je prullenbak of je doet alles gewoon in 1 taal :X
Sorry, wat bedoel je daar precies mee? Hij zorgt gewoon dat hij de pagina's op zijn cms niet hard-delete, dat is een prima zaak hoor.
Of je je queries kan samenvoegen ligt aan waar de data vandaan komt. Zit het voor alle drop down boxen in 1 tabel dan kan je het 1 keer ophalen en dan het resultaat hiervan per drop down box verschillend filtreren. Maar of dat performance technish beter is kan ik je zo 1-2-3 niet zeggen. Dat ligt er natuurlijk ook aan hoeveel backend/frontend servers je hebt en of deze uberhaupt wel fysiek andere servers zijn (waarschijnlijk niet).
Als je de code even had bekeken, dan had je gezien dat het data is die niets met elkaar te maken heeft en uit twee verschillende tabellen komt. Samenvoegen is dus nergens voor nodig.

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
GJtje schreef op maandag 06 april 2009 @ 00:00:
[...]
Wat heeft AJAX er mee te doen? Je kan ook zonder AJAX meer dan 1 query draaien hoor. ;)
Andersom bedoelde ik het.
Ajax heeft er op zich niets mee van doen, maar dat was de enige reden die ik zo snel kon bedenken waarom je meerdere query's zou willen binnen 1 serie dropdown boxen.

Normaal gesproken wil je zo weinig mogelijk query's hebben.

Maar als je bijv als eerste drop down een landen veld hebt en als tweede drop down een plaatsen veld, dan hoop ik toch juist weer niet dat je dit allemaal ( alle plaatsen in alle landen ) in 1 query gaat ophalen...
Dan is een stukje ajax wel makkelijk om de plaatsen op te halen van het geselecteerde land ( en dan heb je dus binnen 1 formulier 2 query's nodig )

@TS : Dit zou ik lekker in 2 query's laten staan, het zijn gewoon 2 verschillende gegevenssets...

Acties:
  • 0 Henk 'm!

  • Martine
  • Registratie: Mei 2002
  • Niet online
Patriot schreef op maandag 06 april 2009 @ 00:18:
[...]
Waar heb jij het over?
[...]
Je hebt gelijk, ik moet op bed want lees de helft niet meer 8)7

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Als je de code even had bekeken, dan had je gezien dat het data is die niets met elkaar te maken heeft en uit twee verschillende tabellen komt. Samenvoegen is dus nergens voor nodig.
Dat was het antwoord op mijn vraag. Ik weet weer even genoeg.

@DamadmOO
De waarde prullenbak is inderdaad omdat verwijderen binnen het systeem geen definitieve actie is. Als je iets verwijderd wordt deze waarde aangepast naar 1

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

@DamadmOO, ik ben bang dat bijna niemand het Nederlandse woord 'content' kent. Ik ben echter wel blij met je opmerking over de prullenbak.

Iets met consistentie in je naamgeving ofzo.

Oh, en verder, het gebruik van $_REQUEST is af te raden. Je weet toch zelf wel of je GET-, POST- of COOKIE-data op wil vragen?

offtopic:
Het rumoer gaat rond dat je in PHP 6 alle variabelen uit één grote associatieve array $_DATA kunt halen, die naast alle data uit GET, POST, COOKIE, SERVER en SESSION ook alle constanten bevat, die vanaf dan ook te wijzigen zijn (inclusief de constanten). Gewoon, voor in het geval je vergeet wat je gedeclareerd hebt. :+

[ Voor 63% gewijzigd door CodeCaster op 06-04-2009 00:50 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Als je toch aan het herschrijven bent zou ik eens naar MySQLi kijken. Wat je vraagt betreft 't is wel mogelijk en je had gewoon op "mysql multi/multiple query" kunnen zoeken.

http://nl3.php.net/manual/en/mysqli.multi-query.php

[ Voor 10% gewijzigd door iH8 op 06-04-2009 00:51 ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

iH8 schreef op maandag 06 april 2009 @ 00:47:
Wat je vraagt betreft 't is wel mogelijk en je had gewoon op "mysql multi/multiple query" kunnen zoeken.
Jij wil zeggen dat je aan de hand van enkel deze code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<td class="formInput"><select name="site_id">
<?php
$result=mysql_query("SELECT * FROM cms_sites ORDER BY site_url");
## De verkregen gegevens tonen
while ($row=mysql_fetch_object($result)){
    echo("<option value='$row->parent_id'");if($row->default_site==0){echo(" style='background-color:#EEFBC1;' selected");}echo(">$row->site_url</option>");}
?> 
(...)
<td class="formInput"><select name="content_id">
<?php
$result=mysql_query("SELECT * FROM cms_content WHERE prullenbak = '0'");
## De verkregen gegevens tonen
while ($row=mysql_fetch_object($result)){?>
    <option value="<?php echo $row->parent_id;?>"><?php echo $row->contentNaam;?></option>
<?php }?>
</select> 

kunt zeggen dat dat in één query kan?

Het gaat om verschillende kolommen uit verschillende tabellen die totaal niets met elkaar gemeen hebben, behalve zo te zien een parent (hoewel, aan de code te zien lijkt parent_id meer op de primary key voor elke tabel. Zie mijn vorige post over de naamgeving). Zonder meer informatie (of met een beetje nadenken) kun je al snel zeggen dat het verstandiger is dit gewoon in twee queries te doen.

[ Voor 4% gewijzigd door CodeCaster op 06-04-2009 00:55 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Ik meld alleen maar even dat meerdere resultsets ophalen met één query wel mogelijk is. Of hij het implementeren kan en of het in dit geval handig / verstandig is laat ik in het midden.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

$query  = "SELECT * FROM foo;";
$query .= "SELECT * FROM bar;";
$query .= "SELECT * FROM pic;";
$query .= "SELECT * FROM nic;";

$results = array();

if ($mysqli->multi_query($query))
{
    do
    {
        if ($result = $mysqli->store_result())
        {
            $results[] = $result;
        }
    }
    while($mysqli->next_result());
}

?>


Het kan in ieder geval. ;)

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 10:36

Patriot

Fulltime #whatpulsert

iH8 schreef op maandag 06 april 2009 @ 01:39:
Ik meld alleen maar even dat meerdere resultsets ophalen met één query wel mogelijk is. Of hij het implementeren kan en of het in dit geval handig / verstandig is laat ik in het midden.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

$query  = "SELECT * FROM foo;";
$query .= "SELECT * FROM bar;";
$query .= "SELECT * FROM pic;";
$query .= "SELECT * FROM nic;";

$results = array();

if ($mysqli->multi_query($query))
{
    do
    {
        if ($result = $mysqli->store_result())
        {
            $results[] = $result;
        }
    }
    while($mysqli->next_result());
}

?>


Het kan in ieder geval. ;)
Ik mag hopen dat je zelf weet dat dat niet is wat je nu doet? Wat snap je niet aan "multiple queries"? Multiple is Engels voor meerdere, je bent dus gewoon meerdere queries uit aan het voeren.

EDIT:
@DamadmOO en CodeCaster

Ik ben wel bekend met de betekenis van content, maar het is inderdaad geen woord dat ik vaak met die betekenis gebruik. Daarom legde ik de link met tevreden ook totaal niet. Gewoon een misverstandje dus, en jullie hebben inderdaad gelijk dat consistente naamgeving in dit geval een beetje mist.

[ Voor 16% gewijzigd door Patriot op 06-04-2009 01:55 ]


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Patriot schreef op maandag 06 april 2009 @ 01:52:
[...]


Ik mag hopen dat je zelf weet dat dat niet is wat je nu doet? Wat snap je niet aan "multiple queries"? Multiple is Engels voor meerdere, je bent dus gewoon meerdere queries uit aan het voeren.
Ok, volg 't. Je spreekt zo de extensie zo maar één keer aan. Ben benieuwd of het scheelt met zelf meerdere queries afvuren. Zal allicht wel het één en ander aan geoptimaliseerd zijn.

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Als je dan toch aan het herschrijven bent zou ik even naar zend framework kijken. Hier zit ook code in om op een nette manier formulieren op te bouwen. En ZF biedt natuurlijk veel meer dan alleen dat :)

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Gomez12 schreef op maandag 06 april 2009 @ 00:21:
Normaal gesproken wil je zo weinig mogelijk query's hebben.
Deze uitspraak is niet volledig. Eigenlijk zou hij moeten zijn:
Normaal gesproken wil je zo weinig mogelijk query's hebben om gerelateerde data op te halen.

Stel je hebt een portal pagina met daarop een shoutbox, een lijstje nieuwsitems, laatst in gereageerde forumberichten en meest recent geposte fotoalbums. Dat betekent dat je minimaal 4 queries voor die pagina gaat gebruiken. Nooit minder!. Om dat te optimaliseren zul je gewoon caching moeten gebruiken, niet alles proberen in 1 query te hacken.

Datzelfde geldt ook voor de vraagstelling van de topicstarter. Het gaat hier over twee niet gerelateerde lijstjes. Gebruik dus ook gewoon twee queries. (tot die conclusie kwam jij (gomez) zelf ook al, dus je weet het wel ;) )

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

iH8 schreef op maandag 06 april 2009 @ 02:09:
[...]


Ok, volg 't. Je spreekt zo de extensie zo maar één keer aan. Ben benieuwd of het scheelt met zelf meerdere queries afvuren. Zal allicht wel het één en ander aan geoptimaliseerd zijn.
En vervolgens moet je zelf aan de klusklus om uit die éne array weer alle losse resultaten te fietsen. Weg is niet alleen je tijdwinst, maar ook de overzichtelijkheid in je programma. Gefeliciteerd, je hebt nu dus niet alleen een schijn optimalisatie doorgevoerd, maar ook de basis voor een niet te onderhouden applicatie gelegd.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Patriot schreef op maandag 06 april 2009 @ 00:18:

[...]


Sorry, wat bedoel je daar precies mee? Hij zorgt gewoon dat hij de pagina's op zijn cms niet hard-delete, dat is een prima zaak hoor.
Hij bedoeld dat je OF alles in het Engels doet (cms_content) OF alles in het Nederlands (prullenbak). Het door elkaar gebruik van twee talen (Engels en Nederlands) binnen één systeem is niet netjes en ook niet duidelijk. Dus hernoem het veld prullenbank gewoon naar 'deleted' en het ziet er weer netjes uit.

Nog even terugkomend op de query zelf:

SQL:
1
SELECT * FROM cms_content WHERE prullenbak = '0';


Die 0 hoort niet tussen quotes te staan. Ik neem aan dat het veld prullenbak van het type BOOL (of TINYINT(1)) is, waardoor je gewoon dit moet doen:

SQL:
1
SELECT * FROM cms_content WHERE prullenbak = 0;


Zonder quotes dus. Of nog beter, voor de duidelijkheid:

SQL:
1
SELECT * FROM cms_content WHERE prullenbak = FALSE;

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21-09 10:43

Matis

Rubber Rocket

Brakkie schreef op maandag 06 april 2009 @ 08:10:
Als je dan toch aan het herschrijven bent zou ik even naar zend framework kijken. Hier zit ook code in om op een nette manier formulieren op te bouwen. En ZF biedt natuurlijk veel meer dan alleen dat :)
Helemaal mee eens. Ik gebruik zelf al jaren ZF. De ondersteuning is goed. Code is geoptimaliseerd en de Object Geörienteerde manier van werken zorgt automatisch voor consistente code (of je moet van hele slechte huize komen ;) ).

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

toaomatis schreef op maandag 06 april 2009 @ 09:44:
[...]


Helemaal mee eens. Ik gebruik zelf al jaren ZF. De ondersteuning is goed. Code is geoptimaliseerd en de Object Geörienteerde manier van werken zorgt automatisch voor consistente code (of je moet van hele slechte huize komen ;) ).
offtopic:
sorry, hoor maar het gebruik van ZF voor een "gemiddelde" site is als schieten met een kanon op een mug. ZF komt pas goed uit de verf in enterprise-situaties.

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21-09 10:43

Matis

Rubber Rocket

Ik heb het niet helemaal met je eens. Ik moet toegeven dat het ZF enorm veel functionaliteit heeft, maar als je een enkele module include kan dat een hele mooi leidraad zijn voor het OO programmeren.

Daarnaast werkt ZF heel goed op Zend Optimized servers.

Ook is het mooi om, wanneer je verwacht een geavanceerde site te bouwen, meteen alles in ZF te doen. Nja dit kan wel een welles nietes verhaal worden, maar ik verwacht dat de TS baat zal hebben bij het ontwikkelen adhv ZF.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 10:36

Patriot

Fulltime #whatpulsert

HuHu schreef op maandag 06 april 2009 @ 09:18:
[...]

Hij bedoeld dat je OF alles in het Engels doet (cms_content) OF alles in het Nederlands (prullenbak). Het door elkaar gebruik van twee talen (Engels en Nederlands) binnen één systeem is niet netjes en ook niet duidelijk. Dus hernoem het veld prullenbank gewoon naar 'deleted' en het ziet er weer netjes uit.
offtopic:
Psst, lees volgende keer nou gewoon even het topic uit voordat je reageert, dit was allang al duidelijk

Acties:
  • 0 Henk 'm!

Verwijderd

Janoz schreef op maandag 06 april 2009 @ 09:14:
[...]


En vervolgens moet je zelf aan de klusklus om uit die éne array weer alle losse resultaten te fietsen. Weg is niet alleen je tijdwinst, maar ook de overzichtelijkheid in je programma. Gefeliciteerd, je hebt nu dus niet alleen een schijn optimalisatie doorgevoerd, maar ook de basis voor een niet te onderhouden applicatie gelegd.
Niet helemaal mee eens, in het voorbeeld is gekozen voor een enkele array maar dit kan je ook in de laatste for-loop al onderverdelen in pre-gedefinieerde arrays.

Overigens zal 1of 2 queries in deze context absoluut geen tijdwinst opleveren en dus nauwelijks een optimalisatie te noemen zijn. Je database heeft dit in no-time uitgevoerd.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op dinsdag 07 april 2009 @ 16:43:
[...]


Niet helemaal mee eens, in het voorbeeld is gekozen voor een enkele array maar dit kan je ook in de laatste for-loop al onderverdelen in pre-gedefinieerde arrays.

Overigens zal 1of 2 queries in deze context absoluut geen tijdwinst opleveren en dus nauwelijks een optimalisatie te noemen zijn. Je database heeft dit in no-time uitgevoerd.
Of je het tijdens de forlus uit elkaar moet trekken of nadat het resultaat terug gegeven is maakt weinig uit. In beide gevallen zul je elke row moeten checken of je al bij de volgende resultset aangekomen bent. Niet alleen maakt dat het uitlezen alvast weer wat ingewikkeld, het zorgt er ook nog eens voor dat je code een stuk lastiger te lezen is. Die paar microseconden die je er heel misschien mee wint is echt niet in verhouding met de verminking van je overzichtelijkheid en de tightcoupling van de verschillende verantwoordelijkheden van je code.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Janoz schreef op maandag 06 april 2009 @ 09:14:
[...]


En vervolgens moet je zelf aan de klusklus om uit die éne array weer alle losse resultaten te fietsen. Weg is niet alleen je tijdwinst, maar ook de overzichtelijkheid in je programma. Gefeliciteerd, je hebt nu dus niet alleen een schijn optimalisatie doorgevoerd, maar ook de basis voor een niet te onderhouden applicatie gelegd.
Deze reply helemaal over het hoofd gezien :o Gelijk heb je. Toch zul je op een gegeven moment moeten leren je data klaarzetten voor je de pagina output zodat je dan op eventuele fouten inhaken kan. Dan kom je toch al snel bij objecten/arrays terecht.

Heel het gegeven geeft mij in dit geval al de kriebels.
Janoz schreef op dinsdag 07 april 2009 @ 19:20:

Of je het tijdens de forlus uit elkaar moet trekken of nadat het resultaat terug gegeven is maakt weinig uit. In beide gevallen zul je elke row moeten checken of je al bij de volgende resultset aangekomen bent. Niet alleen maakt dat het uitlezen alvast weer wat ingewikkeld, het zorgt er ook nog eens voor dat je code een stuk lastiger te lezen is. Die paar microseconden die je er heel misschien mee wint is echt niet in verhouding met de verminking van je overzichtelijkheid en de tightcoupling van de verschillende verantwoordelijkheden van je code.
Ik zie het nut ook niet in bij een paar queries van een paar k aan rows per stuk. De functie bestaat. Het zal zijn nut wel hebben. Ergens :D In dit geval heeft de TS ander advies nodig. Maar dat vroeg hij niet. :) ZF is wel de beste tip die hij gehad heeft. Tijd voor een ZF topic!

[ Voor 38% gewijzigd door iH8 op 07-04-2009 21:14 ]

Aunt bunny is coming to get me!

Pagina: 1