abonnement Unibet Coolblue Bitvavo
  FOK!-Schrikkelbaas donderdag 27 oktober 2005 @ 20:16:26 #101
1972 Swetsenegger
Egocentrische Narcist
pi_31734464
Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
Met andere woorden:

if valueA-valueB < 5% van valueA

want (valueA-valueB)*(valueA/100) vind ik wat ranzig
pi_31734721
Lijk me niet dat die bestaat. Hoe had je dat in gedachten
En wat is er ranzig aan die vergelijking?

Gelukkig kan je zelf functies definieren in php
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas donderdag 27 oktober 2005 @ 20:34:00 #103
1972 Swetsenegger
Egocentrische Narcist
pi_31735010
Als een soort modulo ofzo
Ik zat heel ranzig te denken, maar toen ik hem hier boven uittikte vond ik het eigenlijk ook wel meevallen
pi_31736204
quote:
Op donderdag 27 oktober 2005 20:16 schreef Swetsenegger het volgende:
Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
Met andere woorden:

if valueA-valueB < 5% van valueA

want (valueA-valueB)*(valueA/100) vind ik wat ranzig
5% van valueA is niks anders dan
valueA * 0,05
  FOK!-Schrikkelbaas donderdag 27 oktober 2005 @ 21:20:14 #105
1972 Swetsenegger
Egocentrische Narcist
pi_31736615
quote:
Op donderdag 27 oktober 2005 21:07 schreef the_disheaver het volgende:

[..]

5% van valueA is niks anders dan
valueA * 0,05
Joh!

Dat is niet wat ik vraag
pi_31736812
Hee Superrembo, kom je weer meedoen met PHP Golf?

http://www.phpfreakz.nl/forum.php?forum=5&iid=721061
pi_31736824
quote:
Op donderdag 27 oktober 2005 20:16 schreef Swetsenegger het volgende:
Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
Met andere woorden:

if valueA-valueB < 5% van valueA

want (valueA-valueB)*(valueA/100) vind ik wat ranzig
if(valueA-valueB < valuaA / 20)

Ook ranzig?
  FOK!-Schrikkelbaas donderdag 27 oktober 2005 @ 21:37:42 #108
1972 Swetsenegger
Egocentrische Narcist
pi_31737206
quote:
Op donderdag 27 oktober 2005 20:34 schreef Swetsenegger het volgende:
Ik zat heel ranzig te denken, maar toen ik hem hier boven uittikte vond ik het eigenlijk ook wel meevallen
dusch...
pi_31738397
quote:
Op donderdag 27 oktober 2005 21:26 schreef Wifibro het volgende:
Hee Superrembo, kom je weer meedoen met PHP Golf?

http://www.phpfreakz.nl/forum.php?forum=5&iid=721061
Bedankt voor de tip.

En de lat ligt al op 52 tekens
(Limbo dansen, niet hoogspringen )
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas donderdag 27 oktober 2005 @ 22:20:11 #110
1972 Swetsenegger
Egocentrische Narcist
pi_31738583
Ik zal 'm maar even crossposten
quote:
Beste PHP-ers,


