[PHP] While blijft doorgaan ondanks return

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
De topic title is erg vaag, excuses.
Maar goed mijn probleem, ik heb deze code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
while ($result = mysql_fetch_array($query)) {
  if ($result['id'] != $p) { // Deze check werkt goed

    echo '1';

    mysql_query(" UPDATE table_1 SET views = views + 1 WHERE id = ".$result['id']." ") or die();

    echo '2';

    return $result['id'];
  }
}


Ik krijg ook steeds de goede $result['id'] terug, maar wat is nu het probleem: de views worden verhoogd met 2 elke keer .... ? En soms worden in de table_1 alle views van de records verhoogd met 1.

Ik snap er helemaal niets van. Ik heb ook goed gechecked dat deze code maar 1 keer wordt uitgevoerd. Zo zie ik maar 1 keer de output "1 2". (door de echo's)

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
een break; zou dat moeten verhelpen

als het zaakje maar 1x geëchood wordt, dan wordt ook die mysql-query maar 1x uitgevoerd. ik vermoed dat je probleem ergens anders zit.
ga een met exit; op bepaalde plaatsen na wat er precies gebeurd, dan manipuleer je wat beter waar je script stopt

[ Voor 93% gewijzigd door marty op 04-04-2006 15:43 ]


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Normaliter gebruik je break om je while te breaken ;)

Of hou je gewoon je mond als je niet goed leest :o

[ Voor 35% gewijzigd door BtM909 op 05-04-2006 10:41 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
marty schreef op dinsdag 04 april 2006 @ 15:39:
een break; zou dat moeten verhelpen
hoewel dat niet nodig zou moeten zijn..
ik zie het niet in je code, het lijkt me logisch, maar vraag het toch maar ff:
je voert die while wel uit in een functie?
dus bijv.:
PHP:
1
2
3
4
5
6
7
function Blaat($var) {
   while ($var < 10) {
    $var++;
    if ($aarde == "plat")
      return $var;
  }
}

[ Voor 19% gewijzigd door BasieP op 04-04-2006 15:42 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

het gaat niet over switches en cases, Bergen. Koffietijd.

[ Voor 169% gewijzigd door Bergen op 04-04-2006 15:46 ]


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Ja die had ik ook al geprobeerd, maar denk op de verkeerde plaats.
Zo zou die moeten dan dan toch:
PHP:
1
2
3
4
5
6
while ($result = mysql_fetch_array($query)) { 
  if ($result['id'] != $p) {

  }
  break;
}


Maar dan klopt er nog iets niet, deze code zit namelijk in een functie, maar dat had je al kunnen raden door de 'return'. Maar een return zorgt er toch altijd voor dat een functie stopt ??

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Bergen schreef op dinsdag 04 april 2006 @ 15:41:
Net als in de voorbeelden in de handleiding: http://nl3.php.net/switch

[...]
Ja, wel dus. :) Zo is PHP gemaakt, zodra een case euh.. overeenkomt zeg maar, dan worden alle statements daarna uitgevoerd, van alle cases die daarna komen. Tenzij er een break komt dus.
Ik ben het met BasieP eens dat die return ook al als break zou moeten fungeren.
ik was m'n post dan ook al aan het wijzigen .. zeker gezien het feit dat er maar 1x iets geëchood wordt duidt er ook op dat dat ook inderdaad plaatsvindt.
dus ik vermoed dat de fout ergens anders zit

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
verytallman schreef op dinsdag 04 april 2006 @ 15:43:
Ja die had ik ook al geprobeerd, maar denk op de verkeerde plaats.
Zo zou die moeten dan dan toch:
PHP:
1
2
3
4
5
6
while ($result = mysql_fetch_array($query)) { 
  if ($result['id'] != $p) {

  }
  break;
}
nee, de break wil je volgens mij binnen je if accolades hebben. (als er aan die conditie voldaan is, alleen dan wil je dat de while stopt

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Bergen schreef op dinsdag 04 april 2006 @ 15:41:

Ja, wel dus. :) Zo is PHP gemaakt, zodra een case euh.. overeenkomt zeg maar, dan worden alle statements daarna uitgevoerd, van alle cases die daarna komen. Tenzij er een break komt dus.
verklaar je nader..

mijn code werkt hier namelijk gewoon, en ik break niet
http://basiep.dyndns.org/test.php

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
    function Blaat($var) {
       while ($var < 10) {
        $var++;
        if ($var == 5)
          return $var;
      }
    }
    
    echo Blaat(1);
?>


uitkomst is gewoon '5', en dus gaat ie uit de while loop bij de 'return' (zoals in alle talen, en zoals het hoort)

[ Voor 11% gewijzigd door BasieP op 04-04-2006 15:47 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Bergen: Waar zie jij in hemelsnaam een switch statement :? .

verytallman: Zoals * marty al aangeeft wordt dat sql statement maar één keer uitgevoerd, aangezien er maar één keer 12 op het scherm komt, zeg je zelf. De fout zit dus ergens anders, en niet in dit stukje code, lijkt me :) . En ja, een return springt áltijd uit een functie, onconditioneel.

DM!


Acties:
  • 0 Henk 'm!

  • CHeff
  • Registratie: Oktober 2002
  • Laatst online: 19-09 23:37

CHeff

Allemaal gekkigheid

Ik heb zojuist de volgende code geschreven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function lus($test){
    $i = 0;
    while(true){
        echo $test.$i."\n";
        $i++;
        if($i == 10)
            return $i;
    }
}

echo lus("blaat");
?>


Dit genereerde de volgende output:
code:
1
2
3
4
5
6
7
8
9
10
11
blaat0
blaat1
blaat2
blaat3
blaat4
blaat5
blaat6
blaat7
blaat8
blaat9
10


Waaruit ik dus afleid dat de return de while lus netjes onderbreekt. :P

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
CHeff schreef op dinsdag 04 april 2006 @ 15:51:
Ik heb zojuist de volgende code geschreven:
[...]
Waaruit ik dus afleid dat de return de while lus netjes onderbreekt. :P
zie 2 en 3 posts hierboven ;)

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • CHeff
  • Registratie: Oktober 2002
  • Laatst online: 19-09 23:37

