abonnement Unibet Coolblue Bitvavo
  FOK!-Schrikkelbaas donderdag 6 oktober 2005 @ 08:35:30 #201
1972 Swetsenegger
Egocentrische Narcist
pi_31222185
quote:
Op woensdag 5 oktober 2005 21:05 schreef Swetsenegger het volgende:
Hmz, mysql documentation heeft een single querie solution voor de Adjacency List Model (recursieve):
http://dev.mysql.com/tech(...)erarchical-data.html

-edit- nee 1 query per level 0 parent.
Ok,

mijn nested hierarchische model draait.
Ik kan hoofditems aanmaken, en subitems in de hoofditems, en subitems in de subitems, etc. (Dit is nog tricky, subitems aanmaken scheelt namelijk 1 punt verschuiven. Doe je dat niet, maak je alleen maar hoofditems aan, waarbij alleen de volgorde veranderd )

Ik heb twee invoervelden:
'hoofditem' welke feitelijk een nieuw tree aanmaakt.
'subitem' welke een subitem in een hoofditem aanmaakt OF in een subitem, afhankelijk van welk item je selecteert.

Eigenlijk moet ik dus voor elk level een aparte dropdown krijgen, waardoor je het overzicht hou. Maar ik weet even nog niet hoe ik hier de verschillende levels uit moet vissen. Het diepste level is simpel, want daar is rgt gelijk aan lft+1.

1
2
3
4
5
6
7
8
9
10
menu_id |   name   | lft | rgt |
--------+----------+-----+-----+
1       | Horloges |  1  | 14  |
2       | Sieraden |  15 | 16  |
3       | Seiko    |  8  | 13  | 
4       | Citizen  |  2  | 7   |
5       | Kinetic  |  11 | 12  |
6       | Quartz   |  9  | 10  |
7       | Double   |  5  | 6   |
8       | Staal    |  3  | 4   | 

(horloges en sieraden zijn dus trees, waarbij sieraden nog geen subitems heeft)

En dan heb ik nog niet eens nagedacht over items verwijderen
quote:
Op woensdag 5 oktober 2005 22:55 schreef Light het volgende:

[..]

Met nog een paar aanpassingen, en eens goed tellen, ben ik op 59 tekens gekomen
Stoer! PLaatsen op phpfreakz.
Ben benieuwd of jouw methode hetzelfde is als die van SUperRembo
pi_31235492
quote:
Op donderdag 6 oktober 2005 08:35 schreef Swetsenegger het volgende:

Stoer! PLaatsen op phpfreakz.
Ben benieuwd of jouw methode hetzelfde is als die van SUperRembo
Daar had ik 'm gisteravond al geplaatst En de oplossing van SuperRembo heb ik niet gezien, dus ik kan ook niet vergelijken. Maar ik denk toch dat die van mij iets anders is, ik gebruik geen ringel-s ( / beta)
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 13:17:42 #203
1972 Swetsenegger
Egocentrische Narcist
pi_31332250
quote:
Op donderdag 6 oktober 2005 08:35 schreef Swetsenegger het volgende:

[..]

Ok,

