abonnement Unibet Coolblue Bitvavo
  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
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')