CHeff

Allemaal gekkigheid

BasieP schreef op dinsdag 04 april 2006 @ 15:52:
[...]

zie 2 en 3 posts hierboven ;)
Toen was ik de functie nog aan het schrijven :+

Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

JHS schreef op dinsdag 04 april 2006 @ 15:48:
Bergen: Waar zie jij in hemelsnaam een switch statement :? .
Jaja, zie m'n edit... Ik snap ook niet hoe ik erbij kwam... Misschien had ik even een paar uur moeten slapen vannacht. :O Ik zag iets over een break en mijn warhoofd dacht dat 't over een switch ging ofzo denk ik. 8)7

Maargoed, de werking moet dus zijn dat het aantal views van het eerste record wiens id niet P is, verhoogd moet worden met 1? Wil je niet het het aantal views van record P eentje verhogen? Het ziet er ietwat onlogisch uit zo...

Als dat ding in een functie staat, denk ik eerder dat die functie 2x wordt aangeroepen als alles met 2 wordt verhoogd. Of zie je in dat geval ook maar een keer "1 2"?
PHP:
1
mysql_query(" UPDATE table_1 SET views = views + 1 WHERE id = ".$result['id']." ")
Waarom heb je spaties om de query staan?

[ Voor 10% gewijzigd door Bergen op 04-04-2006 16:00 ]


Acties:
  • 0 Henk 'm!

  • Blackbird-ce
  • Registratie: September 2005
  • Laatst online: 20:05
