[PHP] Lopen icm Include gaat fout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:01

me1299

$ondertitel

Topicstarter
n.a.v een query wil ik een aantal keer iets weergeven.

De query is gewoon goed, en hij zou bijvoorbeeld 3x moeten loopen.

Hieronder 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
    <?php

    $count = 0;

    while ($mysql_fetch_vragen = mysql_fetch_array($result)) {
        $count++;
        print("</table><table width='100%' border='0'>");
        print("<tr>");
        print("<td><b>Vraag $count</b></td>");
        print("</tr>");
        print("</table><table width='100%' border='0'>");

        if($mysql_fetch_vragen['typeCode'] == "open") {
            include("../includes/open.vraag.inc.php");
        } elseif($mysql_fetch_vragen['typeCode'] == "boolean") {
            include("../includes/boolean.vraag.inc.php");           
        } elseif($mysql_fetch_vragen['typeCode'] == "slide") {
            include("../includes/slide.vraag.inc.php");         
        } elseif($mysql_fetch_vragen['typeCode'] == "meerkeuze") {
            include("../includes/meerkeuze.vraag.inc.php"); 
        }
    }

    ?>


In mijn voorbeeld heb ik 3x typeCode meerkeuze, dat heb ik gecontroleerd, en dat klopt ook.

In meerkeuze.vraag.inc.php staat de volgende 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
<?php

$query = "select * from meerkeuzeopties where kVraagtypeID=". $mysql_fetch_vragen['pkVraagtypeID'];
$result = mysql_query($query);

print("<tr>");
print("<td width='50%' valign='top'>$mysql_fetch_vragen[vraag]</td>");
print("<td width='50%' valign='top'>");

$meerkeuze_count = 0;

while ($mysql_fetch_meerkeuze = mysql_fetch_array($result)) {
    $meerkeuze_count++;

    if($mysql_fetch_vragen['keuzeOfSelect'] == 0) {
        //Option Buttons

        if($meerkeuze_count == 1) {
            print("<input type='radio' name='vraag". $count. "meerkeuzeoptie' value='$mysql_fetch_meerkeuze[pkMeerkeuzeOptieID]' checked>&nbsp;$mysql_fetch_meerkeuze[antwoordoptie]");
        } else {
            print("<input type='radio' name='vraag". $count. "meerkeuzeoptie' value='$mysql_fetch_meerkeuze[pkMeerkeuzeOptieID]'>&nbsp;$mysql_fetch_meerkeuze[antwoordoptie]");
        }
    } else {
        print("<input type='checkbox' name='vraag". $count. "meerkeuzeoptie'". $meerkeuze_count. " value='$mysql_fetch_meerkeuze[pkMeerkeuzeOptieID]'>&nbsp;$mysql_fetch_meerkeuze[antwoordoptie]");
    }
}

print("</td>");
print("</tr>");
print("</tr>");
print("<tr>");
print("<td colspan='2'>&nbsp;</td>");
print("</tr>");

?>


Als ik in meerkeuze.vraag.inc.php print("hoi"); zet oid, dan print hij dat ook maar 1x.

Conclusie van mijn probleem: Ik heb een loop die 3x loopt, in die loop laat ik iets includen (meerkeuze.vraag.inc.php) dit doet hij echter maar 1x.

Weet iemand misschien waarom hij maar 1x meerkeuze.vraag.inc.php include?


Update

Als ik alles weg commentaar in meerkeuze.vraag.inc.php en alleen print ("bla"); doe dan doet hij dat wel 3x

Dus het is iig zeker dat hij ergens in meerkeuze.vraag.inc.php ervoor zorgt dat de voorgaande loop niet verder loopt.

Dingen die ik later in de eerste file doe, worden nog wel uitgevoerd.

[ Voor 23% gewijzigd door me1299 op 02-12-2002 11:42 ]

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Deze manier van includen is niet echt netjes of mooi.. Beter is om aparte functies te maken (evt in een class) die je gewoon aanroept.

dus:
PHP:
1
2
3
4
5
6
7
8
9
function meerkeuze() {
 //--- hier je code
}

function boolean_vraag() {
 //--- hier je code
}

//--- etc

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

DeathKnight schreef op 02 december 2002 @ 11:32:

Update

Als ik alles weg commentaar in meerkeuze.vraag.inc.php en alleen print ("bla"); doe dan doet hij dat wel 3x

Dus het is iig zeker dat hij ergens in meerkeuze.vraag.inc.php ervoor zorgt dat de voorgaande loop niet verder loopt.

