abonnement Unibet Coolblue Bitvavo
pi_31124547
quote:
Op zondag 2 oktober 2005 20:21 schreef Swetsenegger het volgende:

[..]


Met uitleg graag
[ code verwijderd ]

++$u%2
Hier kijk je in ieder geval of iets even is. het 'iets' ontgaat me alleen.
Zoja, dan vervang je door $0&~" " dus het karakter ga je AND'en met tilde spatie
Zo nee, dan vervang je door $0|" " dus het karakter ga je orren met spatie.
Een tilde is een bit inverse / NOT-operator. 1011 wordt dus 0100.

++$u wordt 1, 2, 3, 4 en met % 2 wordt dat dus 1, 0, 1, 0 omdat % een modulus-operator is
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 20:30:07 #103
1972 Swetsenegger
Egocentrische Narcist
pi_31124595
quote:
Op zondag 2 oktober 2005 20:28 schreef JeRa het volgende:

[..]

Een tilde is een bit inverse / NOT-operator. 1011 wordt dus 0100.

++$u wordt 1, 2, 3, 4 en met % 2 wordt dat dus 1, 0, 1, 0 omdat % een modulus-operator is
wat de neuk is ++$u?
pi_31124609
Thx Light (en JeRa). Ik heb 'm nu in 61 tekens
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31124641
quote:
Op zondag 2 oktober 2005 20:30 schreef Swetsenegger het volgende:

[..]

wat de neuk is ++$u?
$u = 0;
$a = $u++;
echo $a;
$u = 0;
$a = ++$u;
echo $a;

Voer deze code eens uit ++ achter de variabele geeft de oude waarde terug, ++ voor de variabele geeft de nieuwe waarde terug. ++ voor de variabele is tevens iets sneller omdat de oude waarde niet onthouden hoeft te worden
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 20:33:03 #106
1972 Swetsenegger
Egocentrische Narcist
pi_31124703
quote:
Op zondag 2 oktober 2005 20:31 schreef JeRa het volgende:

[..]

$u = 0;
$a = $u++;
echo $a;
$u = 0;
$a = ++$u;
echo $a;

Voer deze code eens uit ++ achter de variabele geeft de oude waarde terug, ++ voor de variabele geeft de nieuwe waarde terug. ++ voor de variabele is tevens iets sneller omdat de oude waarde niet onthouden hoeft te worden
Ja ik begrijp ++ ervoor en erachter wel.
Maar waar komt $u vandaan
pi_31124768
quote:
Op zondag 2 oktober 2005 20:33 schreef Swetsenegger het volgende:

[..]

Ja ik begrijp ++ ervoor en erachter wel.
Maar waar komt $u vandaan
Als in PHP een variabele nog niet bestaat, en je doet er een integer-operatie op (++), dan is ie standaard nul

Dus dit als eerste statement in een PHP-bestand:

$u++;

Is hetzelfde als dit:

$u = 0;
$u++;

$u bestond dus gewoonweg nog niet
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 20:38:29 #108
1972 Swetsenegger
Egocentrische Narcist
pi_31124873
quote:
Op zondag 2 oktober 2005 20:34 schreef JeRa het volgende:

[..]

Als in PHP een variabele nog niet bestaat, en je doet er een integer-operatie op (++), dan is ie standaard nul

Dus dit als eerste statement in een PHP-bestand:

$u++;

Is hetzelfde als dit:

$u = 0;
$u++;

$u bestond dus gewoonweg nog niet
Ik begreep het toen ik 'm overlas
Ok, dus voor elk woord karakter, ga je bij u 1 optellen en modulessen. 1%2=1, 2%2=0, 3%2=1

Dat snap ik.
dus bij karakter 1 (1 wordt gezien als false denk ik) krijg je dus het tweede statement van de if $0 | " "

or met spatie. Maar eerder vandaag vond ik 'OR with 1 to force lowercase'

Dus dat begrijp ik niet
pi_31124917
in PHP is vrijwel alles true, behalve 0 wat naar false evalueert.

Dat wat jij gevonden hebt is maar vaag, want je moet namelijk de spatie setten of unsetten
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 21:00:55 #110
1972 Swetsenegger
Egocentrische Narcist
pi_31125237
quote:
Op zondag 2 oktober 2005 20:44 schreef JeRa het volgende:
in PHP is vrijwel alles true, behalve 0 wat naar false evalueert.

Dat wat jij gevonden hebt is maar vaag, want je moet namelijk de spatie setten of unsetten
Dit is een A: 10000001
Dit is een a: 11000001

dus A | 01000000 = a toch?
01000000 = @

ik ben confused

-edit- nevermind, die calculator zet de 8ste bit er niet voor als hij 0 is

Dit is een A: 01000001
Dit is een a: 01100001

dus A | 00100000 = a

[ Bericht 9% gewijzigd door Swetsenegger op 02-10-2005 21:06:39 ]
pi_31125475
A is 65 = 1000001
a is 97 = 1100001
Verschil is dus 100000 = 32 = spatie

@ = 64, dus ik denk dat je ergens een 0 bijgezet hebt.
pi_31125720
quote:
Op zondag 2 oktober 2005 20:13 schreef JeRa het volgende:

[..]

Hele mooie oplossing, maar daar kunnen er nog 3 vanaf *niet zegt waar*
Ik ben toch wel benieuwd waar er dan nog 3 weg zouden kunnen.
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 21:16:06 #113
1972 Swetsenegger
Egocentrische Narcist
pi_31125798
quote:
Op zondag 2 oktober 2005 21:13 schreef Light het volgende:

[..]

Ik ben toch wel benieuwd waar er dan nog 3 weg zouden kunnen.
Sterker nog
SR zegt op phpfreakz 'm in 59 te hebben
pi_31125878
quote:
Op zondag 2 oktober 2005 21:16 schreef Swetsenegger het volgende:

[..]

Sterker nog
SR zegt op phpfreakz 'm in 59 te hebben
Klopt, ik had 'm iets aangedragen waardoor het geheel twee tekentjes kleiner kon, maar ik vond het nogal triviaal (daarom zegt ie ook 'als ie goedgekeurd wordt').
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 21:30:43 #115
1972 Swetsenegger
Egocentrische Narcist
pi_31126324
quote:
Op zondag 2 oktober 2005 21:18 schreef JeRa het volgende:

[..]