BasieP schreef op dinsdag 04 april 2006 @ 15:46:
[...]
mijn code werkt hier namelijk gewoon, en ik break niet
http://basiep.dyndns.org/test.php

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
    function Blaat($var) {
       while ($var < 10) {
        $var++;
        if ($var == 5)
          return $var;
      }
    }
    
    echo Blaat(1);
?>
Lijkt me logisch, aangezien 'return' vanuit een function direct de rest van het uitvoeren van de functie afbreekt en de result-waarde teruggeeft aan degene die de function aanriep.
In het stukje code van de TS staat echter GEEN function. Een normale while-loop moet ge-break-t worden, er is immers niets te returnen ;)

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Blackbird-ce schreef op dinsdag 04 april 2006 @ 16:00:
[...]


Lijkt me logisch, aangezien 'return' vanuit een function direct de rest van het uitvoeren van de functie afbreekt en de result-waarde teruggeeft aan degene die de function aanriep.
In het stukje code van de TS staat echter GEEN function. Een normale while-loop moet ge-break-t worden, er is immers niets te returnen ;)
le-zen:
BasieP schreef op dinsdag 04 april 2006 @ 15:41:
[...]

hoewel dat niet nodig zou moeten zijn..
ik zie het niet in je code, het lijkt me logisch, maar vraag het toch maar ff:
je voert die while wel uit in een functie?

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Blackbird-ce: Hier geeft de TS aan dat de code wel degelijk in een functie staat ;) .

DM!


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Ik zal de functie even in zijn totaal plaatsen:

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
function getArrVotePic () {

  echo ' 1 ';

  $p = getPrevVoteId();

  $query = mysql_query("SELECT * FROM table_ 1 WHERE status = 1 ORDER BY RAND()") or die();
  
  while ($result = mysql_fetch_array($query)) {

    echo ' 2 ';

    if ($result['id'] != $p) {

      echo ' 3 ';

      $arrVote[] = array("id" => $result['id'] ) ; // Array zit meer in maar overbodig voor hier

      mysql_query(" UPDATE table_1 SET views = views + 1 WHERE id = ".$result['id']." ") or die();

      return $arrVote;
    }
  }
}


Ik krijg als output " 1 2 3" en ik krijg de juiste string terug.

Wat meerdere dingen betekent:
- De functie wordt maar 1 keer uitgevoerd.
- Hij stopt als hij een record heeft gevonden.

Nu gebeuren er 2 dingen, die fout zijn. Soms verhoogd hij de views met 2 van de record die hij gepakt heeft. Maar het gebeurt ook dat hij van alle records de views met 1 verhoogd.

Ik snap er op dit moment even niets meer van.

Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

SELECT * FROM table_ 1 WHERE status = 1 ORDER BY RAND()

table_ 1 zal wel table_1 moeten zijn?

Maar wat moet de functie precies doen? Als we dat weten kunnen we misschien met de juiste oplossing komen. Het is me ook nog steeds niet duidelijk waarom je spaties plaatst om de query heen.