Dingen die ik later in de eerste file doe, worden nog wel uitgevoerd.
Als je nu eens regel voor regel gaat kijken wanneer hij het wel doet en niet doet..
ook wel bekend als : debuggen!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:01

me1299

$ondertitel

Topicstarter
thomaske schreef op 02 December 2002 @ 11:43:
Deze manier van includen is niet echt netjes of mooi.. Beter is om aparte functies te maken (evt in een class) die je gewoon aanroept.

dus:
PHP:
1
2
3
4
5
6
7
8
9
function meerkeuze() {
 //--- hier je code
}

function boolean_vraag() {
 //--- hier je code
}

//--- etc
Naja dat kan opzich ook, maar dat zou voor de werking niet veel uit moeten maken. Plus dat ik het irritant vind dat ik variablen e.d. weer moet gaan doorgeven.

En verder zal ik deze include niet hergebruiken in het project, zodat het ook geen extra voordeel opleverd.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

DeathKnight schreef op 02 December 2002 @ 11:47:

Naja dat kan opzich ook, maar dat zou voor de werking niet veel uit moeten maken. Plus dat ik het irritant vind dat ik variablen e.d. weer moet gaan doorgeven.
Dat doorgeven van variabelen maakt je code een stuk duidelijker en transparanter! Op deze manier als bijvoorbeeld iemand alleen je include file ziet, worden er allemaal variabelen aangeroepen waarvan je totaal niet weet waar ze vandaan komen en wat ze precies doen. Verder is ook het vinden van fouten (!!!) op deze manier een stuk makkelijker omdat je precies kan zien, in welk gedeelte van je applicatie de fout zit..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:01

me1299

$ondertitel

Topicstarter
thomaske schreef op 02 December 2002 @ 11:47:
[...]


Als je nu eens regel voor regel gaat kijken wanneer hij het wel doet en niet doet..
ook wel bekend als : debuggen!
;) het is nog vroeg :D

Naja ik ben er nu achter waar het fout gaat, namelijk:

while ($mysql_fetch_meerkeuze = mysql_fetch_array($result)) {
}

Hij loopt dat keurig en fijn, maar de 2x verrekt hij het om die loop nog eens uit te voeren.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:01

me1299

$ondertitel

Topicstarter
Fout gevonden:

Bovenaan meerkeuze.vraag.inc.php doe ik een query ik heb $result hernoemt naar $result_meerkeuze, omdat het anders een conflict opleverde.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

DeathKnight schreef op 02 December 2002 @ 12:05:
Fout gevonden:

Bovenaan meerkeuze.vraag.inc.php doe ik een query ik heb $result hernoemt naar $result_meerkeuze, omdat het anders een conflict opleverde.
Da's nou precies wat ik bedoel :X

je weet totaal niet meer welke variable waar beschikbaar zijn, en wat ze precies voorstellen..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:01

me1299

$ondertitel

Topicstarter
thomaske schreef op 02 december 2002 @ 12:17:
[...]


Da's nou precies wat ik bedoel :X

je weet totaal niet meer welke variable waar beschikbaar zijn, en wat ze precies voorstellen..
:+

Je hebt wel gelijk opzich, met een functie hadden ze nooit een conflict op kunnen leveren, aangezien de gedeclareerde variablen buiten de functie niet bekend hadden geweest.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

:)

toon dan ook meteen je goede wil, en schrijf het hele zooitje even om naar functies! ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:01

me1299

$ondertitel

Topicstarter
thomaske schreef op 02 december 2002 @ 12:24:
:)

toon dan ook meteen je goede wil, en schrijf het hele zooitje even om naar functies! ;)
Als jij mijn baas kan overtuigen dat dat geld waard is vind ik het goed B)

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

DeathKnight schreef op 02 december 2002 @ 12:25:
[...]


Als jij mijn baas kan overtuigen dat dat geld waard is vind ik het goed B)
De tijd dat je hiermee ben bezig geweest om het probleem te vinden, had je dan een stuk nuttiger kunnen besteden.
Verder als er over een tijdje, in deze ondoorgrondelijke code, wat aangepast moet worden, door een iemand anders, wordt degene helemaal gek, en schrijft het hele zooitje opnieuw..

Dus, door het nu even om te schrijven, zullen er een hoop toekomstige problemen je worden bespaard!

[ Voor 3% gewijzigd door thomaske op 02-12-2002 12:42 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."

Pagina: 1