Klopt, ik had 'm iets aangedragen waardoor het geheel twee tekentjes kleiner kon, maar ik vond het nogal triviaal (daarom zegt ie ook 'als ie goedgekeurd wordt').
Mjah, voor die van light kan er misschien nog een masker verzonnen worden waardoor je bij het eerste karakter maar 1 bitwise manipulatie nodig hebt (inverse spatie XOR'en ofzo), maar daar winnen we maar 1 karakter mee
pi_31126353
quote:
Op zondag 2 oktober 2005 21:30 schreef Swetsenegger het volgende:

[..]

Mjah, voor die van light kan er misschien nog een masker verzonnen worden waardoor je bij het eerste karakter maar 1 bitwise manipulatie nodig hebt (inverse spatie XOR'en ofzo), maar daar winnen we maar 1 karakter mee
XOR'en gaat niet werken omdat je dan áltijd de character van case verandert, ongeacht wat het ervoor was
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 21:34:32 #117
1972 Swetsenegger
Egocentrische Narcist
pi_31126427
quote:
Op zondag 2 oktober 2005 21:32 schreef JeRa het volgende:

[..]

XOR'en gaat niet werken omdat je dan áltijd de character van case verandert, ongeacht wat het ervoor was
Ja ik heb al een blaadje vol met 1'en en 0'en, maar omzowel uppercase als lowercase zo te maskeren met 1 AND of OR dat er altijd uppercase uitkomt EN dat universeel is voor elk karakter valt nog niet mee

En dat alles voor 1 karakter winst, waarmee we nog 5 karakters boven SR's oplossing zitten
pi_31126923
quote:
Op zondag 2 oktober 2005 21:30 schreef Swetsenegger het volgende:

[..]

Mjah, voor die van light kan er misschien nog een masker verzonnen worden waardoor je bij het eerste karakter maar 1 bitwise manipulatie nodig hebt (inverse spatie XOR'en ofzo), maar daar winnen we maar 1 karakter mee
Alt-223. Maar om de een of andere reden werkt die code niet in mijn editor. En ook het teken erin plakken werkt niet goed. Maar goed, 't scheelt hooguit 1 teken.
pi_31127134
was next($_POST) al aangedragen als alternatief voor $_POST[string]? Weer twee winst
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 22:03:56 #120
1972 Swetsenegger
Egocentrische Narcist
pi_31127299
quote:
Op zondag 2 oktober 2005 21:58 schreef Nevermind het volgende:
was next($_POST) al aangedragen als alternatief voor $_POST[string]? Weer twee winst
OE, samen met ALT 223 kom je dan al op 62 Light
-edit- geeft een parse error

[ Bericht 5% gewijzigd door Swetsenegger op 02-10-2005 22:13:15 ]
pi_31127824
quote:
Op zondag 2 oktober 2005 22:03 schreef Swetsenegger het volgende:

[..]

OE, samen met ALT 223 kom je dan al op 62 Light
-edit- geeft een parse error
Dan moeten er nog 3 af, ergens.
pi_31128173
Mensen ik zit met het volgende, ik wil mijn statistics website gaan ombouwen.. of eingelijk ben ik daar reeds mee bezig geweest maar nu wil ik ook eens weten of dat de huidige manier van data opslaan wel op de goede manier doe. Misschien dat er zaken beter kunnen zodat ik snelheid etc kan verbeteren.

Ik heb op dit moment 16 tabellen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  stat           - naam van de statistiek
  stat_user      - gebruikers naam ennuh psw :P 
  statbrowser    - voor opslag browser naam
  statcolor      - *
  statcountry    - *
  statdate       - hierin gaat de datum, tijd, etc
  stathost       - *
  stathour       - *
  statip         - ip van de gebruiker en de laatste visit
  statkeywords   - *
  statlanguage   - *
  statlast       - laatste gebruikers online (max 25)
  statonline     - wie zijn der online!?
  statos         - *
  statreferer    - *
  statresolution - *

met * zijn dezelfde type tabel (id, statistic id, value en count van het aantal users) ik heb ze opgesplit omdat ik dacht dat dat wel handig was ivm uitlezen (grote tabellen worden slomer als ze voller raken, tenminste dat leek me logisch)


nu heb ik hier eventjes een dumpje gemaakt van de tabellen. En graag zou ik horen of dit beter / efficienter kan... alvast bedankt voor het nemen van je tijd

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
CREATE TABLE `stat` (
  `id` int(4) NOT NULL auto_increment,
  `name` varchar(32) NOT NULL default '',
  `user_id` int(11) NOT NULL default '0',
  `title` varchar(75) NOT NULL default '',
  `referer` varchar(75) NOT NULL default '',
  `active` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `stat_user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL default '',
  `password` varchar(64) NOT NULL default '',
  `user_level` tinyint(1) NOT NULL default '0',
  `last_login` datetime NOT NULL default '0000-00-00 00:00:00',
  KEY `id` (`id`)
) TYPE=MyISAM;

CREATE TABLE `statdate` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `day` char(2) NOT NULL default '',
  `weekday` char(2) NOT NULL default '',
  `week` char(2) NOT NULL default '',
  `month` char(2) NOT NULL default '',
  `year` varchar(4) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statip` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `lastdate` varchar(10) default NULL,
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statkeywords` (
  `sid` tinyint(4) NOT NULL default '0',
  `lastupdate` datetime NOT NULL default '0000-00-00 00:00:00',
  `keyword` varchar(25) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  KEY `sid` (`sid`)
) TYPE=MyISAM;

CREATE TABLE `statlast` (
  `id` bigint(20) NOT NULL auto_increment,
  `sid` tinyint(4) NOT NULL default '0',
  `lasttime` timestamp(14) NOT NULL,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `ip` varchar(15) NOT NULL default '',
  `host` varchar(255) NOT NULL default '',
  `referer` varchar(255) NOT NULL default '',
  `os` varchar(75) NOT NULL default '',
  `browser` varchar(75) NOT NULL default '',
  `country` varchar(75) NOT NULL default '',
  `color` varchar(75) NOT NULL default '',
  `resolution` varchar(75) NOT NULL default '',
  KEY `id` (`id`,`sid`)
) TYPE=MyISAM;

CREATE TABLE `statonline` (
  `id` int(4) unsigned zerofill NOT NULL auto_increment,
  `sid` tinyint(4) NOT NULL default '0',
  `session_id` varchar(255) NOT NULL default '',
  `activity` datetime NOT NULL default '0000-00-00 00:00:00',
  `member` enum('y','n') default 'n',
  `ip_address` varchar(255) NOT NULL default '',
  `cururl` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statreferer` (
  `sid` int(4) NOT NULL default '0',
  `date` date NOT NULL default '0000-00-00',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  `type` enum('I','E') NOT NULL default 'I'
) TYPE=MyISAM;


CREATE TABLE `statbrowser` (
  `id` int(4) unsigned zerofill NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statcolor` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statcountry` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `stathost` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `stathour` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statlanguage` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statos` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

CREATE TABLE `statresolution` (
  `id` int(4) NOT NULL auto_increment,
  `sid` int(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;


tevens heb ik de op elkaar lijkende tabellen eventjes bij elkaar gezet.

Alvast tnx..
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31128190
quote:
Op zondag 2 oktober 2005 22:03 schreef Swetsenegger het volgende:

[..]

OE, samen met ALT 223 kom je dan al op 62 Light
-edit- geeft een parse error
Welk gedeelte? next($_POST) heb ik getest en werkt.

-edit-
Misschien kan dit beter gesplitst worden tot nieuw topic. Alle ranzige code is niet echt het goede voorbeeld
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 22:45:37 #124
1972 Swetsenegger
Egocentrische Narcist
pi_31128734
@Nevermind, heb je wel getest MET het fform uit de opgave. Daar staat ook nog een hidden field in.
Maar sowieso kreeg ik een parseerror wanneer ik next($_POST) gebruikte.

@Chandler.
16 tabellen voor statistieken Ik zou eens een paar tutorials lezen over normalisatie, want het lijkt me dat dat efficienter kan.
Ow en grote tabellen welke trager worden als ze voller raken.

Ik denk dat MySQL efficienter data uit 1 grote tabel haalt, dan uit 16 relationele tabellen. En hoe groot wordt je tabel? Bij mysql spreken ze pas over 'groot' bij miljoenen records.
pi_31128827
quote:
Op zondag 2 oktober 2005 22:45 schreef Swetsenegger het volgende:
@Nevermind, heb je wel getest MET het fform uit de opgave. Daar staat ook nog een hidden field in.
Maar sowieso kreeg ik een parseerror wanneer ik next($_POST) gebruikte.
Ja, daar heb ik mee getest. Door het hidden field gebruik ik next ipv pos, zodat ie het tweede veld pakt ("string") in plaats van het hidden field.
Beetje vreemd dat het niet werkt, ik denk dat je dan toch een 'spelfout' ergens hebt.

-edit-
Testvoorbeeldje camel.php
1<?=preg_replace('/\w\s?\w?/e','ucfirst("$0")',strtolower(next($_POST)));

(dit is dus niet mijn code, maar dat lijkt me duidelijk)
pi_31129483
quote:
Op zondag 2 oktober 2005 22:45 schreef Swetsenegger het volgende:
@Nevermind, heb je wel getest MET het fform uit de opgave. Daar staat ook nog een hidden field in.
Maar sowieso kreeg ik een parseerror wanneer ik next($_POST) gebruikte.
Die next($_POST) werkt hier wel goed
quote:
@Chandler.
16 tabellen voor statistieken Ik zou eens een paar tutorials lezen over normalisatie, want het lijkt me dat dat efficienter kan.
Ow en grote tabellen welke trager worden als ze voller raken.

Ik denk dat MySQL efficienter data uit 1 grote tabel haalt, dan uit 16 relationele tabellen. En hoe groot wordt je tabel? Bij mysql spreken ze pas over 'groot' bij miljoenen records.
Dan zijn goede indexen zeker van belang. De forumreactiestabel zal wel het predikaat "groot" meekrijgen, maar lijkt me toch nog redelijk snel
pi_31136750
@Chandler

Waarom maak je niet een tabel als deze:

1
2
3
4
5
6
7
8
CREATE TABLE `statcounts` (
  `id` int(4) NOT NULL auto_increment,
  `statid` int(4) NOT NULL default '0',
  `propertyid` INT(4) NOT NULL default '0',
  `value` varchar(75) NOT NULL default '',
  `count` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;


Dat scheelt zo een tabel of 8.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31137582
@swetsenegger; je hebt gelijk denk ik. maar ik dacht dat kleine tabelletjes altijd sneller waren stupid me hehe

@SuperRembo; dat zou kunnen idd, zo'n tabel... ennuh propertyid zou je dan gebruiken voor een id voor referer, color, etc? neem ik aan.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31137711
Ik kom jullie weer is lastig vallen

Ik wil (dmv een PHP pagina) 2 filmpjes achter elkaar afspelen, de filmpjes hebben geen lengte die vast staat (kan dus vandaag zijn dat filmpje A 20 seconde duurt, en morgen slechts 5 seconde).

Hoe kan ik dit mooi aanpakken? Is het mogelijk om te kijken of filmpje A is afgelopen, of dat ik een soort van playlist kan maken?

Thnx!
pi_31138011
@LeeHarveyOswald; wat denk je van een frame die je met een bepaalde timer (als het filmpje geladen is) vervangt door een ander filmpje? want ook in javascript kan je werken met timers
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31138602
quote:
Op maandag 3 oktober 2005 09:53 schreef Chandler het volgende:
@LeeHarveyOswald; wat denk je van een frame die je met een bepaalde timer (als het filmpje geladen is) vervangt door een ander filmpje? want ook in javascript kan je werken met timers
Tijdsduur filmpjes is variabel
pi_31138956
kan je toch ook in de database zetten? dan geef je die ook als variabel mee..!!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31139003
quote:
Op maandag 3 oktober 2005 10:35 schreef Chandler het volgende:
kan je toch ook in de database zetten? dan geef je die ook als variabel mee..!!
Zodat een redacteur eerst moet kijken hoelang zijn / haar filmpje is, en dat nog is extra in moet voeren
pi_31140498
PHPGOLF:

Heel cool, ik vraag me af wat het winnende script is, en euhm ik ga het niet eens proberen
  maandag 3 oktober 2005 @ 16:01:49 #135
120139 freiss
Hertog Jan :9~
pi_31147326
Pff.. ik heb weer eens een probleempje met PHP, maar nu kom ik er niet echt uit.
Ik heb de volgende 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
<body>
<?php
include('connect.php');
$query = "SELECT * FROM forum_$f_$t";
$query2 = "SELECT naam FROM naam_fora WHERE forumnummer=$f"; 
$query3 = "SELECT naam FROM forum_$f WHERE topicnummer=$t";
$rs = mysql_query($query);
$rs2 = mysql_query($query2);
$rs3 = mysql_query($query3);
$a = mysql_fetch_array($rs3);
$b = mysql_fetch_array($rs2);
?>


<div class="header">ERIK FORUM</div>
<div class="content"><h1 class="index"><?php echo $a[naam];?></h1>

<a href="/erikforum.php">Index</a> >> <a href="/forum.php?f=<?php echo $f ?>"><?php echo $b[naam] ?></a> >> <a href="/topic.php?f=<?php echo $f ?>&t=<?php echo $t?>"><?php echo $a[naam] ?></a>
<table width="626" height="36">
<?php while($z = mysql_fetch_array($rs))
{
?>
<tr>
<td width="618"><?php echo $z[berichten] ?></td>
</tr>
<?php } ?>
</table>
</div>
<?php mysql_close(); ?>
</body>
</html> 

Het is de bedoeling dat hij met een url van "blabla/topic.php?f=1&t=1" wordt bereikt. Als ik dit nu doe krijg ik gewoon helemaal niets te zien onder de links van Index >> enz. Waaraan zou dit kunnen liggen?
HJ 14-punt-gift.
Lijst met rukmateriaal!
  maandag 3 oktober 2005 @ 16:07:27 #136
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31147465
je kunt niet zomaar $f ofzo in een query gebruiken

WHERE topicnummer = '" . $t . "'

zou wel moeten werken. Maar je mist nog wel meer dingen die wel erg basis zijn.
Ik heb het godverdomme gehad met die onkunde van je!
  FOK!-Schrikkelbaas maandag 3 oktober 2005 @ 16:09:53 #137
1972 Swetsenegger
Egocentrische Narcist
pi_31147534
quote:
Op maandag 3 oktober 2005 16:07 schreef Lamme_Sterfkanarie het volgende:
je kunt niet zomaar $f ofzo in een query gebruiken

WHERE topicnummer = '" . $t . "'

zou wel moeten werken. Maar je mist nog wel meer dingen die wel erg basis zijn.
Eh nee, dat werkt ook niet wanneer PHP tenminste standaard geinstalleerd is en superglobals uit staan.
WHERE topicnummer = '" . $_GET['t'] . "'
werkt wel, maar is 'levens gevaarlijk' aangezien je je userinput totaal niet gecontroleerd heb.
  maandag 3 oktober 2005 @ 16:11:59 #138
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31147582
quote:
Op maandag 3 oktober 2005 16:09 schreef Swetsenegger het volgende:

[..]

Eh nee, dat werkt ook niet wanneer PHP tenminste standaard geinstalleerd is en superglobals uit staan.
WHERE topicnummer = '" . $_GET['t'] . "'
werkt wel, maar is 'levens gevaarlijk' aangezien je je userinput totaal niet gecontroleerd heb.
jah duh.. dat weet ik ook wel. Dit was gewoon het eerste ding wat me opviel van $random aantal fouten

wat nog meer dan?
nou.
je database opzet klopt niet. Dit kan in minder queries. Kijk eens naar LEFT JOIN en JOIN in het algemeen.
Lees een dingen over $_POST en $_GET en hoe je moet voorkomen dat mensen sql injections doen omdat je totaal geen waarden controleert. tip: is_numeric()
Ik heb het godverdomme gehad met die onkunde van je!
  maandag 3 oktober 2005 @ 16:17:37 #139
120139 freiss
Hertog Jan :9~
pi_31147705
quote:
Op maandag 3 oktober 2005 16:07 schreef Lamme_Sterfkanarie het volgende:
je kunt niet zomaar $f ofzo in een query gebruiken

WHERE topicnummer = '" . $t . "'

zou wel moeten werken. Maar je mist nog wel meer dingen die wel erg basis zijn.
nou, bij een ander document doet hij het wel met forum_$f oid.
HJ 14-punt-gift.
Lijst met rukmateriaal!
  maandag 3 oktober 2005 @ 16:18:58 #140
120139 freiss
Hertog Jan :9~
pi_31147744
quote:
Op maandag 3 oktober 2005 16:11 schreef Lamme_Sterfkanarie het volgende:

[..]

jah duh.. dat weet ik ook wel. Dit was gewoon het eerste ding wat me opviel van $random aantal fouten

wat nog meer dan?
nou.
je database opzet klopt niet. Dit kan in minder queries. Kijk eens naar LEFT JOIN en JOIN in het algemeen.
Lees een dingen over $_POST en $_GET en hoe je moet voorkomen dat mensen sql injections doen omdat je totaal geen waarden controleert. tip: is_numeric()
Ik heb het tot nu zo gedaan, omdat ik een paar probleempjes mee had omdat het niet werkte, maar zo werkte het wel bij andere documenten.
HJ 14-punt-gift.
Lijst met rukmateriaal!
  maandag 3 oktober 2005 @ 16:20:47 #141
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31147778
je kunt je queries beter zo opzetten:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$query
= "
   SELECT
      woei
   FROM
      table
   WHERE
      woei_id= '"
. $_GET['iets']  . "'
"
;
mysql_query ( $query );
if (
mysql_errno () &gt; 0 ) {
   
trigger_error ( "MySQL Error!!<br><br>" . mysql_error () . "<br>in query:<br>$query" );
}
?>

Dan zie je direct waar het mis gaat.
Ik heb het godverdomme gehad met die onkunde van je!
  maandag 3 oktober 2005 @ 16:21:16 #142
120139 freiss
Hertog Jan :9~
pi_31147791
quote:
Op maandag 3 oktober 2005 16:09 schreef Swetsenegger het volgende:

[..]

Eh nee, dat werkt ook niet wanneer PHP tenminste standaard geinstalleerd is en superglobals uit staan.
WHERE topicnummer = '" . $_GET['t'] . "'
werkt wel, maar is 'levens gevaarlijk' aangezien je je userinput totaal niet gecontroleerd heb.
Er is ook niet zoveel dat er kan gebeuren als mensen die waardes gaan veranderen. Of heb jij een ander idee hoe ik het kan doen met een link die zich aanpast aan de URL waar je vandaan komt en dan de output verandert?
HJ 14-punt-gift.
Lijst met rukmateriaal!
pi_31147976
quote:
Op maandag 3 oktober 2005 16:21 schreef freiss het volgende:

[..]

Er is ook niet zoveel dat er kan gebeuren als mensen die waardes gaan veranderen. Of heb jij een ander idee hoe ik het kan doen met een link die zich aanpast aan de URL waar je vandaan komt en dan de output verandert?
*mompelt iets over subqueries en het DROP-commando
  maandag 3 oktober 2005 @ 16:28:43 #144
120139 freiss
Hertog Jan :9~
pi_31147997
quote:
Op maandag 3 oktober 2005 16:20 schreef Lamme_Sterfkanarie het volgende:
je kunt je queries beter zo opzetten:
[ code verwijderd ]

Dan zie je direct waar het mis gaat.
Overigens geeft die code een foutmelding als ik hem er op zet (en ja, dat van dat woei enz. heb ik weggehaald )
HJ 14-punt-gift.
Lijst met rukmateriaal!
  maandag 3 oktober 2005 @ 16:30:04 #145
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31148031
als jij zomaar de waarde $t accepteert en in je query gebruikt zonder dat je checked of er alleen info in staat die jij wil hebben kan ik iets doen als
1pagina.php?t=1; DROP TABLE users 

en weg zou je tabel users zomaar kunnen zijn.
Check daarom of $_GET['t'] een getal is en niets anders. Dit kun je doen met bijvoorbeeld is_numeric()

Vertrouw nooit data ingevoerd door je gebruikers.
Ik heb het godverdomme gehad met die onkunde van je!
  maandag 3 oktober 2005 @ 16:30:20 #146
120139 freiss
Hertog Jan :9~
pi_31148039
quote:
Op maandag 3 oktober 2005 16:28 schreef freiss het volgende:

[..]

Overigens geeft die code een foutmelding als ik hem er op zet (en ja, dat van dat woei enz. heb ik weggehaald )
en dan niet van dat hoort zo, maar een parse error.
HJ 14-punt-gift.
Lijst met rukmateriaal!
  maandag 3 oktober 2005 @ 16:31:06 #147
120139 freiss
Hertog Jan :9~
pi_31148055
quote:
Op maandag 3 oktober 2005 16:30 schreef Lamme_Sterfkanarie het volgende:
als jij zomaar de waarde $t accepteert en in je query gebruikt zonder dat je checked of er alleen info in staat die jij wil hebben kan ik iets doen als
[ code verwijderd ]

en weg zou je tabel users zomaar kunnen zijn.
Check daarom of $_GET['t'] een getal is en niets anders. Dit kun je doen met bijvoorbeeld is_numeric()

Vertrouw nooit data ingevoerd door je gebruikers.
oh ok, ik zal het onthouden.
HJ 14-punt-gift.
Lijst met rukmateriaal!
  maandag 3 oktober 2005 @ 16:34:23 #148
120139 freiss
Hertog Jan :9~
pi_31148137
quote:
Op maandag 3 oktober 2005 16:07 schreef Lamme_Sterfkanarie het volgende:
je kunt niet zomaar $f ofzo in een query gebruiken

WHERE topicnummer = '" . $t . "'

zou wel moeten werken. Maar je mist nog wel meer dingen die wel erg basis zijn.
hij doet het trouwens nu. dankje Ik zal mijn leven beteren
HJ 14-punt-gift.
Lijst met rukmateriaal!
  FOK!-Schrikkelbaas maandag 3 oktober 2005 @ 18:38:20 #149
1972 Swetsenegger
Egocentrische Narcist
pi_31151394
quote:
Op maandag 3 oktober 2005 16:34 schreef freiss het volgende:

[..]

hij doet het trouwens nu. dankje Ik zal mijn leven beteren
Als hij het met deze exacte setting doet, kan ik je garanderen dat hij op een andere server, of wanneer je hoster eens gaat updaten, het niet doet
pi_31151602
En afgezien van het feit dat het dan niet meer werkt... het is ook nog eens niet goed. Want een integer in een query hoort niet tussen ' ' ... (Ik ga er ff van uit dat je topicnummer numeriek is )
  FOK!-Schrikkelbaas maandag 3 oktober 2005 @ 19:14:35 #151
1972 Swetsenegger
Egocentrische Narcist
pi_31152426
quote:
Op zondag 2 oktober 2005 23:04 schreef Light het volgende:

[..]

Die next($_POST) werkt hier wel goed
[code]
-edit- Of je let even op de highlighting van je )'s
pi_31154636
Mensen ik heb jullie idee m.b.t mijn tabellen omgegooid eennuh het werkt, of het nu sneller gaat weet ik niet maaruh het ziet er naar uit of het goed werkt. Was me wel een pokke werk maar hielp me weer goed mee met m'n whatpulse statistieken hehehehe... Als jullie nog meer ideeen en tips hebben hoor ik het graag.

Tevens comments op me website (stats.bruggema.nl) wat je er bij zou willen zou leuk zijn (qua stats)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31155714
quote:
Op maandag 3 oktober 2005 20:25 schreef Chandler het volgende:
Tevens comments op me website (stats.bruggema.nl) wat je er bij zou willen zou leuk zijn (qua stats)
ERG onhandig dat je divs gebruikt met een onclick. In firefox zie je niet eens een handje (cursor). Dan moet je op de gok gaan klikken en afwachten of er wat gebeurd.
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 3 oktober 2005 @ 21:11:07 #154
1972 Swetsenegger
Egocentrische Narcist
pi_31156137
quote:
Op maandag 3 oktober 2005 20:58 schreef SuperRembo het volgende:

[..]

ERG onhandig dat je divs gebruikt met een onclick. In firefox zie je niet eens een handje (cursor). Dan moet je op de gok gaan klikken en afwachten of er wat gebeurd.
Dat is redelijk eenvoudig op te lossen met style="cursor:pointer;cursor:hand;"
pi_31156812
Wat is er mis met een <a>?
  FOK!-Schrikkelbaas maandag 3 oktober 2005 @ 21:38:47 #156
1972 Swetsenegger
Egocentrische Narcist
pi_31157147
quote:
Op maandag 3 oktober 2005 21:29 schreef JeRa het volgende:
Wat is er mis met een <a>?
Als je een tekst klikbaar wilt maken... niets.
Wil je een volledig blok klikbaar maken is het wel handig om een onclick te gebruiken.
Hoewel ik pas geleden ergens een betere oplossing tegenkwam, ff zoeken.

-edit-

<a style="display:block"> dus.
Die kan je gewoon met hover stijlen en dan heb je geen js nodig

[ Bericht 11% gewijzigd door Swetsenegger op 03-10-2005 21:53:34 ]
pi_31158442
@SuperRembo: Hmm, je hebt inderdaad gelijk het gaat in FF een beetje raar maar dat zou toch aan een fout in FF moeten liggen want de stylesheet is volgens mij correct.

@Swetsenegger: je had een oplossing? maar je laat een block iets zien?

maar verder te vreden?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 3 oktober 2005 @ 22:17:27 #158
1972 Swetsenegger
Egocentrische Narcist
pi_31158551
quote:
Op maandag 3 oktober 2005 22:14 schreef Chandler het volgende:
@SuperRembo: Hmm, je hebt inderdaad gelijk het gaat in FF een beetje raar maar dat zou toch aan een fout in FF moeten liggen want de stylesheet is volgens mij correct.
In IE 7 zie ik ook geen handje
quote:
@Swetsenegger: je had een oplossing? maar je laat een block iets zien?

maar verder te vreden?
Ja, dat is een oplossing als je een heel vak klikbaar wil maken in plaats van alleen de tekst.
Je kan dat doen door een div een onclick te geven, maar dan heb je javascript nodig voor de href, je kan ook een <a> een display block geven en dan kan je ook dat hele blok klikbaar maken.

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<style>
#menu ul{
  margin: 0;
  padding: 0;
}

#menu ul li{
  list-style-type: none;
  margin:0;
  padding: 0;
}
#menu ul li a{
  display: block;
  width: 200px;
  background-color: #6d7172;
  padding: 3px 10px;
}
#menu ul li a:hover{
  background-color: #e8ac6e;

}
</style>
</head><body>
<div id="menu">
  <ul>
    <li><a href="#">home</a></li>
    <li><a href="#">news</a></li>
    <li><a href="#">about</a></li>
  </ul>
</div>
</body>
</html>


Dit was niet direkt op jou van toepassing, maar als klikbaar maken van blokken discussie
pi_31159190
Juist bijna elk zichtbaar element kun je als block element beschouwen, echter worden vaak DIV of SPAN als vertegenwoordigers van het block element gezien. Dit is natuurlijk niet het geval en dien je de tag te gebruiken die dient voor links: a
pi_31160624
quote:
Op maandag 3 oktober 2005 09:37 schreef LeeHarveyOswald het volgende:
Ik kom jullie weer is lastig vallen

Ik wil (dmv een PHP pagina) 2 filmpjes achter elkaar afspelen, de filmpjes hebben geen lengte die vast staat (kan dus vandaag zijn dat filmpje A 20 seconde duurt, en morgen slechts 5 seconde).

Hoe kan ik dit mooi aanpakken? Is het mogelijk om te kijken of filmpje A is afgelopen, of dat ik een soort van playlist kan maken?

Thnx!
poging 2
  dinsdag 4 oktober 2005 @ 00:41:19 #161
71919 wonderer
Hung like a My Little Pony
pi_31163542
Even nieuwsgierig, kan ik iemand anders' zijn session be-eindigen? Of moet ie dan per se een pagina met session destroy laden?
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_31166071
tnx Swetsenegger!!! ik zal eens kijken wat ik er mee kan bereiken.

@Wonderer; je kan idd niet anders iemand zijn sessie be-eindigen. Session destroy of session_unregister... maar waarvoor wil je dit gebruiken, misschien zijn er nog andere mogelijkheden
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31168590
quote:
Op dinsdag 4 oktober 2005 00:41 schreef wonderer het volgende:
Even nieuwsgierig, kan ik iemand anders' zijn session be-eindigen? Of moet ie dan per se een pagina met session destroy laden?
Iemand anders, dus iemand op een andere site? Dat gaat niet lukken, of je moet zijn cookie kunnen trashen bijvoorbeeld (daar wordt vaak de session ID in opgeslagen).
  dinsdag 4 oktober 2005 @ 13:01:12 #164
71919 wonderer
Hung like a My Little Pony
pi_31172087
quote:
Op dinsdag 4 oktober 2005 08:06 schreef Chandler het volgende:
tnx Swetsenegger!!! ik zal eens kijken wat ik er mee kan bereiken.

@Wonderer; je kan idd niet anders iemand zijn sessie be-eindigen. Session destroy of session_unregister... maar waarvoor wil je dit gebruiken, misschien zijn er nog andere mogelijkheden
Ik gebruik sessies om de index van een fotogalerie te maken en te houden voor de huidige bezoeker. Werkt allemaal prima, tot de index wordt veranderd door een admin (bijvoorbeeld plaatje weggooien), dan klopt ie niet meer. Dus ik vroeg me af of het mogelijk was om alle sessies te vernietigen. De index wordt dan namelijk automatisch opnieuw gemaakt.

Het komt niet heel vaak voor dat het moet, dus het is geen ramp, maar ik vroeg me toch af of het kon. Met dit soort projectjes leer je toch het meest
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
  dinsdag 4 oktober 2005 @ 13:08:59 #165
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31172340
dan moet je zorgen dat je script doorheeft dat de index gewijzigd is en dan de sessie voor de gebruiker weer aanpast naar de huidige situatie ljikt me
Ik heb het godverdomme gehad met die onkunde van je!
pi_31176199
yep, je zou het met bv een bestandje met de datetime (last change) moeten aanmaken en die bij iedere keer checken of ie het zelfde is met diegene die in de sessie vermeld staat != anders doe dan verwijder etc!?

Leuk idee?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  dinsdag 4 oktober 2005 @ 16:03:46 #167
71919 wonderer
Hung like a My Little Pony
pi_31177544
quote:
Op dinsdag 4 oktober 2005 15:15 schreef Chandler het volgende:
yep, je zou het met bv een bestandje met de datetime (last change) moeten aanmaken en die bij iedere keer checken of ie het zelfde is met diegene die in de sessie vermeld staat != anders doe dan verwijder etc!?

Leuk idee?
Ja, laatst gewijzigd kan wel, en dan neem ik ook het moment (datetime) van index maken in de sessie op, en dan vergelijken et voila.

Toch jammer dat je sessies niet op afstand kan weggooien
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_31195460
Ik heb een lijst met zeven willekeurige getallen tussen de 2 en 14 in de array $waarde, die met de functie sort() van laag naar hoog gezet worden. Er kunnen dubbele getallen in de array zitten. Ik wil nu weten of er een rijtje in de array zit van vijf elkaar opvolgende cijfers. Om het nog moeilijker te maken is er één aparte rij, namelijk 14, 2, 3, 4, 5 (op die volgorde), wat ook als rijtje telt.

Stel, de array is
1
2
3
4
5
6
7
8
9
Array (
  [0] => 2
  [1] => 7
  [2] => 8
  [3] => 9
  [4] => 10
  [5] => 11
  [6] => 11
 )


Hoe kan ik dan ontdekken of er een rijtje in zit?

voor de duidelijkheid, het gaat om een straat bij het pokeren, de getallen 2 t/m 10 zijn normale spelkaarten, 11 = jack, 12 = queen, 13 = king, 14 = ace
pi_31196027
Gewoon doorheen loopen. Bijhouden hoeveel je gevonden hebt. Voor 't gemak de vorige kaart onthouden en als 't een aas is omzetten naar 1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$values = array(2, 7, 8, 9, 10, 11, 11);
$prev; 
$matchCount = 0;
$found = false;
for ($i = 0; $i < count($values); $i++) {
   if ($matchCount == 0) {
      $prev = $values[$i] == 14 ? 1 : $values[$i];
   } else if ($prev + 1 == $values[$i]) {
      $matchCount++;
      if ($matchCount == 5) {
         $found = true;
         break;
      }
   } else {
      $matchCount = 0;
   }
}


Niet getest, en 't kan waarschijnlijk nog wel ietsje simpeler. (Is dit ook zo'n php-golf opdracht? )

[ Bericht 0% gewijzigd door SuperRembo op 05-10-2005 18:32:13 ]
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  woensdag 5 oktober 2005 @ 08:37:21 #170
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31196394
quote:
Op dinsdag 4 oktober 2005 16:03 schreef wonderer het volgende:
Toch jammer dat je sessies niet op afstand kan weggooien
dat zou wel kunnen maar dan moet je het sessieid in de database moeten stoppen en bij elke hit een lastvisit datum er bij moeten opslaan. Als je dan wat wijzigt kun je heel simpel alle sessies mollen die van voor de wijzigingsdatum zijn. De huidige sessie kun je dan afbreken en een nieuwe starten.
Ik heb het godverdomme gehad met die onkunde van je!
  woensdag 5 oktober 2005 @ 15:21:13 #171
71919 wonderer
Hung like a My Little Pony
pi_31205750
quote:
Op woensdag 5 oktober 2005 08:37 schreef Lamme_Sterfkanarie het volgende:

[..]

dat zou wel kunnen maar dan moet je het sessieid in de database moeten stoppen en bij elke hit een lastvisit datum er bij moeten opslaan. Als je dan wat wijzigt kun je heel simpel alle sessies mollen die van voor de wijzigingsdatum zijn. De huidige sessie kun je dan afbreken en een nieuwe starten.
Hm, goed punt, daar had ik zelf aan moeten denken want zo werkt mijn inlogsysteem
Punt is alleen dat ik geen database gebruik. Maar mocht het echt nodig zijn, kan ik het ook nog wel in een tekstbestand opslaan.

Ik pak de last change datum er wel bij.

Bedankt voor de hulp!
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
  woensdag 5 oktober 2005 @ 15:27:04 #172
71919 wonderer
Hung like a My Little Pony
pi_31205924
Kan iemand me uitleggen wat
1
2
3
<?php
$prev
= $values[$i] == 14 ? 1 : $values[$i];
?>

doet?

(uit het script van SuperRembo hierboven)
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_31207806
ze;fde a;s
1
2
3
4
5
6
7
8
9
10
<?php
if($values[$i] == 14 )
{
$prev = 1;
}
else
{
 $prev =$values[$i];
}
?>


alleen dan korter geschreven
  woensdag 5 oktober 2005 @ 16:47:25 #174
71919 wonderer
Hung like a My Little Pony
pi_31207981
quote:
Op woensdag 5 oktober 2005 16:40 schreef Darkomen het volgende:
ze;fde a;s
[ code verwijderd ]

alleen dan korter geschreven
Aha! Grappig... *gaat dat eens bestuderen*
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 17:12:36 #175
1972 Swetsenegger
Egocentrische Narcist
pi_31208760
Heren,

Ik ben bezig met een webstore, waarbij ook het menu volledig flexibel is tot 2 levels diep.

De klant kan dus zelf een nieuwe product groep aanmaken. Die produktgroep eventueel ondervedelen in subgroepen en die subgroepen nogmaals onderverdelen in subgroepen. Vervolgens kan je produkten koppelen aan een groep, subgroep of sub-subgroep als je begrijpt wat ik bedoel.

Het databasemodel lijkt me redelijk van belang

Het menu zou er dus als volgt uit kunnen komen te zien:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Horloges
           Seiko
                      Quartz
                      Kinetic
           Citizen
                      Staal
                      Double
Sieraden
           Colliers
                      Goud
                      Zilver
           Armbanden
                      Goud
                      Zilver


Ik zat hierbij ook te denken aan 3 tabellen voor het menu
Hoofditems
id naam

Level 1
id h_id naam

Level 2
id L1_id L1_h_id naam

produkten worden dan zoiets
id h_id L1_id L2_id naam

In het voorbeeld wordt de url van horloges/citizen/staal dan products.php?h_id=1&l1_id=2&l2_id=1
De query SELECT * FROM products WHERE h_id=".$_GET['h_id']." && L1_id=".$_GET['L1_id']." && L2_id=".$_GET['L2_id']."

Dit lijkt me goed werkbaar of zie ik iets over het hoofd?
pi_31209004
Waarom niet in 1 tabel waarbij je het parentid meegeeft?
  woensdag 5 oktober 2005 @ 17:24:43 #177
1055 Schanulleke
Een kop vol zaagsel!
pi_31209144
Het staat ongetwijfeld in een van de eerdere delen, maar ik ben op zoek naar een scriptje (+ een basale uitleg) voor een random usericoon. Voor ik alle delen door ga spitten, weet een van de vaste bezoekers van dit topiek misschien waar ik moet zoeken?
Life is what you make it.
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 17:30:02 #178
1972 Swetsenegger
Egocentrische Narcist
pi_31209293
quote:
Op woensdag 5 oktober 2005 17:20 schreef ikke_ook het volgende:
Waarom niet in 1 tabel waarbij je het parentid meegeeft?
Omdat ik producten ook aan een hoofditem of level 1 item moet kunnen koppelen.
Of begrijp ik je verkeerd?
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 17:32:01 #179
1972 Swetsenegger
Egocentrische Narcist
pi_31209346
quote:
Op woensdag 5 oktober 2005 17:24 schreef Schanulleke het volgende:
Het staat ongetwijfeld in een van de eerdere delen, maar ik ben op zoek naar een scriptje (+ een basale uitleg) voor een random usericoon. Voor ik alle delen door ga spitten, weet een van de vaste bezoekers van dit topiek misschien waar ik moet zoeken?
Heb je hier wat aan?
http://www.phpfreakz.nl/library.php?sid=4194
  woensdag 5 oktober 2005 @ 17:39:59 #180
1055 Schanulleke
Een kop vol zaagsel!
pi_31209592
Dat moet me inderdaad wel redelijk verder helpen. Ga ik even mee stoeien.
Bedankt Swets!
Life is what you make it.
pi_31210361
quote:
Op woensdag 5 oktober 2005 17:30 schreef Swetsenegger het volgende:

[..]

Omdat ik producten ook aan een hoofditem of level 1 item moet kunnen koppelen.
Of begrijp ik je verkeerd?
Ja je begrijpt me verkeerd. Je kunt toch alle items in 1 tabel zetten en dan door middel van parentID zijn positie aangeven?

-edit-

Heb je hier wat aan?Of begrijp ik je "probleem" niet goed?
Leesvoer
pi_31210675
quote:
Op woensdag 5 oktober 2005 07:52 schreef SuperRembo het volgende:
Gewoon doorheen loopen. Bijhouden hoeveel je gevonden hebt. Voor 't gemak de vorige kaart onthouden en als 't een aas is omzetten naar 1.
[ code verwijderd ]

Niet getest, en 't kan waarschijnlijk nog wel ietsje simpeler. (Is dit ook zo'n php-golf opdracht? )
Haha, nee Ik ben een pokersysteem aan het schrijven en wil het testen door een groot aantal pokerspellen te simuleren in php. Ik ga het even testen, maar het is nu al een stuk korter dan mijn versie:

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
         ### STRAIGHT ###
         $straightvalues = array( 
            1 => array( 2, 3, 4, 5, 14 ),
            2 => array( 2, 3, 4, 5, 6 ),
            3 => array( 3, 4, 5, 6, 7 ),
            4 => array( 4, 5, 6, 7, 8 ),
            5 => array( 5, 6, 7, 8, 9 ),
            6 => array( 6, 7, 8, 9, 10 ),
            7 => array( 7, 8, 9, 10, 11 ),
            8 => array( 8, 9, 10, 11, 12 ),
            9 => array( 9, 10, 11, 12, 13 ),
            10 => array( 10, 11, 12, 13, 14 ),
         );

         $straight = array();
         for( $x = 1; $x <= count( $straightvalues ); $x++ )
         {
            $straight[$x] = array();
            $curhand = array();
            for( $y = 0; $y < $cards; $y++ )
            {
               if( in_array( $waarde[$y], $straightvalues[$x] )
 && !in_array( $waarde[$y], $curhand ) )
                  $straight[$x][] = $waarde[$y];            
               $curhand[] = $waarde[$y];
            }
         }
         
         foreach( $straight AS $var => $val )
         {
            $val = count( $straight[$var] );
            if( $val == 5 )
            {
               $curstraight = $var;
               $combi[STRAIGHT] = true;
            }
         }
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 18:35:32 #183
1972 Swetsenegger
Egocentrische Narcist
pi_31211063
quote:
Op woensdag 5 oktober 2005 18:08 schreef ikke_ook het volgende:

[..]

Ja je begrijpt me verkeerd. Je kunt toch alle items in 1 tabel zetten en dan door middel van parentID zijn positie aangeven?

-edit-

Heb je hier wat aan?Of begrijp ik je "probleem" niet goed?
Leesvoer
Ja dit is inderdaad wat ik bedoel.
Het nadeel van methode 1 is dat deze traag is,
Methode twee vind ik redelijk onoverzichtelijk eigenlijk.

In mijn methode kan ik 1 query met joins de volledige tree krijgen.

-edit- en in mijn situatie kan een parent van een level 2 node eventueel meerdere keren voorkomen.

Maar ik moet het artikel nog even goed doorlezen.
Bedankt in ieder geval!

-edit- Methode twee werkt alleen met een vast aantal hierarchische gegevens.

[ Bericht 5% gewijzigd door Swetsenegger op 05-10-2005 18:47:01 ]
pi_31211537
maakt toch niet uit dat een level 2 node meerdere keren voorkomt?

ik heb hier een menu gebruikt die helemaal recursief uit 1 tabel wordt gehaald puur op basis van parentid. dus volgens mij moet jouw probleem ook zo opgelost kunnen worden
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 19:08:13 #185
1972 Swetsenegger
Egocentrische Narcist
pi_31211924
quote:
Op woensdag 5 oktober 2005 18:54 schreef ikke_ook het volgende:
maakt toch niet uit dat een level 2 node meerdere keren voorkomt?
Nee de PARENT van een level 2 node kan 2 keer voorkomen (de level 1 node dus), welke op hun beurt weer verschillende parents kunnen hebben (level 0 node).
Hmz, als ik met id's werk moet dat ook kunnen.

Moet ik na gaan denken hoe ik produkten koppel aan een level

Wat denken andere mensen? de 3 tabellen methode, waarmee je dus met left joins alles uit de tabel kan trekken en heel simpel op elk nivo produkten kan koppeln. Nadeel, 3 tabellen joins etc.

De recursieve 1 tabel oplossing. Overzichtelijk, moet alleen nog bedenken hoe ik produkten koppel op de verschillende levels. Wel traag, want voor elke node in het menu heb je een query nodig.

Voor het simpele voorbeeld menuutje wat ik gaf heb je dus al 14 queries nodig bij elke hit.
pi_31212126
Nou dat moet ook wel met 7 queries lukken swets. Ik kijk eerst welke items PARENT zijn, dat scheelt mij dus een hoop queries... Maar bij een grote tree wordt het wel snel trager idd.

Ik denk eigenlijk dat het ook wel anders moet kunnen met nog minder queries, als je alles eerst al in een array zet (array is sneller dan querie lijkt me toch?), maar dat is mij niet gelukt.
pi_31212279
De oplossing van ikke_ook lijkt me een stuk praktischer dan wat jij op dit moment in gedachten hebt, Swets. Stel dat je ooit besluit nog een laag toe te voegen, dus tot 4 lagen diep, dan moet je weer een nieuwe tabel er bij maken, erg onpraktisch.

Als je al je items een parent_id geeft, kun je desnoods het hele menu uit de database trekken en met PHP in elkaar zetten. Dan ben je maar 1 query kwijt.
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 19:24:39 #188
1972 Swetsenegger
Egocentrische Narcist
pi_31212416
quote:
Op woensdag 5 oktober 2005 19:14 schreef ikke_ook het volgende:
Nou dat moet ook wel met 7 queries lukken swets. Ik kijk eerst welke items PARENT zijn, dat scheelt mij dus een hoop queries... Maar bij een grote tree wordt het wel snel trager idd.

Ik denk eigenlijk dat het ook wel anders moet kunnen met nog minder queries, als je alles eerst al in een array zet (array is sneller dan querie lijkt me toch?), maar dat is mij niet gelukt.
Ja het moet sneller kunnen, want feitelijk is het hetzelfde als dit met nog een extra laag (en in 1 tabel ipv twee)
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 19:36:31 #189
1972 Swetsenegger
Egocentrische Narcist
pi_31212781
quote:
Op woensdag 5 oktober 2005 19:19 schreef Nevermind het volgende:
De oplossing van ikke_ook lijkt me een stuk praktischer dan wat jij op dit moment in gedachten hebt, Swets. Stel dat je ooit besluit nog een laag toe te voegen, dus tot 4 lagen diep, dan moet je weer een nieuwe tabel er bij maken, erg onpraktisch.
Mjah, ook hier is je diepte beperkt door het aantal kolommen. Betekent altijd een database aanpassing.
quote:
Als je al je items een parent_id geeft, kun je desnoods het hele menu uit de database trekken en met PHP in elkaar zetten. Dan ben je maar 1 query kwijt.
Zoiets zat ik ook te denken. bij elke node geef ik het volledige path (in id's) naar de uiteindelijke level 0 parent:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
id1  | level 0 id | level 1 id | naam
-----+------------+------------+-----
1    |            |            | Horloges
2    |            |            | Sieraden
3    | 1          |            | Seiko
4    | 1          |            | Citizen
5    | 1          | 4          | Quartz
6    | 1          | 4          | Kinetic
7    | 1          | 5          | Staal
8    | 1          | 5          | Double
9    | 2          |            | Colliers
10   | 2          |            | Armbanden
11   | 2          | 9          | Goud
12   | 2          | 9          | Zilver
13   | 2          | 10         | Goud
14   | 2          | 10         | Zilver

Dit is wel in php in elkaar te sleutelen, hoewel het makkelijker zou zijn wanneer het voorgesorteerd uit mysql komt rollen
pi_31213020
Die van mij is niet beperkt door het aantal kolommen hoor Ik heb 1 tabel waar alle(in mijn geval menu-)items in staan. Er staat niet bij welk level ze hebben, puur alleen een verwijzing naar zn parent. Dus mijn manier is op geen manier beperkt.

En zo zou je de hele structuur dan dus kunnen printen:

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
© SuperRembo

function PrintTree($parentID) {
   // Get chiled nodes from database
   $nodes = GetChildNodes($parentID);
   $n = count($nodes);
   if ($n>0) {
      // Print list of child nodes
      echo '<ul>';
      for ($i=0; $i < $n; $i++) {
         echo '<li>';
         echo $nodes[$i]['Name'];
         PrintTree($nodes[$i]['NodeID']);
         echo '</li>';
      }
      echo '</ul>';
   }
}

function GetChildNodes($parentID) {
   $sql = "...";
   $result = mysql_query(...);
   $rows = array();
   while (($row = mysql_fetch_assoc($result) !== false) {
      $rows[] = array(
         'NodeID' => ...,
         'Name' => ...
      )
   }
   return $rows;
}
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 19:52:40 #191
1972 Swetsenegger
Egocentrische Narcist
pi_31213246
quote:
Op woensdag 5 oktober 2005 19:44 schreef ikke_ook het volgende:
Die van mij is niet beperkt door het aantal kolommen hoor Ik heb 1 tabel waar alle(in mijn geval menu-)items in staan. Er staat niet bij welk level ze hebben, puur alleen een verwijzing naar zn parent. Dus mijn manier is op geen manier beperkt.

En zo zou je de hele structuur dan dus kunnen printen:
[ code verwijderd ]
Waar zouden we zijn zonder SuperRembo
Kan je hier je tabel structuur en querieseven bij geven.
Want deze functie is anders dan die van die sitepoint link welke je me gaf
pi_31213472
1
2
3
4
5
6
7
$query = "SELECT * FROM menutable WHERE active = 1 AND parentid = ".$parentID;

CREATE TABLE menutable (
  mid int(11) NOT NULL auto_increment,
  name varchar(50) NOT NULL default '',
  parentid int(11) NOT NULL default '0',
);

zoiets

en dan

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
function PrintTree($parentID) {
   // Get chiled nodes from database
   $nodes = GetChildNodes($parentID);
   $n = count($nodes);
   if ($n>0) {
      // Print list of child nodes
      echo '<ul>';
      for ($i=0; $i < $n; $i++) {
         echo '<li>';
         echo $nodes[$i]['Name'];
         PrintTree($nodes[$i]['NodeID']);
         echo '</li>';
      }
      echo '</ul>';
   }
}

function GetChildNodes($parentID) {
   $query = "SELECT * FROM menutable WHERE active = 1 AND parentid = ".$parentID;
   $result = mysql_query($query);
   $rows = array();
   while ($row = mysql_fetch_assoc($result)) {
      $rows[] = array(
         'NodeID' => $row['mid'],
         'Name' => $row['name'],
      );
   }
   return $rows;
}

En dan zat er ergens nog een klein foutje in geloof ik,maar die kom je vanzelf wel tegen

[ Bericht 33% gewijzigd door ikke_ook op 05-10-2005 20:23:28 ]
  woensdag 5 oktober 2005 @ 20:06:47 #193
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31213676
Ik probeer m'n eigen template class te schrijven maar ik loop tegen een probleem aan dat ik nog niet kan oplossen.

ben nu al zover dat ik een template kan starten en een simpele waarde kan toewijzen.
1
2
3
4
5
6
<?php
//zoiets dus
$template = new Template( "templates/index.tpl" );
$template-&gt;Assign( "test", "ingevuld" );
$template-&gt;PrintTemplate( );
?>


maar wat ik graag wil is simpele blokken in m'n tpl file die meerdere keren gebruikt kunnen worden. maximaal 2x genest is genoeg voor wat ik wil
1
2
3
4
5
6
[block=test]
Dit is een testblock!
  [block=genest]
   genest block met een {replace} er in
  [/block]
[/block]

iets in die geest dus
maar hoe krijg ik dat voor elkaar? Heb al wat code online bekeken maar andersmans code snappen is niet m'n beste kant.
Ik weet dat ik het wiel opnieuw uitvind en dat het trager wordt op deze manier en php is al een template parser en bla bla bla dus bespaar me dat geneuzel (roonaan)
Wie heeft zoiets al eens gebouwd en kan me globaal vertellen welke stappen ik moet maken?
Ik heb het godverdomme gehad met die onkunde van je!
pi_31214043
Je moet wel een beetje uitkijken met het onderhoud van je groepen. Je moet voorkomen dat je een lus maakt. Bijvoorbeeld groep A heeft subgroep B, groep B heeft subgroep C en C heeft subgroep A.

Bij deze manier van een tree opslaan is het lastig zoeken. je kunt niet met een simpele query alle artikelen selecteren die in groep A en al de onderliggende subgroepen zitten.

Dat probleem heb je niet bij nested sets.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31214270
quote:
Op woensdag 5 oktober 2005 20:18 schreef SuperRembo het volgende:
Je moet wel een beetje uitkijken met het onderhoud van je groepen. Je moet voorkomen dat je een lus maakt. Bijvoorbeeld groep A heeft subgroep B, groep B heeft subgroep C en C heeft subgroep A.

Bij deze manier van een tree opslaan is het lastig zoeken. je kunt niet met een simpele query alle artikelen selecteren die in groep A en al de onderliggende subgroepen zitten.

Dat probleem heb je niet bij nested sets.
Klopt ja, stond ook al in het linkje dat ik gaf dat dat recursieve niet perfect zou zijn.
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 20:34:06 #196
1972 Swetsenegger
Egocentrische Narcist
pi_31214575
quote:
Op woensdag 5 oktober 2005 20:18 schreef SuperRembo het volgende:
Je moet wel een beetje uitkijken met het onderhoud van je groepen. Je moet voorkomen dat je een lus maakt. Bijvoorbeeld groep A heeft subgroep B, groep B heeft subgroep C en C heeft subgroep A.

Bij deze manier van een tree opslaan is het lastig zoeken. je kunt niet met een simpele query alle artikelen selecteren die in groep A en al de onderliggende subgroepen zitten.

Dat probleem heb je niet bij nested sets.
Die nested set stond inderdaad ook in het linkje van ikke_ook.
Maar aangezien de nodes daarbij een links en rechts id hebben, moet je bij elk item wat je toevoegt, alle nodes in je tabel voorzien van nieuwe links rechts id's.... toch?
pi_31215355
quote:
Op woensdag 5 oktober 2005 20:34 schreef Swetsenegger het volgende:

[..]

Die nested set stond inderdaad ook in het linkje van ikke_ook.
Maar aangezien de nodes daarbij een links en rechts id hebben, moet je bij elk item wat je toevoegt, alle nodes in je tabel voorzien van nieuwe links rechts id's.... toch?
klopt. Het kost een extra update query als je een item insert. Maar het opvragen gaat veel sneller, en dat is wat je veel vaker doet dan een item toevoegen, verplaatsen of verwijderen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 21:02:38 #198
1972 Swetsenegger
Egocentrische Narcist
pi_31215527
quote:
Op woensdag 5 oktober 2005 20:57 schreef SuperRembo het volgende:

[..]

klopt. Het kost een extra update query als je een item insert. Maar het opvragen gaat veel sneller, en dat is wat je veel vaker doet dan een item toevoegen, verplaatsen of verwijderen.
Ik wilde net editten dat ik het gevonden had in die sitepoint tut.
Ik kan natuurlijk gewoon blind die functies copy pasten, maar ik wil gewoon goed begrijpen hoe het werkt. Jammer dat er geen goede nederlands tut is.

Ik ga voor die nested versie, want ik ben bang dat de recursive versie bij een beetje veel verkeer nogal gaat vertragen.

Bedankt weer allemaal.
  FOK!-Schrikkelbaas woensdag 5 oktober 2005 @ 21:05:21 #199
1972 Swetsenegger
Egocentrische Narcist
pi_31215647
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.
pi_31219568
quote:
Op zondag 2 oktober 2005 22:03 schreef Swetsenegger het volgende:

[..]

OE, samen met ALT 223 kom je dan al op 62 Light
-edit- geeft een parse error
Met nog een paar aanpassingen, en eens goed tellen, ben ik op 59 tekens gekomen
  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)
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')