[ Voor 84% gewijzigd door Bergen op 04-04-2006 18:54 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Over die return btw, ik meen me iets vaags te herinneren dat php uit de huidige include file returned als je return gebruikt buiten een functie.
http://nl3.php.net/return

If called from the global scope, then execution of the current script file is ended. If the current script file was include()ed or require()ed, then control is passed back to the calling file. Furthermore, if the current script file was include()ed, then the value given to return() will be returned as the value of the include() call. If return() is called from within the main script file, then script execution ends. If the current script file was named by the auto_prepend_file or auto_append_file configuration options in php.ini, then that script file's execution is ended.

[ Voor 69% gewijzigd door Grijze Vos op 04-04-2006 18:54 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

Grijze Vos schreef op dinsdag 04 april 2006 @ 18:53:
Over die return btw, ik meen me iets vaags te herinneren dat php uit de huidige include file returned als je return gebruikt buiten een functie.
Klopt, maar in dat geval wordt er niets gedaan met de returnwaarde uiteraard. Ik raad je ook aan om van "or die()", "or die(mysql_error())" te maken, zodat hij ook aangeeft wat er aan de hand is zodra hij dood gaat.

[ Voor 18% gewijzigd door Bergen op 04-04-2006 19:02 ]


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
- Die tabel had idd een typefout, maar mijn echte tabelnaam is toch anders
- Al mijn die() hebben wel een mysql_error()
- Ik word gek.

Is er misschien een optie om te zien welke sql commando's worden verstuurd ?

Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Vervang gewoon alle mysql_query()'s in je volledige applicatie door print()'s?

DM!


Acties:
  • 0 Henk 'm!

Verwijderd

Zet in de eerste plaats eens bovenaan je script:

PHP:
1
2
3
<?php
error_reporting(E_ALL); 
?>


dan krijg je al een stuk meer info over wat er allemaal mis gaat.

[ Voor 10% gewijzigd door Verwijderd op 04-04-2006 19:32 ]


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
JHS schreef op dinsdag 04 april 2006 @ 19:21:
Vervang gewoon alle mysql_query()'s in je volledige applicatie door print()'s?
Dat heeft net zoveel zin als de echo's die ik overal plaats. Als die commando's dubbel zouden worden gegeven had ik dat al gezien met me echo's.

Ik bedoel echt de sql commando's die worden doorgestuurd naar de database.

De topic titel klopt trouwens niet meer..... het gaat er helemaal niet om de de lus niet stopt, hij stopt wel.

Het probleem is dit: of hij verhoogd de views met 2 van de gepakte id, of het verhoogd de views van het gepakte id met 1 EN hij verhoogd de views met 1 van steeds een random ander id.

Sorry dat ik het specifieke probleem nu pas vertel maar het koste mij ook even.

Edit:
error_reporting(E_ALL); geeft 0 fouten !

[ Voor 6% gewijzigd door verytallman op 04-04-2006 19:35 ]


Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

Ja, dat bedoelt hij toch ook, alle queries tonen doe je gewoon met echo of print:

$query = "select * from tabel where blablabla";
echo "Query: $query<br>";
$hoi = mysql_query($query) or die(mysql_error());
verytallman schreef op dinsdag 04 april 2006 @ 19:33:
[...]

Het probleem is dit: of hij verhoogd de views met 2 van de gepakte id, of het verhoogd de views van het gepakte id met 1 EN hij verhoogd de views met 1 van steeds een random ander id.
Sorry dat ik het vraag hoor, maar is het de bedoeling dat je code dat doet? Of doet je code dat en moet het eigenlijk iets anders doen?

[ Voor 55% gewijzigd door Bergen op 04-04-2006 19:53 ]


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
De code moet van de gepakte id de views met 1 verhogen, meer niet. Zoals ook in de functie staat die ik eerder gaf.

Het uitprinten van je query, en daarna uitvoeren, daar schiet ik niet veel mee op. Typefouten in de query zitten er niet , dat heb ik al 100x gechecked.

Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 18:18
Hmm en als je die views nu is gewoon in php verhoogt ipv het in je mysql query te doen ?

Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 18:18
Nog een stomme gedachte,

maar voert deze while lus nu niet iedere keer een nieuwe select uit, en kan het door de rand() daardoor niet voorkomen dat er soms 2x opgehoogt wordt ?

Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Doe eens helemaal bovenaan je script een stukje code die een regel wegschrijft naar een file?

Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
gekkie schreef op dinsdag 04 april 2006 @ 20:08:
Hmm en als je die views nu is gewoon in php verhoogt ipv het in je mysql query te doen ?
Geprobeerd, en hij zegt dat hij met 1 omhoog gaat.
gekkie schreef op dinsdag 04 april 2006 @ 20:11:
maar voert deze while lus nu niet iedere keer een nieuwe select uit, en kan het door de rand() daardoor niet voorkomen dat er soms 2x opgehoogt wordt ?
Nee want de SELECT staat boven/buiten de while

Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 18:18
verytallman schreef op dinsdag 04 april 2006 @ 20:20:
[...]

Geprobeerd, en hij zegt dat hij met 1 omhoog gaat.


[...]

Nee want de SELECT staat boven/buiten de while
Dat lijkt me toch niet, je query stel je op voor de while, maar de query wordt pas uitgevoerd als de conditie in je while getest wordt en dat is bij iedere loop.

Als je het is wijzigt in:

code:
1
2
$result = mysql_fetch_array($query);
while($result){

Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

Dan zou dit toch ook moeten werken?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    function getArrVotePic()
    {
        // get $p
        $p = getPrevVoteId();

        // zoek alle rijen waar de status 1 is, en id niet p is...
        $query = "SELECT * FROM table_1 WHERE status = 1 AND id != `".$p."`";
        $results = mysql_query($query) or die(mysql_error());

        // als er eentje is gevonden...
        if (mysql_num_rows($results) > 0)
        {
            /* dan verhogen we het aantal views van die rij.
               Als er meerdere rijen zijn gevonden hebben die pech. */
            $row = mysql_fetch_array($results);
            $query = "UPDATE table_1 SET views=views+1 WHERE id=`".$row['id']."`";
            mysql_query($query) or die(mysql_error());
        } else {
            die("Niets gevonden.");
        }
    }
?>

[ Voor 14% gewijzigd door Bergen op 04-04-2006 20:33 . Reden: bugje :) ]


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Nielsz schreef op dinsdag 04 april 2006 @ 20:19:
Doe eens helemaal bovenaan je script een stukje code die een regel wegschrijft naar een file?
Waarom ?

Wil ik wel doen trouwens , maar dan moet ik ff uitzoeken hoe dat moet.

Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Dit is echt geweldig....

Ik kan wel zeggen dat niemand van jullie ooit het probleem had kunnen weten, het komt namelijk door een lege <img src""> tag ergens op me pagina, niet gedacht hé

Deze jongen had hetzelfde probleem: http://www.sitepoint.com/...?t=362411&goto=nextoldest

Geen lege src="" tags op de pagina dus ! !

Het probleem was dus gelijk verholpen dus ik een spacer.gif met lege src="" tag heb weggehaald.

Dit probleem hebben IE en FF trouwens allebei.

Het was me wel een dagje debuggen weer ;)


Edit: toch leuk om terug te lezen waar iedereen fouten ziet op foutloze code ;)