mijn nested hierarchische model draait.
Weekendje weg geweest, maar op vrijdag had ik er een soort van klikbaar management systeem om heen gebouwd welke het mogelijk maakt menu items toe te voegen (verwijderen komt later nog) ( http://test.xploise.nl/nested_test.php )

Om dit goed te visualiseren is inspringen natuurlijk perfect. De volgende query vond ik op mysql.org, en geeft perfect de diepte weer van elk item. Hij heeft maar 1 probleem... wanneer 1 naam meer keren voorkomt in je hierarchische model klopt de output niet meer

1
2
3
4
5
6
SELECT node.name, (
       COUNT( parent.name ) -1) AS depth
       FROM nested_menu AS node, nested_menu AS parent
       WHERE node.lft BETWEEN parent.lft AND parent.rgt
       GROUP BY node.name
       ORDER BY node.lft


dat komt doordat de query op naam zoekt uiteraard. Iemand enig idee hoe ik deze kan verbouwen zodat dubbele namen geen problemen geven?
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 13:47:09 #204
1972 Swetsenegger
Egocentrische Narcist
pi_31332871
quote:
Op maandag 10 oktober 2005 13:17 schreef Swetsenegger het volgende:
Iemand enig idee hoe ik deze kan verbouwen zodat dubbele namen geen problemen geven?
Ik was weer veel te moeilijk aan het denken

1
2
3
4
5
6
SELECT node.menu_id, node.name, (
       COUNT( parent.name ) -1) AS depth
       FROM nested_menu AS node, nested_menu AS parent
       WHERE node.lft BETWEEN parent.lft AND parent.rgt
       GROUP BY node.menu_id
       ORDER BY node.lft

Opgelost
pi_31337596
Mensen ik zit met het volgende, ik wil uit een input checken of dit een mogelijke videogrote is, echter weet ik niet welke modusen mogelijk zijn.

bv 1024x800 etc?

ik weet dat ik de texten kan splitten op x ennuh dan de text daarvoor en daarna kan checken op nummeric maaruh dan wil ik graag nog alle modus weten. Is er een lijst en of snelle check of deze modus wel correct is?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31338017
en nog iets vaags.

Ik heb een functie gemaakt.

1
2
3
4
5
6
7
class stat
{
    function statError($msg, $code, $lijn)
    {
        die ("Error gevonden op lijn: " . $lijn . " in de volgende code: " . $code . " en gaf de volgende reden: " . $msg);
    }
    // meer code hieronder mja ga dat niet allemaal posten hoor hehehehehe


en die functie roep ik normaal aan met

1mysql_query($sql) or statError(mysql_error(), $sql, _LINE_);


maaruh daarop krijg ik geen error, maar wel als ik dit doe

1
2
3
4
5
6
7
8
if (mysql_query($sql))
{
    // return true;
}
else
{
     statError(mysql_error(), $sql, _LINE_);
}


Why? ik vat um niet, alle uppercase / lowercase klopt
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 18:31:31 #207
1972 Swetsenegger
Egocentrische Narcist
pi_31338695
quote:
Op maandag 10 oktober 2005 17:37 schreef Chandler het volgende:
Mensen ik zit met het volgende, ik wil uit een input checken of dit een mogelijke videogrote is, echter weet ik niet welke modusen mogelijk zijn.

bv 1024x800 etc?

ik weet dat ik de texten kan splitten op x ennuh dan de text daarvoor en daarna kan checken op nummeric maaruh dan wil ik graag nog alle modus weten. Is er een lijst en of snelle check of deze modus wel correct is?
Je bedoelt zoiets als
640*480
800*600
1024*768
1280*960
1280*1024 (dit is een afwijkende en typische TFT resolutie)
1600*1200
pi_31339116
1   mysql_query($sql) or die (statError(mysql_error(), $sql, _LINE_));

or die() dus ipv or
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 19:40:39 #209
1972 Swetsenegger
Egocentrische Narcist
pi_31340195
http://test.xploise.nl/nested_test.php
Is deze 'visuele methode' om een menu te maken te begrijpen door een leek? Of zijn pulldowns handiger?

Het probleem is een beetje welk huidig item je moet selecteren om een nieuw item ervoor of erachter te krijgen. Vandaar dat ik dit heb opgezet.
pi_31340332
@Swets: Is er zo'n lijst? want deze heb ik helaas niet kunnen vinden

@ikke_ook: volgens mij heb ik in het verleden het ook zonder DIE gedaan en dat moet natuurlijk ook werken volgens mij, maar dat was het probleem niet echt, wel dat bij die if (etc) het fout ging enzo.. dat ie zegt dat de functie niet bestaat
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31340431
@Swets: je manier is idd niet zo simpel te begrijpen, gebruik gewoon + en - etc? om een subitem toe te voegen aan een menu

dus iets van (stel je hebt)


1
2
3
4
5
(+/-)
hoofd menu (+/-)
   test 1 (+/-)
   test 2 (+/-)
sub menu (+/-)

etc.. en dan die plus en of min gebruiken om menu's toe tevoegen en of te verwijderen ofzo?!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 19:56:33 #212
1972 Swetsenegger
Egocentrische Narcist
pi_31340459
quote:
Op maandag 10 oktober 2005 19:49 schreef Chandler het volgende:
@Swets: Is er zo'n lijst? want deze heb ik helaas niet kunnen vinden
Mijn lijstje is aardig compleet hoor
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 20:00:49 #213
1972 Swetsenegger
Egocentrische Narcist
pi_31340583
quote:
Op maandag 10 oktober 2005 19:55 schreef Chandler het volgende:
@Swets: je manier is idd niet zo simpel te begrijpen, gebruik gewoon + en - etc? om een subitem toe te voegen aan een menu

dus iets van (stel je hebt)
[ code verwijderd ]

etc.. en dan die plus en of min gebruiken om menu's toe tevoegen en of te verwijderen ofzo?!
Hmz, dat is ook wel een idee. Alleen zit je dan met een item BOVEN een ander item toevoegen of ONDER een ander item toevoegen.
pi_31340801
wat je kan doen is gewoon voor de 0 tree, een extra button plaatsen en voor de rest gewoon een + en of - (of wat dan ook)..

Ik had vroeger een example die het volgende had

1
2
3
4
5
6
7
8
tree
    treesub1 (add/remove/list)
    treesub2 (add/remove/list)
        treesubsub1 (add/remove/list)
        treesubsub2 (add/remove/list)
 etc 
etc
etc


en dat werkte best, echter zag dat er weer niet uit
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31340825
@Swets; dat lijstje is idd aardig compleet maar er zijn volgens mij nog veel meer modes (1900??) etc?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 20:16:03 #216
1972 Swetsenegger
Egocentrische Narcist
pi_31340929
quote:
Op maandag 10 oktober 2005 20:10 schreef Chandler het volgende:
wat je kan doen is gewoon voor de 0 tree, een extra button plaatsen en voor de rest gewoon een + en of - (of wat dan ook)..

Ik had vroeger een example die het volgende had
[ code verwijderd ]

en dat werkte best, echter zag dat er weer niet uit
1
2
3
4
5
tree
    treesub1 (add/remove/list)
    treesub2 (add/remove/list)
        treesubsub1 (add/remove/list)
        treesubsub2 (add/remove/list)

Als ik achter treesub1 op add klikt. Waar plaatst hij de nieuwe sub dan? boven treesub1 of eronder? Die keuze bestaat sowieso in deze opzet niet meer.

En ik weet al precies hoe het gaat. Systeem draait een paar maanden, klant wil een extra menu optie. De menuoptie mag natuurlijk niet zomaar onderaan komen, nee die moet bijvoorbeeld precies tussen item 3 en 4 komen.

Dus ik wil er ten alle tijden voor zorgen dat het zo flexibel mogelijk is. Maar ik moet toegeven dat het er nu met een aantal menuitems als hogere wiskunde uit gaat zien .

Overigens, met alleen pulldowns WERD het hogere wiskunde. Je hebt namelijk dan sowieso al de keuze 'nested' of 'ernaast' en dan is nog afhankeljik van welke huidig item je selecteert waar het nieuwe item in de lijst verschijnt.
pi_31340994
Dit is wat ik op m'n videokaart in kan stellen:

640x480
720x480
720x576
800x600
848x480
960x600
1024x768
1152x864
1280x720
1280x768
1280x800
1280x960
1280x1024

En dan heb je nog laptops, pda's en tv's met afwijkende resoluties. Extreem klein en extreem groot zou je er uit kunnen filteren, maar verder is er denk ik geen sluitende lijst maken.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 20:21:55 #218
1972 Swetsenegger
Egocentrische Narcist
pi_31341064
quote:
Op maandag 10 oktober 2005 20:11 schreef Chandler het volgende:
@Swets; dat lijstje is idd aardig compleet maar er zijn volgens mij nog veel meer modes (1900??) etc?
Nou, niet veel mensen zullen op dit moment hoger zitten dan 1600*1200
sowieso is het een heel simpel reken sommetje:

1900/640=2.96
480*2,96=1425

Als er zoiets bestaat als 1900 zal het 1900*1425 zijn
Er zijn nog wel meer resoluties, bv voor breedbeeld laptops. die wijken af van het 1.33:1 principe.

Misschien kan je ergens op een uitgebreide statistieken pagina een mooi lijstje vinden
pi_31341116
als je op de add van treesub1 klikt maakt ie een subitem aan met het id van treesub1 en het zelfde geld voor als je klikt op treesub2 dan krijg je dus weer een treesubsub3 met het id van treesub2 als parent_id. ow en met een 'sort' in je tabel kun je altijd zorgen dat iemand op de goede volgorde staan (ook weer met (+ / -) om naar boven cq beneden te verplaatsen. dus ieder ID die je aanmaakt geef je de count van het aantal id's die in de tree zitten).

vb

1
2
3
4
5
6
7
8
ID:PARENT_ID (sort)

0:0 (0)  = tree
1:1 (1)  =    subtree1
2:1 (2)  =    subtree2
3:2 (1)  =       subsubtree1
4:2 (2)  =       subsubtree2
5:1 (3)  =    subtree3


dus stel je zet een item tussen
1
2
3:2 (1)  =       subsubtree1
4:2 (2)  =       subsubtree2


dan wordt dat stukje dus

1
2
3
3:2 (1)  =       subsubtree1
5:2 (2)  =       subsubtree3
4:2 (3)  =       subsubtree2


0:0 (1) staat voor
0 = ID
0 = PARENT_ID
(1) = sorterings positie

The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31341163
@SuperRembo & @Swets; dan ga ik gewoon checken of het nummerieke stukken zijn en is dat het geval dan is het goed.

The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 20:28:05 #221
1972 Swetsenegger
Egocentrische Narcist
pi_31341236
"ow en met een 'sort' in je tabel kun je altijd zorgen dat iemand op de goede volgorde staan (ook weer met (+ / -) om naar boven cq beneden te verplaatsen. dus ieder ID die je aanmaakt geef je de count van het aantal id's die"

Met hierarchische data is het niet zo eenvoudig schuiven helaas.
pi_31341360
hoe bedoel jij hierarchistische data? heb je een voorbeeld?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 20:36:05 #223
1972 Swetsenegger
Egocentrische Narcist
pi_31341485
quote:
Op maandag 10 oktober 2005 20:31 schreef Chandler het volgende:
hoe bedoel jij hierarchistische data? heb je een voorbeeld?
1
2
3
4
5
6
7
8
9
10
menu_id |   name   | lft | rgt |
--------+----------+-----+-----+
1       | Horloges |  1  | 14  |
2       | Sieraden |  15 | 16  |
3       | Seiko    |  8  | 13  | 
4       | Citizen  |  2  | 7   |
5       | Kinetic  |  11 | 12  |
6       | Quartz   |  9  | 10  |
7       | Double   |  5  | 6   |
8       | Staal    |  3  | 4   | 


Zo staat het in de tabel
http://www.sitepoint.com/article/hierarchical-data-database/2
http://dev.mysql.com/tech(...)erarchical-data.html
pi_31341609
lft? en rgt? leg je tabel eens uit?!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31341780
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  maandag 10 oktober 2005 @ 20:56:05 #226
46383 Tiemie
sowieso wel!
pi_31341941
quote:
Op maandag 10 oktober 2005 20:40 schreef Chandler het volgende:
lft? en rgt? leg je tabel eens uit?!
Left Right?
pi_31342046
o mijn god (beukt ff op zijn hoofd; wakker worden )
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 21:07:26 #228
1972 Swetsenegger
Egocentrische Narcist
pi_31342251
quote:
Op maandag 10 oktober 2005 20:59 schreef Chandler het volgende:
o mijn god (beukt ff op zijn hoofd; wakker worden )
Zoals je in die linkjes kunt zien uit mijn vorige post zijn er eigenlijk twee manieren om hierarchische data in een tabel op te slaan:

The Adjacency List Model.
Dat is eigenlijk degene welke jij voorstelt, bij elk child geef je aan van welke parent deze afkomt. Hier is redelijk eenvoudig mee te schuiven en te doen, maar er is maar 1 methode om alle data in de juiste onderlinge verhouding met elkaar uit de tabel te trekken, en dat is vanaf het diepste level, per child een query draaien. Bij grote trees wordt dit dus traag en er zitten nog wat haken en ogen aan (waar ik zelf ook nog niet helemaal uit ben )

The Nested Set model.
Hier kan je met 1 query de volledige tree uit je tabel trekken, snel, etc.
pi_31343602
Jouw 'Adjacency List Model' heb ik gebruikt voor een redelijk uitgebreid web file manager, een systeem waar mensen bestanden kunnen uploaden en downloaden (met nog een hoop operations meer).

Ik heb daarvoor gekozen omdat je dan heel gemakkelijk aan de hand van een id een listing kunt oproepen en je eigenlijk alleen bij het verwijderen van een parent met een laag id en veel children een hoop queries krijgt. Aangezien dat toch bewerkingsqueries zijn maakt mij dat niet zo heel veel uit.

En ik vraag niet in één keer de hele listing ik, ik maak gebruik van Javascript en XML (AJAX) om de children van een parent indien gewenst op te halen
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 22:02:55 #230
1972 Swetsenegger
Egocentrische Narcist
pi_31343937
quote:
Op maandag 10 oktober 2005 21:51 schreef JeRa het volgende:
Jouw 'Adjacency List Model' heb ik gebruikt voor een redelijk uitgebreid web file manager, een systeem waar mensen bestanden kunnen uploaden en downloaden (met nog een hoop operations meer).

Ik heb daarvoor gekozen omdat je dan heel gemakkelijk aan de hand van een id een listing kunt oproepen en je eigenlijk alleen bij het verwijderen van een parent met een laag id en veel children een hoop queries krijgt. Aangezien dat toch bewerkingsqueries zijn maakt mij dat niet zo heel veel uit.

En ik vraag niet in één keer de hele listing ik, ik maak gebruik van Javascript en XML (AJAX) om de children van een parent indien gewenst op te halen
Tja, dat kan inderdaad.
In mijn geval heb ik echter de hele tree nodig (menu) en zal ik dus recursive alle nodes stuk voor stuk uit de db moeten trekken om de onderlinge verhouding te zien. Overigens kan je in het Nested Set Model ook met 1 simpele query een volledig path kan oproepen

1
2
3
4
5
6
7
8
With the nested set model, we can retrieve a single path without having multiple self-joins:

SELECT parent.name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'whatever'
ORDER BY node.lft;


Maar ik ben zeker geen expert, ben pas sinds een dag of 3 mezelf aan het verdiepen in hierarchische data opslag en er zullen vele wegen naar Rome leiden.

Hoe dan ook, het gaat (niet meer) om het database model, dat werkt prima. Het gaat er meer om hoe ik een leek duidelijk kan maken hoe hij een menu maakt
pi_31351538
ps mijn probleem is reeds gefixt ivm $this-> er voor te zetten.. leuk classes
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31352437
quote:
Op dinsdag 11 oktober 2005 05:05 schreef Chandler het volgende:
ps mijn probleem is reeds gefixt ivm $this-> er voor te zetten.. leuk classes
's nachts moet je slapen ipv programmeren man!
  FOK!-Schrikkelbaas woensdag 12 oktober 2005 @ 09:06:34 #233
1972 Swetsenegger
Egocentrische Narcist
pi_31382706
quote:
Op woensdag 12 oktober 2005 09:06 schreef Swetsenegger het volgende:
Fok zoekt devvers: De abonnementen, hoe staat het er mee?
Nice

Ontopic, even meer aan de theoretische/technische kant. Is het rendabel voor een parser als PHP om stack overflows te voorkomen? Voor zover ik weet crashen alle versies van PHP als je de stack laat vollopen.
  woensdag 12 oktober 2005 @ 16:28:14 #235
76312 sh4dow
¯¯¯¯¯¯¯¯¯
pi_31386382
Ik heb een klein vraagje, het zal vast heel simpel zijn maar ik kom er nog niet uit..

Ik heb een ipban script gemaakt, en alle ips staan in een database. Nu ben ik bezig aan het gedeelte dat de gebande bezoekers moet tegenhouden.

Dit is het stukje script:
1
2
3
4
5
6
7
8
9
10
11
12
13
sql = mysql_query("SELECT ip FROM ban")or die(mysql_error());

   while ($obj=mysql_fetch_object($sql)) { 

   $ips = $obj->ip; 
   
   $ip = array($ips); 

   }

if( in_array( $_SERVER['REMOTE_ADDR'], $ip ) ) { 
exit("Je hebt een BAN!");
}

Met behulp van print_r krijg ik deze output:
Array ( [0] => 192.168.1.2 ) Array ( [0] => 192.168.1.1 ) enz

Dit zou moeten zijn:
Array ( [0] => 192.168.1.2 ) Array ( [1] => 192.168.1.1 ) enz

Enig idee hoe ik dit voor elkaar krijg?
pi_31387143
@sh4dow

Je doet telkens

$ip = array($ips);

Daarmee maak je télkens een nieuwe array aan (met 0 items) en stop je daar $ips in. Daardoor krijg je niet wat je wilt. Om jouw voorbeeld te laten werken moet je bovenstaande regel vervangen door

$ip[] = $ips;

Hierdoor voeg je een item aan de array $ip toe. Het is een slim idee om $ip vantevoren te initialiseren met Array().

Even aan de andere kant, je vraagt nu alle IPs op uit de database en kijkt dan of het IP-adres van de bezoeker in de lijst voorkomt. Het is sneller om in je query het IP-adres van de bezoeker op te vragen en te kijken of je iets terugkrijgt, dus zoiets:

1
2
3
4
$result = mysql_query('SELECT `ip` FROM `ban` WHERE `ip` = \'' . $_SERVER['REMOTE_ADDR'] . '\'');
if (mysql_num_rows($result) > 0) {
    exit('Je hebt een BAN!');
}
  donderdag 13 oktober 2005 @ 11:58:26 #237
76312 sh4dow
¯¯¯¯¯¯¯¯¯
pi_31405722
@JeRa, thnx! het is gelukt.
  donderdag 13 oktober 2005 @ 12:38:44 #238
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31406774
of je doet een SELECT COUNT en kijkt dan met mysq_result of het getal groter dan 0 is. Aangezien je het ip adres niet hoeft te weten maar alleen te tellen hoef je het ook niet uit de database te trekken maar alleen te tellen.
Ik heb het godverdomme gehad met die onkunde van je!
pi_31526161
Een klein en subtiel schopje om dit topic weer makkelijk vindbaar te maken
pi_31531933
quote:
Op woensdag 12 oktober 2005 13:29 schreef JeRa het volgende:

[..]

Ontopic, even meer aan de theoretische/technische kant. Is het rendabel voor een parser als PHP om stack overflows te voorkomen? Voor zover ik weet crashen alle versies van PHP als je de stack laat vollopen.
Iemand?
pi_31532681
Ok, ik zit weer te klunzen..
Kom er even niet uit..

Ik heb dit:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// willekeurig nummer
$randnum = rand(1, 5);

// Array
$tekst[1] = "tekst 1";
$tekst[2] = "tekst 2";
$tekst[3] = "tekst 3";
$tekst[4] = "tekst 4";
$tekst[5] = "tekst 5";

echo
"$tekst[$randnum]";
?>


Maar nu wil ik, dat ie in een session opslaat welk nummer ie gehad heeft (geen prob, dat lukt me wel). Maar nu wil ik dat ie die exclude..

Edit: Ow wacht.. Hoe kan ik het dan het best in een session zetten als het al een paar keer is aangeroepen, en er dus meerdere nummers ge-exclude moeten worden?
Ook in een array?

[ Bericht 7% gewijzigd door Siegfried op 18-10-2005 13:24:00 ]
pi_31532956
1
2
3
4
5
6
function randExcl($min, $max, $exclude) {
   $r = rand($min, $max - 1);
   if ($r >= $exclude) {
      $r++;
   }
}
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31533266
Kijk aan, daar heb ik wat aan!

Maar hoe exclude ik meerdere getallen?
pi_31533683
Hmm, ik heb enkele vraagjes bij de functie gezet..
Snap niet helemaal waarom je eerst 1 van de max afhaald, en later bij de random er weer 1 bij optelt.
Of begrijp ik de functie verkeerd?

1
2
3
4
5
6
7
8
<?php
function randExcl($min, $max, $exclude) {
   
$r = rand($min, $max - 1); // -1 haalt 1 van de max af?
   
if ($r &gt;= $exclude) { // Als random groter of gelijk is aan? Toch alleen excluden als ie gelijk is aan?
      
$r++; // Random +1?
   
}
}
?>
pi_31533693
1
2
3
4
5
6
7
8
9
function randExcl($min, $max, $exclude) {
    do {
        $r = rand($min, $max);
    } while (in_array($r, $exclude));
    return $r;
}

$exclude_getallen = array(2, 4, 5);
$waarde = randExcl(1, 10, $exclude_getallen);


Zoiets?
pi_31534192
Als dat werkt dan ben ik je heel erg dankbaar!
Het ziet er in elk geval erg logisch uit
pi_31534405
quote:
Op dinsdag 18 oktober 2005 14:15 schreef Siegfried het volgende:
Als dat werkt dan ben ik je heel erg dankbaar!
Het ziet er in elk geval erg logisch uit
Werken, dat doet het je moet alleen opletten dat $exclude een array moet zijn en dat je niet álle getallen exclude, want dan krijg je een oneindige loop
pi_31534508
Dat komt goed, thnx!
pi_31536254
Moet een session variabele reeds bestaan, alvorens ik " array_push" kan gebruiken om een gebruikt nummer aan de array toe te voegen?

Nee toch?
pi_31536980
Ik krijg het niet werkend

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start
();

function
random_maker($min, $max, $exclude) {
    do {
        
$r = rand($min, $max);
    }
    while (
in_array($r, $exclude));
    return
$r;
}

$random_getal = random_maker(1, 3, $_SESSION['exclude']);

echo
"Random-nummer: $random_getal";

array_push($_SESSION['exclude'],"$random_getal");
?>


Dit geeft:
Warning: in_array(): Wrong datatype for second argument in exclude_test.php on line 8
Random-nummer: 1
Warning: array_push(): First argument should be an array in exclude_test.php on line 16

Dus hij geeft em eem foutmelding, en hij blijft dubbele uitvoer geven..
Wat doe ik toch fout?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')