--[ PHP Golf
Een nieuwe editie van PHP Golf!

--[ Wat is PHP Golf?
De bedoeling is een PHP script te maken met zo min mogelijk karakters.
Dus zo min mogelijk letters, nummers, spaties, newlines en dergelijke.
Met het script moet je een doelstelling bereiken.
We gaan ervan uit dat je de recenste PHP 4.x, op het moment 4.4,
versie hebt en standaard php.ini configuratie. Tenzij anders vermeld.
(Standaard: register_globals = off)

Het script moet op UNIX-gebaseerde en Windows systemen werken.

--[ Voor wie is PHP Golf?
De competitie is voor iedereen toegankelijk.

--[ Inzendingen
Je kunt je oplossing sturen naar:

phpgolf [at] gmail.com
(Disclaimer: je e-mail zal niet worden gebruikt voor
spam of worden doorgegeven aan derden)

--[ Doelstelling
Het script moet de volgende output genereren:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXYZA
CDEFGHIJKLMNOPQRSTUVWXYZAB
DEFGHIJKLMNOPQRSTUVWXYZABC
EFGHIJKLMNOPQRSTUVWXYZABCD
FGHIJKLMNOPQRSTUVWXYZABCDE
GHIJKLMNOPQRSTUVWXYZABCDEF
HIJKLMNOPQRSTUVWXYZABCDEFG
IJKLMNOPQRSTUVWXYZABCDEFGH
JKLMNOPQRSTUVWXYZABCDEFGHI
KLMNOPQRSTUVWXYZABCDEFGHIJ
LMNOPQRSTUVWXYZABCDEFGHIJK
MNOPQRSTUVWXYZABCDEFGHIJKL
NOPQRSTUVWXYZABCDEFGHIJKLM
OPQRSTUVWXYZABCDEFGHIJKLMN
PQRSTUVWXYZABCDEFGHIJKLMNO
QRSTUVWXYZABCDEFGHIJKLMNOP
RSTUVWXYZABCDEFGHIJKLMNOPQ
STUVWXYZABCDEFGHIJKLMNOPQR
TUVWXYZABCDEFGHIJKLMNOPQRS
UVWXYZABCDEFGHIJKLMNOPQRST
VWXYZABCDEFGHIJKLMNOPQRSTU
WXYZABCDEFGHIJKLMNOPQRSTUV
XYZABCDEFGHIJKLMNOPQRSTUVW
YZABCDEFGHIJKLMNOPQRSTUVWX
ZABCDEFGHIJKLMNOPQRSTUVWXY

Nu mag jij het script programmeren en liefst zo kort mogelijk.


--[ Deadline:

De deadline is over 8 dagen.
Vrijdag 19:00 4 november 2005

-----

Post in dit topic vragen/suggesties.
GEEN OPLOSSINGEN!

Mocht je een oplossing hebben, dan mag je gerust je karakter aantal posten.
Dit om andere te stimuleren

Diegene die het minste karakters heeft gebruikt, wint!

Veel succes,

Tri Pham
  donderdag 27 oktober 2005 @ 23:12:30 #111
76312 sh4dow
ŻŻŻŻŻŻŻŻŻ
pi_31740561
Even een vraag, ik heb een tijdje een gastenboek script gebruikt met een tekstbestand. Nu heb ik zelf een nieuw gastenboek gemaakt met een mySQL database.
Graag zou ik de oude berichten uit het tekstbestand willen toevoegen aan de database, om de oude berichten niet verloren te laten gaan.

Het tekstbestand ziet er zo uit:
1
2
<?php $Bericht[] = array('Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'); ?>
<?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?>

enz, zo staan er 311 berichten in dit tekstbestand, in Arrays.
Hoe kan ik deze array nu splitten, en dan ieder bericht in een loop toevoegen aan de database?
  FOK!-Schrikkelbaas donderdag 27 oktober 2005 @ 23:14:41 #112
1972 Swetsenegger
Egocentrische Narcist
pi_31740647
quote:
Op donderdag 27 oktober 2005 23:12 schreef sh4dow het volgende:
Even een vraag, ik heb een tijdje een gastenboek script gebruikt met een tekstbestand. Nu heb ik zelf een nieuw gastenboek gemaakt met een mySQL database.
Graag zou ik de oude berichten uit het tekstbestand willen toevoegen aan de database, om de oude berichten niet verloren te laten gaan.

Het tekstbestand ziet er zo uit:
[ code verwijderd ]

enz, zo staan er 311 berichten in dit tekstbestand, in Arrays.
Hoe kan ik deze array nu splitten, en dan ieder bericht in een loop toevoegen aan de database?
staan er array's in het tekstbestand of platte tekst welke je zelf array maakt?

explode kan je arrays mee splitten: http://nl3.php.net/manual/nl/function.explode.php
  donderdag 27 oktober 2005 @ 23:19:11 #113
76312 sh4dow
ŻŻŻŻŻŻŻŻŻ
pi_31740814
Nee er staan echt arrays in het tekstbestand, zoals hierboven in het voorbeeld dus. Dat zijn de eerste 2 regels uit het tekstbestand.

Als het plaintext zou zijn, was me dat wel gelukt. Ik ben al met foreach bezig, maar ik kom er niet uit :S
pi_31742355
Include dat bestand, en je hebt een pracht van een array ($Bericht).
1
2
3
4
5
6
7
<?php
include_once('mijntekstbestandmetberichten.php');
for($i=0;$i<count($Berichten);$i++)
{
  // huidig bericht = $Bericht[$i] (array!)
}
?>
pi_31743371
Over dat golf ding, zit nu op 95.
Ik klooi verder.
pi_31754501
Ik doe niet meer mee met dat golf ding; snap er toch de balle van. Ben er gisteren even mee bezig geweest maar zo vet is mijn kennis nou ook weer niet zoals $c=$a{$b}
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 28 oktober 2005 @ 15:20:07 #117
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31755718
array met alle letters maken

tellertje tot 26 laten tellen
1 keer printen, <br> d'r achteraan.
met array_shift de A d'r afhalen zodat alles opschuift en die dan met array_push de A achteraan de array neerzetten. als de teller bij 26 is heeft ie alles gehad..

of denk ik weer te simpel?
Ik heb het godverdomme gehad met die onkunde van je!
pi_31756067
Mwah, als je dat in < 80 tekens kan ben je wel briljant :-) kzit nu op 65.
  vrijdag 28 oktober 2005 @ 15:35:03 #119
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31756211
Ben d'r nog niet mee bezig geweest. Dit was ff een brainfart over hoe ik het zou aanpakken als het geen wijdstrijdje met zo min mogelijk karakters was
als je van die array of zou kunnen komen scheelde het al een bende karakters. Als ik de ascii table d'r bij pak zie ik wel dat alle letters een opeenvolgende waarde hebben. Is daar niets mee te doen? Beginnen bij de A en steeds 1 d'r bij optellen met een loop en dat in een andere loop 26 keer doen terwijl je steeds 1 waarde hoger begint

geen idee of je browser die ascii waarde als een letter weergeeft hoor. Heb me daar nooit zo mee bezig gehouden.
Ik heb het godverdomme gehad met die onkunde van je!
pi_31757131
Doe iets met chr(65) tot en met chr(90). Ik zit nu op 67 tekens, maar het met nog minder tekens.
  vrijdag 28 oktober 2005 @ 16:06:02 #121
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31757208
kzal me d'r straks ook wel ff mee bezighouden als ik tijd heb. Kijken wat ik er van kan bakken
Ik heb het godverdomme gehad met die onkunde van je!
  FOK!-Schrikkelbaas vrijdag 28 oktober 2005 @ 16:28:44 #122
1972 Swetsenegger
Egocentrische Narcist
pi_31757861
Zoals ik op phpfreakz al zei "Met gekut met arrays ga je niet winnen denk ik". Sylvesterrrrs opmerking leek mij ook de meest bruikbare methode, je kan natuurlijk heel simpel lussen van 65 tot 90. Alleen.... hoe laat je hem de tweede keer van 66 tot 90 PLUS 65 echoën

Overigens zegt iemand op 52 karakters te zitten.
pi_31758424
quote:
Op vrijdag 28 oktober 2005 16:28 schreef Swetsenegger het volgende:
Alleen.... hoe laat je hem de tweede keer van 66 tot 90 PLUS 65 echoën
que?
quote:
Overigens zegt iemand op 52 karakters te zitten.
Doet ie goed. Ik heb wel wat beters te doen hoor.
  vrijdag 28 oktober 2005 @ 16:48:49 #124
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31758444
de A moet weer achter de Z komen op de 2e regel. enz.
Ik heb het godverdomme gehad met die onkunde van je!
pi_31760089
- edit dan maar :S -

[ Bericht 94% gewijzigd door Roonaan op 29-10-2005 11:08:42 ]
pi_31760191
quote:
Op vrijdag 28 oktober 2005 17:55 schreef Roonaan het volgende:
64 tekens

[ code verwijderd ]

Hij kan efficienter als je die nummers bij 0 kan laten starten tot 702. Alleen moeten dan de modulussen anders.
Als je de { en } weghaalt zit je al op 62 tekens

Als je dan nog <br> gebruikt ipv <br/> zit je op 61.

Als laatste nog <? gebruiken in plaats van <?php en je zit al op 58. Dan kan je ook nog de spatie tussen <? $i= weghalen, dat wordt dan <?$i= en je komt op 57.

Als je dan ook nog de ; aan het einde weghaald zit je op 56.

[ Bericht 6% gewijzigd door HuHu op 28-10-2005 18:09:10 ]
pi_31760251
Maar dan nog kom je niet aan 52 ;-)
pi_31760333
- Edit dan maar -

[ Bericht 49% gewijzigd door Roonaan op 29-10-2005 11:08:53 ]
pi_31760426
quote:
Op vrijdag 28 oktober 2005 18:08 schreef Roonaan het volgende:

[ code verwijderd ]
57.

55 als je de sluittags weghaalt.
1<?while($i++<702)echo$i%27?chr(65+($i-1)%26):'<br>';


Zo zit je op 52.
pi_31760616
Jups, tot die conclusie was ik ook gekomen. Same as yapf dus.

Maar met wat bit operations, kan het dan niet korter?

-r-
pi_31760770
[Centraal]PHP - Golf wedstrijd
Daar kunnen jullie lekker verder spelen met jullie Golf, dan blijft dit topic een beetje schoon

-edit-
Oeps, ik zie dat ik dat topic onder de naam van mn vriendin heb gepost
pi_31760863
Hmm, zo is de lol er wel een beetje af nu er complete code gepost is
Op phpfreakz wordt gevraagd geen code te posten, doe 't dan ook niet hier.

Ik zit zelf op 49.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31760954
ach, vorige keer was iedereen dol op het samenwerken.
pi_31761146
Samenwerken is ok, maar er stond volgens mij geen complete code.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas vrijdag 28 oktober 2005 @ 19:22:51 #135
1972 Swetsenegger
Egocentrische Narcist
pi_31762297
Code posten is niet echt de bedoeling eigenlijk
Overigens snap ik ';m nog niet ook

en de code is 51 karakters, geen 52

-edit- je kan niet tellen swets..
  FOK!-Schrikkelbaas vrijdag 28 oktober 2005 @ 19:47:59 #136
1972 Swetsenegger
Egocentrische Narcist
pi_31762908
quote:
Op vrijdag 28 oktober 2005 18:27 schreef ikke_ook het volgende:
[Centraal]PHP - Golf wedstrijd
Daar kunnen jullie lekker verder spelen met jullie Golf, dan blijft dit topic een beetje schoon

-edit-
Oeps, ik zie dat ik dat topic onder de naam van mn vriendin heb gepost
Waarom zou het een beetje schoon moeten blijven
Kan je erg veel van leren.
pi_31764623
Hallo,

Ben op dit moment bezig met een stukje random te genereren arrays oftwel het volgende idee dat vooral Sop heeft aangedragen.

Ik heb een paar mensen in een lijst ziten en sommige mense mogen sommige mensen kiezen en sommige niet. Nou heb ik eventjes een voorbeeld uit de hand gemaakt. Nu heb ik ieder persoon voorzien van een array met daarin de mogelijke mensen die ze kunnen kiezen. Echter krijg ik steeds errors met wat ik ook probeer..

zie code:
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
<?

$arr = array(11 => array(13, 14, 15, 16, 17),
             12 => array(13, 14, 15, 16, 17),
             13 => array(11, 12, 16, 17),
             14 => array(11, 12, 17),
             15 => array(11, 12, 16, 17),
             16 => array(11, 12, 13, 14, 15, 17),
             17 => array(11, 12, 13, 14, 15, 16));
             
foreach ($arr as $id => $narr)
{
    $tmpArr = $narr;
    
    if (isSet($remove) && is_array($remove))
    {
        foreach ($remove as $x => $verwijderkey)
        {
            foreach ($tmpArr as $xx => $value)
            {
                if ($tmpArr[$xx] == $verwijderkey)
                {
                    unset ($tmpArr[$xx]);
                }
            }
        }
    }
    
    if (is_array($tmpArr) && count($tmpArr) > 1)
    {
        $code = $tmpArr[rand(0, count($tmpArr)-1)];
    }
    else
    {
        foreach ($tmpArr as $key => $value)
        {
            $code = $value;
        }
    }
    
    $remove[] = $code;
    
    echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>';
}

var_dump($remove);

?>


denk dat ik weer te diep doorspace ennuh zou volgens mij wel 1000x beter kunnen. Iemand een idee? als je het niet snapt probeer ik het nog wel wat beter uit te leggen
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31765858
Voor het begrip is het nuttiger als je gewoon namen gebruikt in plaats van nummers om gebruikers te identificeren.

Daarnaast een keuze maken of je je variabelen in het engels of het nederlands programmeerd, tevens is er de vraag wat $narr doet.

Een aanpak die je zou kunnen kiezen is om de array to sorteren op het aantal mensen dat iemand in zijn lijstje heeft. Zoals de opzet nu is (of ik mis iets) is het zo dat er iemand over zou blijven die niemand kan kiezen?

pi_31777689
Dus je ziet het liever met de namen? maar dan blijft het principe toch gelijk?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31802558
Ik heb het nu even zo gedaan.

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

$arr = array("eric" => array("tess", "joop", "kees", "loes", "joke"),
             "marc" => array("tess", "joop", "kees", "loes", "joke"),
             "tess" => array("eric", "marc", "loes", "joke"),
             "joop" => array("eric", "marc", "joke"),
             "kees" => array("eric", "marc", "loes", "joke"),
             "loes" => array("eric", "marc", "tess", "joop", "kees", "joke"),
             "joke" => array("eric", "marc", "tess", "joop", "kees", "loes"));

foreach ($arr as $id => $tmpArr)
{
    if (isSet($remove) && is_array($remove))
    {
        foreach ($remove as $x => $verwijderkey)
        {
            foreach ($tmpArr as $xx => $value)
            {
                if ($tmpArr[$xx] == $verwijderkey)
                {
                    unset ($tmpArr[$xx]);
                }
            }
        }
    }

    if (is_array($tmpArr) && count($tmpArr) > 1)
    {
        $code = $tmpArr[rand(0, count($tmpArr)-1)];
    }
    else
    {
        foreach ($tmpArr as $key => $value)
        {
            $code = $value;
        }
    }

    $remove[] = $code;

    echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>';
}

var_dump($remove);

?>



en kreeg na veel F5en het volgende te zien

1
2
3
4
5
6
7
8
gebruiker eric heeft gebruiker joop getrokken 
gebruiker marc heeft gebruiker tess getrokken 
gebruiker tess heeft gebruiker joke getrokken 
gebruiker joop heeft gebruiker eric getrokken 
gebruiker kees heeft gebruiker marc getrokken 
gebruiker loes heeft gebruiker kees getrokken 
gebruiker joke heeft gebruiker loes getrokken 
array(7) { [0]=> string(4) "joop" [1]=> string(4) "tess" [2]=> string(4) "joke" [3]=> string(4) "eric" [4]=> string(4) "marc" [5]=> string(4) "kees" [6]=> string(4) "loes" } 


want veelal zag ik dit soort uitkomsten..

1
2
3
4
5
6
7
8
9
10
11
12
gebruiker eric heeft gebruiker joke getrokken 
gebruiker marc heeft gebruiker joop getrokken 
gebruiker tess heeft gebruiker eric getrokken 
gebruiker joop heeft gebruiker marc getrokken 
gebruiker kees heeft gebruiker loes getrokken 

Notice: Undefined offset: 1 in d:\www\usersort.php on line 29
gebruiker loes heeft gebruiker getrokken 

Notice: Undefined offset: 0 in d:\www\usersort.php on line 29
gebruiker joke heeft gebruiker getrokken 
array(7) { [0]=> string(4) "joke" [1]=> string(4) "joop" [2]=> string(4) "eric" [3]=> string(4) "marc" [4]=> string(4) "loes" [5]=> NULL [6]=> NULL } 


en nu zie je dus dat op regel 29 een error komt, oftewel de volgende regel.

1        $code = $tmpArr[rand(0, count($tmpArr)-1)];


maar ik check of de array reeds groter is dan 1 item, dan zou je toch verwachten dat dat goed gaat

en als ik de regel (28) dus boven de code voorzie van > 2 dan krijg ik steeds mindervaak een error maar alsnog soms een error in regel 29

Help me!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31803171
en als je $code = $tmpVar[array_rand($tmpVar)] doet?

also, $tmpVar is meer dan een tijdelijke var natuurlijk. Deze heeft wel degelijk een bepaalde betekenis en significante inhoudt ondanks het tijdelijke karakter. Beter om in het vervolg dan ook een variabele naam te kiezen die wat zegt over de intentie van de variabele dan haar levensduur.

-r-
pi_31803362
quote:
Op zondag 30 oktober 2005 10:03 schreef Chandler het volgende:

maar ik check of de array reeds groter is dan 1 item, dan zou je toch verwachten dat dat goed gaat

en als ik de regel (28) dus boven de code voorzie van > 2 dan krijg ik steeds mindervaak een error maar alsnog soms een error in regel 29

Help me!
Met je rand() ding ga je op zoek naar een key tussen 0 en het aantal keys. Da's leuk, maar als je als keys de getallen 1,3,5,7 overhoudt dan heb je 4 keys en een kans van 50% dat je een niet-bestaande key tussen 0 en 3 pakt.
pi_31804196
idd, heb reeds array_rand toegevoegd en dat is deels een oplossing want om de zoveel keer krijg ik alsnog een error

ipv
1
2
3
4
5
6
7
8
9
10
11
    if (is_array($tmpArr) && count($tmpArr) > 1)
    {
        $code = $tmpArr[rand(0, count($tmpArr)-1)];
    }
    else
    {
        foreach ($tmpArr as $key => $value)
        {
            $code = $value;
        }
    }


de oplossing van roonaan en een andere gebruiker

1$code = $tmpVar[array_rand($tmpVar)];


maar dan nog krijg ik wel eens een error op lijn 27 oftewel bovenstaande code maar dat zal komen omdat ik dan een lege array heb...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31804488
1
2
3
4
5
6
7
8
9
10
11
    if (is_array($tmpArr) && count($tmpArr) > 1)
    {
        $code = $tmpArr[rand(0, count($tmpArr)-1)];
    }
    else
    {
        foreach ($tmpArr as $key => $value)
        {
            $code = $value;
        }
    }


Dat gaat idd mis bij een lege array. Oplossing is simpel, zorgen dat je niets doet als de array leeg is.

1
2
3
4
5
6
7
8
9
    if (count($tmpArr) > 0)
    {
        $code = $tmpArr[array_rand($tmpArr)];
    }
    else
    {
        echo 'Geen keuze beschikbaar voor '.$id.'<br>';
        break;
    }
pi_31805513
True, ik denk dat ik maar ff een routine ga maken dat wanneer alles goed is de gebruiker door gaat en anders overnieuw moet kiezen (automatisch natuurlijk )
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31805554
Maar goed, ik zit nu met een andere test... weer zelf bedacht...

Ga nu het idee omdraaien, wil nu inplaats van de wel mogelijkheden in een array te zetten de niet mogelijkheden in een array zetten

Dus ga weer hard aan het coden want ben niet zo ziek meer dus heb weer wat hersens beschikbaar...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31807210
Hier is de volgende.

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

$arr = array("eric" => array("eric", "marc"),
             "marc" => array("marc", "eric"),
             "tess" => array("tess", "joop", "kees"),
             "joop" => array("joop", "tess", "kees", "loes"),
             "kees" => array("kees", "tess", "joop"),
             "loes" => array("loes"),
             "joke" => array("joke"));

// build a second list.
foreach ($arr as $name => $null)
{
    $nArr[] = $name;
}

foreach ($arr as $id => $userRemove)
{
    $userChoose = $nArr;
    
    // verwijder mensen uit lijst :)
    foreach ($userRemove as $xid => $name)
    {
        foreach ($userChoose as $userid => $username)
        {
            if (isSet($userRemove[$userid]) && $userRemove[$userid] == $name)
            {
                unset($userChoose[$userid]);
            }
        }
    }

    // verwijder reeds geselecteerde mensen uit lijst :)
    if (isSet($userSelected) && is_array($userSelected))
    {
        foreach ($userSelected as $xxid => $name)
        {
            foreach ($userChoose as $uID => $tmp)
            {
                if (isSet($userChoose[$uID]) && $userChoose[$uID] == $name)
                {
                    unset($userChoose[$uID]);
                }
            }
        }
    }
    

    $code = $userChoose[array_rand($userChoose)];

    $userSelected[$id] = $code;

    echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>';


}

var_dump($userSelected);

?>


echter zit het blijkbaar niet goed in elkaar want krijg bij iedere keuze fouten te zien en snap niet waar de fouten zitten?

OMG ben er nu al ruim een uur mee bezig geweest om te bugtesten iemand een idee?

oftwel uitkomst

1
2
3
4
5
6
7
8
9
10
gebruiker eric heeft gebruiker tess getrokken 
gebruiker marc heeft gebruiker kees getrokken 
gebruiker tess heeft gebruiker loes getrokken 
gebruiker joop heeft gebruiker joke getrokken 
gebruiker kees heeft gebruiker joop getrokken 
gebruiker loes heeft gebruiker marc getrokken 

Notice: Undefined index: in d:\www\usersort.php on line 49
gebruiker joke heeft gebruiker getrokken 
array(7) { ["eric"]=> string(4) "tess" ["marc"]=> string(4) "kees" ["tess"]=> string(4) "loes" ["joop"]=> string(4) "joke" ["kees"]=> string(4) "joop" ["loes"]=> string(4) "marc" ["joke"]=> NULL } 


The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31814231
Wat krijg je als je

$code = $userChoose[array_rand($userChoose)];

$userSelected[$id] = $code;

IN
$userSelected[$id] = $userChoose[array_rand($userChoose)];

veranderd?
pi_31814665
quote:
Op zondag 30 oktober 2005 17:32 schreef Darkomen het volgende:
Wat krijg je als je

$code = $userChoose[array_rand($userChoose)];

$userSelected[$id] = $code;

IN
$userSelected[$id] = $userChoose[array_rand($userChoose)];

veranderd?
Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderop
pi_31824906
Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

-r-
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:14:48 #151
1972 Swetsenegger
Egocentrische Narcist
pi_31825642
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0
terug wanneer ik geen waarde invul?
pi_31825669
quote:
Op zondag 30 oktober 2005 22:52 schreef Roonaan het volgende:
Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

-r-
Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.
pi_31825796
quote:
Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0
terug wanneer ik geen waarde invul?
Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:28:11 #154
1972 Swetsenegger
Egocentrische Narcist
pi_31826068
quote:
Op zondag 30 oktober 2005 23:19 schreef Light het volgende:

[..]

Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?


Op welke versie heb jij het geprobeerd?

-edit- opgelost. in plaats van niets invullen gewoon NULL invullen

[ Bericht 10% gewijzigd door Swetsenegger op 30-10-2005 23:35:22 ]
pi_31826273
quote:
Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0
terug wanneer ik geen waarde invul?
Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.
quote:
Weird behaviour
1. You can define a varchar/char field 'auto_increment'.
2. SELECT 'A' = 'a' gets you true.
3. Int(10) is the same as int(1) eventhough the manual says differently.
4. Tablenames are treated case-sensitive on *n?x systems, not on windows.
5. Change a piece of a table definition and mysql creates a temporary copy of the table, very nice if you have a 6GB table occupying a 10GB tablespace... (yes, the change will fail)
6. Adding indices result in a similar temporary copy.
7. What does zerofill do to a integer field? A database is meant to store data, not to format it while storing.
8. When I define a char(32) (md5-strings anyone) field, I really don't mean varchar(32) (MySQL automatically changes all char(X >4) to varchar(X)).
9. This is correct according to mysql: SELECT a, b, count(c) FROM d GROUP BY a; what will MySQL do with the b?
10. If you update a record and set it to the same value, mysql'll define that as unaffected. Even if it does change a timestamp field.

Bugs
1. Insert a NULL value in a NOT NULL field and the query gets executed. In short, you can't force NOT NULL...
2. Under high loads MySQL will restart itself occasionally. When a child doesn't die fast enough "socket already in use"-error occurs.
3. Replication doesn't work that well.
4. MySQL will always try to insert a date into a date field, even if you supply an empty or bogus string (it'll insert 0000-00-00 then).
5. When underflowing or overflowing a integer field, mysql will insert the largest or smallest possible value instead.
6. Long texts are chopped to the correct size, not denied.
7. MySQL will also insert 0 into a numeric field if you supply an empty or bogus string.
8. Close a connection and a long query still runs on... The only way to kill it is via the (mysql)admin
9. Connections with a timeout? Very nice when you need to do a lot of calculations on your data or a query lasts very long. "Lost connection to MySQL server during query"
10. You can insert the same value twice in a ENUM-field
Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:42:06 #156
1972 Swetsenegger
Egocentrische Narcist
pi_31826452
quote:
Op zondag 30 oktober 2005 23:35 schreef SuperRembo het volgende:

[..]

Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.
[..]

Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.
Ja die ken ik al van www.yapf.net
Maar er staat alleen wat over NULL invoeren in een NOT NULL kolom.
In mijn geval vul ik een lege string in, dus niets en daar maakt mysql 0 van.

Indien het veld in mijn form nu leeg is, vul ik dus maar NULL in. dat gaat wel goed
pi_31826505
quote:
Op zondag 30 oktober 2005 23:28 schreef Swetsenegger het volgende:

[..]

[afbeelding]

Op welke versie heb jij het geprobeerd?

-edit- opgelost. in plaats van niets invullen gewoon NULL invullen
Ik heb het geprobeerd op mysql 4.0.25 die ik hier lokaal had draaien. (Had, ik ben bezig met een upgrade nu.)

En ik deed een insert into tabel (kolom1) values (1); waarbij kolom2 (die dus niet wordt genoemd) als default null was gedefinieerd. Dan komt er ook een waarde null in te staan.
pi_31826537
quote:
Op zondag 30 oktober 2005 23:42 schreef Swetsenegger het volgende:

[..]

Ja die ken ik al van www.yapf.net
Maar er staat alleen wat over NULL invoeren in een NOT NULL kolom.
In mijn geval vul ik een lege string in, dus niets en daar maakt mysql 0 van.

Indien het veld in mijn form nu leeg is, vul ik dus maar NULL in. dat gaat wel goed
Een lege string is niet gelijk aan NULL.
pi_31826648
Een lege string is zeker ook geen decimal.

(Er zit een typo in articelcode)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:51:50 #160
1972 Swetsenegger
Egocentrische Narcist
pi_31826694
quote:
Op zondag 30 oktober 2005 23:45 schreef Light het volgende:

[..]

Een lege string is niet gelijk aan NULL.
Daar was ik achter nu
Dit geeft immers geen NULL maar 0 als $_POST['second_price'] leeg is.

INSERT INTO table
(id,second_price)
VALUES(0,'".$_POST['second_price']."')
pi_31826971
quote:
Op zondag 30 oktober 2005 23:50 schreef SuperRembo het volgende:
Een lege string is zeker ook geen decimal.

(Er zit een typo in articelcode)
Bij MySQL is een hoop mogelijk, gezien wat ik zo lees.
pi_31828109
Hmm.. Men neme een simpele tabel "tabel" met twee kolommen "col1" en "col2". Col2 is gedefinieerd als INT en mag NULL bevatten. Col1 is gewoon een ID. (Het gaat nergens over, maar ter illustratie.)
Dan doen we "Insert into tabel (col1, col2) values (1, '')" waarbij dus een lege string naar col2 gezet wordt. Maar dat was een int. Voor MySQL een reden om er dan maar 0 van te maken.

Overigens gebeurt hetzelfde als ik een niet-lege string gebruik. De conversie lijkt hetzelfde te zijn als de (int) van php.
pi_31829745
quote:
Op zondag 30 oktober 2005 17:32 schreef Darkomen het volgende:
Wat krijg je als je

$code = $userChoose[array_rand($userChoose)];

$userSelected[$id] = $code;

IN
$userSelected[$id] = $userChoose[array_rand($userChoose)];

veranderd?
Een verdwijnende variabel, die ik idd niet bij het echo statement kan gebruiken
quote:
Op zondag 30 oktober 2005 17:47 schreef Light het volgende:
Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderop
Yep, dit is ff makkelijk en voor mij overzichtelijk...
quote:
Op zondag 30 oktober 2005 22:52 schreef Roïż½aïż½ het volgende:
Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

-r-
Ok, ik vond dit al een uitdaging, en nu dus helemaal... hoe in vredus naam kan ik dit snel doen? als het MySQL was dan was dit simpel, en kon ik de query aanpassen maar werken met array's is niet mijn sterkste vak..

Heb je tips? hoef geen code! zolang je me maar in de goede richting wijst!
quote:
Op zondag 30 oktober 2005 23:15 schreef Light het volgende:
Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.
hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvinden heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...

Tips, verwijzingen etc zijn van harte welkom!.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31829785
Wat wil je nou eigenlijk met dat script? Als het gewoon lootjes trekken was, dan zou iedereen kunnen kiezen uit iedereen behalve zichzelf. Als input zou je dan alleen een lijst namen hebben.
Maar bij jou begin je met een array waarbij sommige mensen veel meer keus hebben dan anderen
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31829872
SuperRembo; dat zou inderdaad een 'gewoon' lootjes trekken script zijn maar dat is hier niet het geval. In mijn script kun je ook kiezen dat mensen hun vriend/vriendin/vader/moeder en de keuze van vorig jaar niet mag kiezen (alleeen vorig jaar!).. dus dan wordt de sub array iets groter .

Het laatste script is dus een niet wat jij denkt het is net andersom, deze mensen mogen dus pertinent NIET gekozen worden

vb
1
2
3
$arr = array("eric" => array("eric", "marc"),
             "marc" => array("marc", "eric"),
             "tess" => array("tess", "joop", "kees"),


eric mag dus geen marc of eric trekken ennuh marc mag ook geen marc of eric trekken en als laatste voorbeeld mag tess geen tess/joop of kees trekken.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31829968
quote:
Op maandag 31 oktober 2005 07:42 schreef Chandler het volgende:

hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvinden heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...
Bij lootjes trekken heb je altijd het risico dat de laatste geen keuze meer heeft (of alleen zichzelf kan kiezen). Eigenlijk heb je die keuze altijd, maar je houdt er bij het programmeren al rekening mee dat iemand niet zichzelf mag kunnen kiezen. In je laatste voorbeeld was joke, die als laatste mag kiezen, nog niet gekozen. Enige overgebleven keuze is dus joke, maar die mag zichzelf niet kiezen, dus geen keuze. Oplossing is simpel de hele trekking nogmaals doen.
pi_31830090
klopt dat ben ik met je eens, maar deze code genereerd nogal vaak veel errors.. test het maar eens
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 31 oktober 2005 @ 08:39:13 #168
1972 Swetsenegger
Egocentrische Narcist
pi_31830143
quote:
Op maandag 31 oktober 2005 01:04 schreef Light het volgende:
Hmm.. Men neme een simpele tabel "tabel" met twee kolommen "col1" en "col2". Col2 is gedefinieerd als INT en mag NULL bevatten. Col1 is gewoon een ID. (Het gaat nergens over, maar ter illustratie.)
Dan doen we "Insert into tabel (col1, col2) values (1, '')" waarbij dus een lege string naar col2 gezet wordt. Maar dat was een int. Voor MySQL een reden om er dan maar 0 van te maken.

Overigens gebeurt hetzelfde als ik een niet-lege string gebruik. De conversie lijkt hetzelfde te zijn als de (int) van php.
Mjah,

Laten we zeggen dat ik verwacht dat wanneer ik een lege string naar een decimal stuur met als default value NULL dat ik dan ook NULL terug krijg

Het was weer een wijze les
pi_31831233
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
79
80
81
82
83
84
85
86
87
88
89
90
91
<?

  $vorigeTrekking = array(
               "eric" => array("eric", "marc"),
               "marc" => array("marc", "eric"),
               "tess" => array("tess", "joop", "kees"),
               "joop" => array("joop", "tess", "kees", "loes"),
               "kees" => array("kees", "tess", "joop"),
               "loes" => array("loes"),
               "joke" => array("joke")
               );
             
  $alleDeelnemers = array_keys($vorigeTrekking);
  
  // Wie mag wie wél loten
  $magLoten = array();
  foreach($alleDeelnemers as $naam) {
    $magLoten[$naam] = array_diff($alleDeelnemers, $vorigeTrekking[$naam]);
  }
  
  // Wie mag door wie geloot worden
  $magGelootWordenDoor = array();
  foreach($magLoten as $naam => $loten) {
    foreach($loten as $lot)
      $magGelootWordenDoor[$lot][] = $naam;
  }

  // Trekking doen. ob_start etc is om de data van
  // mislukte trekkingen te verbergen
  $i = 1;
  ob_start();
  $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor);
  while(!is_array($loting) && $i < 10) {
    ob_end_clean();
    echo '<br/>Trekking '.$i++.' mislukt: '.$loting; flush();
    ob_start();
    $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor);
  }
  ob_end_flush();  
  
  // Loting functie
  function loting($alleDeelnemers, $magLoten, $magGelootWordenDoor) {
    // Alle loten zijn getrokken
    if(count($alleDeelnemers) < 1) {
      return array();
    }
    // Kies een van de deelnemers die als volgende een lootje mag trekken
    shuffle($alleDeelnemers); 
    $deelnemer = array_pop($alleDeelnemers);
    
    // Geef de naam weer
    echo '<br/><b>'.$deelnemer.'</b>';
    
    // Tijdelijke arrays construeren om de intersectie te kunnen maken tussen
    // de loten die iemand mag trekken en de nog beschikbare loten
    $dnMagLoten = $magLoten[$deelnemer];
    $dnKanLoten = array_keys($magGelootWordenDoor);
    $dnLoten    = array_intersect($dnMagLoten, $dnKanLoten);
    
    if(count($dnLoten) < 1) {
      return '<br/>Loting mislukt.';
    } else {
      // Volgende drie regels zijn debug informatie
      echo '<br/>Mag: '.implode(',',$dnMagLoten);
      echo '<br/>Kan: '.implode(',',$dnKanLoten);
      echo '<br/>Som: '.implode(',',$dnLoten);
      // Trek een van de loten
      $getrokken = $dnLoten[array_rand($dnLoten)];
      // Geef een echo welk lot is getrokken
      echo '<br/><b>'.$deelnemer.' trekt '.$getrokken.'</b><br/>';
    }
    
    // De deelnemer kan niet nog een keer loten
    unset($magLoten[$deelnemer]);
    // Het lot kan ook niet meer getrokken worden
    unset($magGelootWordenDoor[$getrokken]);
    
    // Recursief andere mensen laten trekken
    $loting = loting($alleDeelnemers,$magLoten, $magGelootWordenDoor);
    
    // Kijken of de recursieve loting goed verlopen is
    if(is_array($loting)) {
      $resultaat = array_merge(array($deelnemer => $getrokken),$loting);
      return $resultaat;
    } else {
      return $loting;
    }
  }
  

?>
pi_31832338
quote:
Op maandag 31 oktober 2005 08:39 schreef Swetsenegger het volgende:

[..]

Mjah,

Laten we zeggen dat ik verwacht dat wanneer ik een lege string naar een decimal stuur met als default value NULL dat ik dan ook NULL terug krijg

Het was weer een wijze les
Afgezien van dit belachelijke gedrag van MySQL ( ); waarom probeerde je een string naar een decimal te sturen?
pi_31833293
Aangezien fok en phpfreakz toch aan het crossbreeden is. Mag ik jullie commentaar vragen op http://www.phpfreakz.nl/library.php?sid=20709 ?

-r-
pi_31834936
quote:
Op maandag 31 oktober 2005 09:54 schreef Roïż½aïż½ het volgende:
@Roïż½aïż½

ik ga je code inspecteren, zal wel heel veel dingen niet begrijpen maar er mee stoeien zorgt voor kennis
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 31 oktober 2005 @ 12:56:08 #173
1972 Swetsenegger
Egocentrische Narcist
pi_31835236
quote:
Op maandag 31 oktober 2005 10:50 schreef JeRa het volgende:

[..]

Afgezien van dit belachelijke gedrag van MySQL ( ); waarom probeerde je een string naar een decimal te sturen?
Nou, ik was in de veronderstelling dat je bij een INSERT statement alle kolommen moest benoemen
dus stuurde ik VALUES(0,'".$_POST['second_price']."') naar de database.

Nu stuur ik gewoon NULL, en vanavond haal ik 'm gewoon helemaal uit de INSERT statement
pi_31836566
@Roonaan: ik ben nu al een tijd bezig je functie te ontleden maar heb een vraag en kan daar niet een begrijpelijk antwoord op vinden op www.php.net

waar staan de volgende functie voor!

array_intersect ? want uit de uitleg en voorbeeld kom ik niet

-edit-

en hoe is het mogelijk om het data uit een array te verwijderen middels een andere array..

ik probeer het nu zo te doen maar dat werkt niet echt

1
2
3
4
foreach ($excludeUsers as $id => $value)
        {
            unSet($includeUsers[$id]);
        }



[ Bericht 49% gewijzigd door Chandler op 31-10-2005 14:02:12 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31836913
Ik heb een probleem met cookies die moeten worden geplaatst en uitgelezen aan de hand van de GET waarde die aan een de pagina wordt meegegeven.

1
2
3
4
5
6
7
8
9
<?php
PHP
if (!isset($_COOKIE[$_GET['link']]))  
{
echo
"blabla";
setcookie("$_GET[link]", "true", strtotime("tomorrow 0"), "/");
}

?>


Het cookie wordt wel geplaatst (met de juiste waarde)
Als ik nu nog een keer dezelfde GET waarde aan de pagina mee geef dan zou er geen "blabla" op mijn scherm mogen verschijnen.
Dit gebeurt wel, dus het cookie wordt toch niet goed uitgelezen.

Heeft iemand een idee waarom dit fout gaat?
Ja lekker!
pi_31837436
quote:
Op maandag 31 oktober 2005 13:56 schreef Chandler het volgende:
@Roonaan: ik ben nu al een tijd bezig je functie te ontleden maar heb een vraag en kan daar niet een begrijpelijk antwoord op vinden op www.php.net

waar staan de volgende functie voor!

array_intersect ? want uit de uitleg en voorbeeld kom ik niet
array_intersect geeft alleen de waarde terug die in beide arrays voorkomen.

-r-
pi_31837710
ok, dan heb ik weer wat geleerd; jammer dat ze dat niet in het nederlands op php.net hebben staan maaruh goed weer wat geleerd
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31838281
@Roonaan: Het volgende is mijn uitkomst, toch wil ik je nog bedanken voor het plaatsen van een door jou geschreven code; je hebt me namelijk veel inzicht gegeven en laten zien dat ik nog heel veel moet leren.

Graag zou ik comments willen zien op het stukje dat ik heb geschreven.

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
79
80
81
82
83
84
<?

$vorigeTrekking = array("eric" => array("eric", "marc"),
                        "marc" => array("marc", "eric"),
                        "tess" => array("tess", "joop", "kees"),
                        "joop" => array("joop", "tess", "kees", "loes"),
                        "kees" => array("kees", "tess", "joop"),
                        "loes" => array("loes"),
                        "joke" => array("joke"));

$alleDeelnemers = array_keys($vorigeTrekking);
$lootenSelect   = array();
$includeUsers   = array();
$over           = array();

echo '<pre>';
for ($x = 0; $x < 100; $x++)
{
    $doBreak = true;
    foreach ($vorigeTrekking as $kiesUser => $excludeUsers)
    {
        // bereken users die niet mag kiezen
        
        $includeUsers = $alleDeelnemers;
        $over         = $alleDeelnemers;
        
        foreach ($excludeUsers as $id => $value)
        {
            foreach ($over as $fID => $fName)
            {
                if ($fName == $value)
                {
                    unSet($over[$fID]);
                }
            }
        }
        echo '<br>';

        foreach ($lootenSelect as $id => $value)
        {
            foreach ($over as $fID => $fName)
            {
                if ($fName == $value)
                {
                    unSet($over[$fID]);
                }
            }
        }
        
        echo 'user            : ' . $kiesUser . "<br /><br /><br />";
        echo 'mag niet kiezen : ' . implode(", ", $excludeUsers) . "<br />";
        echo 'mag wel kiezen  : ' . implode(", ", $includeUsers) . "<br />";
        echo 'reeds gekozen   : ' . implode(", ", $lootenSelect) . "<br />";
        echo 'blijft over     : ' . implode(", ", $over) . "<br />";
        
        if (count($over) > 0)
        {
            $rnd = $alleDeelnemers[array_rand($over)];
            echo 'random          : ' . $rnd . "<br>";
        
            $lootenSelect[$kiesUser] = $rnd;
            echo '<hr>';
        }
        else
        {
            echo 'random          : geen mogelijkheid meer over, start over';
            $doBreak = false;
        }
    }

    if ($doBreak == true)
    {
        break;
    }
}

echo '</pre>';

echo 'selected users';
echo '<pre>';
var_dump($lootenSelect);
echo '</pre>';

?>


het idee is volgens mij het zelfde als die van jou maar dan met wat minder moelijke onderdelen

The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31838954
Commentaar: je gebruikt nog steeds engelse en nederlandse variabelenamen door elkaar. Je naamgeving is erg slordig. Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.

-r-
pi_31839037
Okey... de variabelbenamingen kunnen beter, en zekers als je NL/ENG bedoelt maar daar heb ik helaas wel vaker last van, zal me ooit (spoedig) eens een vaste methode moeten aanleren.. en waarom denk je dat een recursive aanpak beter is? zou je dat eens kunnen uitleggen?

Heb je trouwens de code getest? hij doe't echt tis niet te geloven hehe..
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31840094
Recursief? Omdat als je het IRL zou doen het in principe ook een recursieve happening is :-) Meer dan een foreach. Zakdoekje leggen is wel weer loop-based daarentegen.

Getest? Gewoon extra debug lines laten outputten en vervolgens een peer keer draaien.

Die ob_start/ob_end_clean/ob_end_flush zat er pas heel laat in.

-r-
pi_31840935
quote:
Op maandag 31 oktober 2005 14:09 schreef Pronk het volgende:
Ik heb een probleem met cookies die moeten worden geplaatst en uitgelezen aan de hand van de GET waarde die aan een de pagina wordt meegegeven.
[ code verwijderd ]

Het cookie wordt wel geplaatst (met de juiste waarde)
Als ik nu nog een keer dezelfde GET waarde aan de pagina mee geef dan zou er geen "blabla" op mijn scherm mogen verschijnen.
Dit gebeurt wel, dus het cookie wordt toch niet goed uitgelezen.

Heeft iemand een idee waarom dit fout gaat?
Ik heb het opgelost! Voor de nieuwsgierigen, er kwam een "." voor in de meegestuurde GET waarde. Het cookie lijkt onmogelijk uit te lezen door die punt.
Ja lekker!
pi_31842066
@Roonaan; je zult ongetwijfeld gelijk hebben (ps ik reageer later op email )

-edit-

zelf gefixt

[ Bericht 65% gewijzigd door Chandler op 31-10-2005 17:25:29 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31843202
ps.

Ik heb net Wamp geinstalleerd (de laatste versie, php,mysql,apache etc) nu krijg ik echter steeds fout meldingen bij dit soort dingen.

echo parseTemplate(loadTemplate("./template.tpl"));

dat wil het nu zien als dit

$tpl = loadTemplate("./template.tpl");
echo parseTemplate($tpl);

maar dat wil ik dus weer niet, want het 1e voorbeeld is toch correct coding? en waar kan ik die setting in php.ini vinden cq veranderen?

Tnx
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31844610
quote:
Op maandag 31 oktober 2005 15:23 schreef Roïż½aïż½ het volgende:
Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.
Zolang PHP nog steeds crasht als je een recursieve functie op wat grotere datasets uitvoert (stack overflow) wijk ik toch uit naar andere talen om een aanpak te testen
pi_31890938
Ik heb een fotoalbum (deels zelf gemaakt / deels gedownload)
en deze geeft op de thumbnail pagina (soms, afhankelijk van het geladen album) de volgende notices:

Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 51

Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 53


Regel 49 t/m 59 zijn de volgende regels:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

$NextDir
= "klein.php?dir=".$DirArray[$DirIndex + 1];
$PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1];
$NextDirNam = $DirArray[($DirIndex + 1)];
$PrevDirNam = $DirArray[($DirIndex - 1)];
if (
$DirIndex == 0) {
$PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)];
$PrevDirNam = $DirArray[(Count($DirArray) - 1)];
}
if ((
$DirIndex + 1) &gt; (Count($DirArray) - 1)) {
$NextDir = "klein.php?dir=".$DirArray[0];
$NextDirNam = $DirArray[0];

?>

Hier moet het dus ergens fout gaan, ziet iemand misschien wat er mis gaat? Hieronder staat de volledige code van de pagina: (deze pagina van het fotoalbum leest een directory uit en maakt thumbnails)


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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
<HTML> 
<HEAD> 
<TITLE>Fotoalbum</TITLE> 
</HEAD> 
<BODY TEXT='#000000' LINK='#000000' VLINK='#000000' ALINK='#000000'> 

<TABLE WIDTH='800' BORDER='1' bordercolor='#FFFFFF' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> 
<TR> 
<TD bordercolor='#000000' bgcolor='#CCCCCC'><CENTER><STRONG>Foto overzicht: <? echo"$_GET[dir]"; ?></STRONG></CENTER></td> 
</TR> 
</TABLE> 

<? 
function getDirList ($dirName) { 
static $result_array=array(); 
$d = dir($dirName); 
while($entry = $d->read()) { 
if ($entry != "." && $entry != "..") { 
if (is_dir($dirName."/".$entry)) { 
array_push($result_array,$entry); 



$d->close(); 
sort($result_array); 
return $result_array; 

function getDirContents ($dirName) { 
static $result_array=array(); 
$d = dir($dirName); 
while($entry = $d->read()) { 
if ($entry != "." && $entry != "..") { 
if (!is_dir($dirName."/".$entry)) { 
str_replace(" ", "[spc]",(str_replace("&", "[amp]",$entry))); 
array_push($result_array,$entry); 



$d->close(); 
sort($result_array); 
return $result_array; 

$DirArray = getDirList("./"); 
for($i=0; $i < count($DirArray); $i++) { 
if($_GET['dir']==$DirArray[$i]) { 
$DirIndex = $i; 


$NextDir = "klein.php?dir=".$DirArray[$DirIndex + 1]; 
$PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; 
$NextDirNam = $DirArray[($DirIndex + 1)]; 
$PrevDirNam = $DirArray[($DirIndex - 1)]; 
if ($DirIndex == 0) { 
$PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)]; 
$PrevDirNam = $DirArray[(Count($DirArray) - 1)]; 

if (($DirIndex + 1) > (Count($DirArray) - 1)) { 
$NextDir = "klein.php?dir=".$DirArray[0]; 
$NextDirNam = $DirArray[0]; 

?> 

<TABLE WIDTH='800' BORDER='0' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> 
<tr> 
<td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$PrevDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$PrevDirNam);?></td></tr></table><td> 
<td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='index.php';" valign='top' align="center" bordercolor='#000000'>Terug naar het album overzicht</td></tr></table><td> 
<td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$NextDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$NextDirNam);?></td></tr></table><td> 
</tr> 
</TABLE> 

<table width="800" border='0' cellspacing='0' cellpadding='0' align="center"><tr> 

<? 
$Column = 1; 
$DirName = $DirArray[$DirIndex]; 
$CurrentDir = "./".$DirName; 
$DirContents = getDirContents($CurrentDir); 
for($i=0; $i < count($DirContents); $i++) { 
echo "<td height='140' width='20%'><table width='100%' height='100%' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td height='100%' style='CURSOR: hand' onMouseover=\"this.bgColor='#CCCCCC'\" onMouseout=\"this.bgColor='#FFFFFF'\" onclick=\"window.location='groot.php?dir=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirName)))."&image=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirContents[$i])))."&index=".$i."';\" valign='top' align='center' bordercolor='#000000'><img vspace='10' width='125' border='0' src='".$CurrentDir."/".$DirContents[$i]."'></td></tr></table></td>"; 
if($Column==5) { 
$Column = 0;  
echo "</tr>"; 

$Column++; 

if($Column != 0) { 
for($i=$Column; $i<8;$i++){ 
echo "<td>"; 


echo "</table>"; 
?> 

</BODY></HTML> 
?> 


Het script werkt overigens gewoon goed, ik wilde alleen alle notices wegwerken.
En deze krijg ik maar niet weg!
Ja lekker!
pi_31891522
Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31892524
quote:
Op woensdag 2 november 2005 11:19 schreef SuperRembo het volgende:
Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch.
Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?
Ja lekker!
pi_31892939
quote:
Op woensdag 2 november 2005 11:57 schreef Pronk het volgende:

[..]

Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?
Door bv dit te doen:
1
2
3
if ($DirIndex > 0) {
    $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1];
}

Er zijn natuurlijk nettere oplossingen te bedenken omdat je dit meerdere keren moet doen, maar dit is één manier iig

[ Bericht 3% gewijzigd door JeRa op 02-11-2005 12:24:07 ]
pi_31893470
Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
Ja lekker!
  woensdag 2 november 2005 @ 19:59:44 #191
76312 sh4dow
ŻŻŻŻŻŻŻŻŻ
pi_31906806
Om nog even terug te komen op m'n vraag.

Ik heb een .txt bestand met gastenboek berichten van een oud script. Nu heb ik een nieuw gastenboek met MySQL. Nu wil ik de oude berichten uit het txt bestand overzetten naar de MySQL database.

Hier een stukje van het data.txt bestand:

1
2
<?php $Bericht[] = array('Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'); ?>
<?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?>


Hoe krijg ik deze arrays nu in de database? Ik ben al een paar dagen bezig geweest, maar ik kom er echt niet uit.
pi_31907371
heb je een database met een table messages aangemaakt?

Open het bestand data.txt.
Zet onderaan het bestand de volgende code :
1
2
3
4
5
6
7
8
<?php
for($i=0;$i<count($Bericht);$i++){
   $query = "INSERT INTO messages (name,email,bla,woonplaats,date,message) 
            VALUES ('".$Bericht[$i][0]."','".$Bericht[$i][1]."','".$Bericht[$i][2]."',
            '".$Bericht[$i][3]."','".$Bericht[$i][4]."','".$Bericht[$i][5]."')";
   mysql_query($query)or die(mysql_error());
}
?>

Verander de bestandsnaam in data.php
Zet hem in een directory waarvanuit je php bestanden kunt uitvoeren
Roep data.php aan in je browser.

Lijkt me niet zo moeilijk toch?

[ Bericht 10% gewijzigd door ikke_ook op 02-11-2005 20:28:28 ]
  FOK!-Schrikkelbaas woensdag 2 november 2005 @ 20:20:18 #193
1972 Swetsenegger
Egocentrische Narcist
pi_31907551
Eerst laadt je gewoon de txt gewoon in een text editor en met de replace functie strip je <?php $Bericht[] = array( en ); ?>
Dan hou je dus
1
2
'Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'
'Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'

over.
Ik ga er van uit dat elk bericht volledig op 1 regel staat? of staan er in 'berichtje' ook enters?

Even van het eerste uitgaand:
http://nl3.php.net/manual/nl/function.file.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$array
=file(berichten.txt);

//Hiermee zet hij je txt file in een array, waarbij elke regel een element is.

foreach ($array as $line){
//Hiermee stap je door de array heen

$line=str_replace(''','',$line);
//hiermee haal je de '
weg

$stuk
=explode(',',$line);
//hiermee verdeel je de regel in losse elementen

$query="INSERT INTO database
(id,naam,email,iets,woonplaats,datum,bericht)
VALUES(0,'"
.$stuk[0]."','".$stuk[1]."','".$stuk[2]."','".$stuk[3]."','".$stuk[4]."','".$stuk[5]."')";
mysql_query($query);
// naar database schrijven

}
?>
  FOK!-Schrikkelbaas woensdag 2 november 2005 @ 20:21:07 #194
1972 Swetsenegger
Egocentrische Narcist
pi_31907581
Die van ikke ook is een stuk slimmer
  woensdag 2 november 2005 @ 20:31:39 #195
76312 sh4dow
ŻŻŻŻŻŻŻŻŻ
pi_31908012
Ja ik heb de DB al klaar, ik ga nu even proberen die data.txt te includen en dan het script van ikke_ook te draaien.

Er zitten wel <BR> tags in het bestand
pi_31908215
in welk bestand zitten <br>'s? en wat bedoel je met includen??Heb je mijn beschrijving wel gelezen?daar hoef je niks te includen hoor..
  woensdag 2 november 2005 @ 20:40:05 #197
76312 sh4dow
ŻŻŻŻŻŻŻŻŻ
pi_31908380
in data.txt zitten wat <BR>'s in de 'berichtje' stukjes.

ik heb data.txt gerenamed naar data.php en deze include ik nu in een nieuw php bestand met jou code.
pi_31908630
Ok, dat kan ook idd, maar die <br> maakt niet uit hoor...die kun je toch ook gewoon in de database zetten?
  woensdag 2 november 2005 @ 20:51:08 #199
76312 sh4dow
ŻŻŻŻŻŻŻŻŻ
pi_31908812
Ja het is al gelukt met jou script alles komt netjes in de DB te staan nu, die <br>'s geven idd geen probleem, maar Swetsenegger had het daarover.

Heel erg bedankt!
pi_31908882
quote:
Op woensdag 2 november 2005 12:37 schreef Pronk het volgende:
Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
Voor $NextDir moet je een zelfde soort controle inbouwen (voor als je aan het eind van de lijst bent).

En als $PrevDir of $NextDir leeg zijn, dan moet je de links naar het volgende of vorige album niet tonen.

(Waarom gebruik je javascript en window.location en niet gewoon een <a> link?)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')