[ Voor 12% gewijzigd door verytallman op 04-04-2006 21:41 ]


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:10

Robtimus

me Robtimus no like you

gekkie schreef op dinsdag 04 april 2006 @ 20:27:
[...]


Dat lijkt me toch niet, je query stel je op voor de while, maar de query wordt pas uitgevoerd als de conditie in je while getest wordt en dat is bij iedere loop.

Als je het is wijzigt in:

code:
1
2
$result = mysql_fetch_array($query);
while($result){
mysql_fetch_array voert de query niet uit, dat doet mysql_query. mysql_fetch_array gaat 1 vooruit in de SQL results en geeft die rij terug als array. Met jouw code ga je steeds de allereerste rij langs - of nooit of continue zonder te stoppen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

verytallman schreef op dinsdag 04 april 2006 @ 21:38:
Dit is echt geweldig....

Ik kan wel zeggen dat niemand van jullie ooit het probleem had kunnen weten, het komt namelijk door een lege <img src""> tag ergens op me pagina, niet gedacht hé

Deze jongen had hetzelfde probleem: http://www.sitepoint.com/...?t=362411&goto=nextoldest

Geen lege src="" tags op de pagina dus ! !

Het probleem was dus gelijk verholpen dus ik een spacer.gif met lege src="" tag heb weggehaald.

Dit probleem hebben IE en FF trouwens allebei.

Het was me wel een dagje debuggen weer ;)


Edit: toch leuk om terug te lezen waar iedereen fouten ziet op foutloze code ;)

Dat is geen probleem maar volledig according to specification ;)
Als er geen expliciete base URI is gedefinieerd voor een pagina dan wordt de URI van de pagina zelf als base URI genomen.
Voor elementen die externe data inladen wordt gekeken of de URI een volledige URI is, zo niet dan wordt deze omgezet naar een volledige URI mbv de base URI volgens de regels gedefinieerd in rfc 1808.
Hierin staat o.a.:
If the embedded URL is entirely empty, it inherits the entire base URL (i.e., is set equal to the base URL) and we are done.
Maar goed, als je anno 2006 nog spacer.gifjes gebruikt dan verdien je ook niet beter :+

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • EdwinG
  • Registratie: Oktober 2002
  • Laatst online: 22:41
IceManX schreef op dinsdag 04 april 2006 @ 21:59:
[...]
mysql_fetch_array voert de query niet uit, dat doet mysql_query. mysql_fetch_array gaat 1 vooruit in de SQL results en geeft die rij terug als array. Met jouw code ga je steeds de allereerste rij langs - of nooit of continue zonder te stoppen.
Het woord $query geeft in het gegeven script volgens mij toch echt de uitvoer van mysql_query aan. (of zie jij een mysql_query() statement in de while conditie?

code:
1
2
3
$query = mysql_query("SELECT * FROM table_ 1 WHERE status = 1 ORDER BY RAND()") or die();
  
  while ($result = mysql_fetch_array($query)) {

Bezoek eens een willekeurige pagina


Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Gege, hier zijn mijns inziens iterators voor uitgevonden.

Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

EdwinG schreef op dinsdag 04 april 2006 @ 23:20:
[...]

Het woord $query geeft in het gegeven script volgens mij toch echt de uitvoer van mysql_query aan. (of zie jij een mysql_query() statement in de while conditie?
Nee, $query is maar gewoon een naam. $query mag ook $hoi heten. Maar dan nog vind ik dat je ongelijk hebt. De naam van een variabele moet aangeven wat erin zit. Als er in $query niet een query zit maar de results van de query, dan vind ik dat behoorlijk misleidend. In $query hoort de query te zitten, in $result hoort het resultaat te zitten. (Of de uitvoer, in $output, wat jij wilt...)

Dus:
PHP:
1
2
3
4
5
$query = "SELECT * FROM eenofanderetable WHERE etcetera";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_row($result)) {
    // doe er wat leuks mee
}

[ Voor 15% gewijzigd door Bergen op 05-04-2006 10:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Beetje puristen discussie niet? Als je echt op je strepen wilt gaan staan, dan zou die var de naam $result_resource_identifier moeten krijgen ;)

Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

Verwijderd schreef op woensdag 05 april 2006 @ 10:47:
Beetje puristen discussie niet? Als je echt op je strepen wilt gaan staan, dan zou die var de naam $result_resource_identifier moeten krijgen ;)
Dán wordt het een puristendiscussie ja. ;) De naamgeving in mijn post vind ik niet meer dan gebruikelijk.

Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

verytallman schreef op dinsdag 04 april 2006 @ 21:38:

Edit: toch leuk om terug te lezen waar iedereen fouten ziet op foutloze code ;)
Dat code 'werkt' betekent bij lange na nog niet dat deze ook foutloos is ;)..
Verwijderd schreef op woensdag 05 april 2006 @ 10:47:
Beetje puristen discussie niet? Als je echt op je strepen wilt gaan staan, dan zou die var de naam $result_resource_identifier moeten krijgen ;)
Toch kan ik me wel vinden in de opmerking van Bergen. Vergelijk het met bestanden:

Het resultaat van mysql_query in een variabele $query te stoppen is vergelijkbaar met het resultaat van fopen toe te kennen aan een variabelen $bestandsnaam.

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

Pagina: 1