abonnement Unibet Coolblue Bitvavo
  FOK!-Schrikkelbaas woensdag 28 september 2005 @ 20:42:37 #2
1972 Swetsenegger
Egocentrische Narcist
pi_31009360
Ik heb een tabel catagorieen, waar op dit moment 17 verschillende in staan.
En ik heb een tabel met items, welke op die catagorieen ingedeeld zijn.

Tabel catagorie
1
2
3
4
5
6
|ID|Catagorie| 
+--+---------+ 
|1 |Eten     | 
|2 |Sport    | 
|3 |Studie   | 
|4 |etc, etc | 


Tabel Item
1
2
3
4
5
6
7
|ID|Catagorie|Item     |Naam  | 
+--+---------+---------+------+ 
|1 |Eten     |Montignac|Arie  | 
|2 |Sport    |Voetbal! |Tinus | 
|3 |Studie   |PHP      |Kees  | 
|4 |Eten     |Moermans |Bertus| 
|5 |etc      |etc      |etc   | 

Nu wil ik op de frontpage de laatste 3 records uit tabel item, per catagorie.

Het makkelijkst is zoiets als:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$query
="SELECT * FROM catagorie";
$result=mysql_query($query);
while(
$row=mysql_fetch_assoc($result)){

  echo
"<div>".$row[catagorie]."<br />";
  
$query_item="SELECT * FROM item WHERE catgorie='".$row['catgorie']."' LIMIT 3";
  
$result_item=mysql_query($query_item);
  while(
$record=mysql_fetch_assoc($result_item)){
    echo
$record[item]."<br />";
  }
  echo
"</div>";
}
?>


Maar dit betekent 18 queries per hit op de frontpage, en dat kan alleen maar meer worden als er meer catagorieen komen.

Iemand een handigere oplossing?
pi_31009476
Volgens mij kun je het in één query doen door een LEFT JOIN te doen op `Catagorie`.

categorie overigens?
  FOK!-Schrikkelbaas woensdag 28 september 2005 @ 20:48:33 #4
1972 Swetsenegger
Egocentrische Narcist
pi_31009561
quote:
Op woensdag 28 september 2005 20:46 schreef Nevermind het volgende:
Volgens mij kun je het in één query doen door een LEFT JOIN te doen op `Catagorie`.
Volgens mij haal ik dan gewoon de laatste 3 records van 1 categorie uit de tabel. EN ik moet 17 maal de laatste 3 hebben.
quote:
categorie overigens?
stiekem heb ik helemaal geen tabel catagorie of categorie, maar heeft deze een compleet andere naam. Dit was echter makkelijker uitleggen
pi_31009636
best pittig trouwens, kun je ook queries in queries doen? anders lijkt me dit heel erg omslachtig en zul je idd aan die 18 queries blijven zitte
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas woensdag 28 september 2005 @ 21:49:53 #6
1972 Swetsenegger
Egocentrische Narcist
pi_31009824
quote:
Op woensdag 28 september 2005 20:50 schreef Chandler het volgende:
best pittig trouwens, kun je ook queries in queries doen? anders lijkt me dit heel erg omslachtig en zul je idd aan die 18 queries blijven zitte
Subqueries zijn vanaf mysql 4.1 mogenlijk.
Op de server draait 4.0.27 ofzo

Misschien ter verduidelijking, dit wil ik dus: www.marktplaats.nl
Daar zie je 31 categorieën, met de 5 laatste items. Ik kan me niet voorstellen dat markplaats 32 queries draait op de frontpage, met de hits die zij hebben geeft dat een enorme belasting op je db server denk ik.

Er zou dus een makkelijkere oplossing moeten zijn, of stel ik me nu gewoon teveel voor van een simpele select query mbt serverload?
pi_31010654
Een extra join op products (items bij jou) bevat de producten die boven het product staan (p2.ProductName <= p.ProductName). Dat aantal tel ik, en mag niet groter zijn dan 5.

1
2
3
4
5
6
7
SELECT c.CategoryID, c.CategoryName, p.ProductID, p.ProductName
FROM products p
INNER JOIN categories c ON c.CategoryID = p.categoryID
INNER JOIN products p2 ON p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName
GROUP BY p.ProductID, p.ProductName, c.CategoryID, c.CategoryName
HAVING COUNT(p2.ProductID) <= 5
ORDER BY c.CategoryName, p.ProductName


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CategoryID CategoryName ProductID ProductName
1          Beverages    1         Chai
1          Beverages    2         Chang
1          Beverages    39        Chartreuse verte
1          Beverages    38        Côte de Blaye
1          Beverages    24        Guaraná Fantástica
2          Condiments   3         Aniseed Syrup
2          Condiments   4         Chef Anton's Cajun Seasoning
2          Condiments   5         Chef Anton's Gumbo Mix
2          Condiments   15        Genen Shouyu
2          Condiments   6         Grandma's Boysenberry Spread
3          Confections  48        Chocolade
3          Confections  26        Gumbär Gummibärchen
3          Confections  49        Maxilaku
3          Confections  25        NuNuCa Nuß-Nougat-Creme
3          Confections  16        Pavlova
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 28 september 2005 @ 22:17:41 #8
1972 Swetsenegger
Egocentrische Narcist
pi_31010770
quote:
Op woensdag 28 september 2005 22:14 schreef SuperRembo het volgende:
bevat de producten die boven het product staan
Ik ga 'm zometeen ff uitproberen
Maar deze zinsnede begrijp ik even niet
  woensdag 28 september 2005 @ 22:22:36 #9
71919 wonderer
Hung like a My Little Pony
pi_31010923
Om even terug te komen op dat watermerk, trim() loste het rare ding op.

Nu wil ik alleen nog even weten hoe ik met andere lettertypen kan klooien. Kan ik die zelf op de server zetten, of moeten die er al staan, en zo ja, hoe kom ik erachter welke fonts er op de server geinstalleerd zijn?
"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 28 september 2005 @ 22:22:47 #10
1972 Swetsenegger
Egocentrische Narcist
pi_31010926
Sterker nog, ik begrijp geen moer van je query
Even kijken, in ieder geval ga je met tabel aliassen werken. Hmz, eens even kijken hoe ik dat voor mijn probleem ga gebruiken. Plus ook dat ik in mijn tabel item niet de categorie id heb opgeslagen, maar echt de catagorie naam

-Edit-
WHAAAH! Het werkt!!!
Ik snap er werkelijk ergnstig weinig van
Kan je 'm ontleden SR? Ik wil 'm graag ook snappen eigenlijk.

[ Bericht 22% gewijzigd door Swetsenegger op 28-09-2005 22:31:50 ]
pi_31011425
quote:
Op woensdag 28 september 2005 22:22 schreef Swetsenegger het volgende:
Sterker nog, ik begrijp geen moer van je query
Ja, hij is wat lastig om zo ff kort uit te leggen. Wat ook nog belangrijk is, is dat de joinconditie van de 2e products tabel (p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName) en de sortering van het resultaat (ORDER BY c.CategoryName, p.ProductName) bij elkaar horen. Misschien moet je zelf ff spelen met de query, en 'm eens uitvoeren met de COUNT(p2.ProductID) in 't resultaat of een keerte zonder group bij.
quote:
Even kijken, in ieder geval ga je met tabel aliassen werken.
Dat is om het kort en overzichtelijk te houden. Ik gebruik ook 2 x de tabel products, dus ik moet wel een alias gebruiken.
quote:
Hmz, eens even kijken hoe ik dat voor mijn probleem ga gebruiken. Plus ook dat ik in mijn tabel item niet de categorie id heb opgeslagen, maar echt de catagorie naam
Ai, ik hoopte dat dat bij het vereenvoudigde voorbeeld hoorde
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 28 september 2005 @ 22:41:32 #12
1972 Swetsenegger
Egocentrische Narcist
pi_31011698
quote:
Op woensdag 28 september 2005 22:35 schreef SuperRembo het volgende:

[..]

Ja, hij is wat lastig om zo ff kort uit te leggen. Wat ook nog belangrijk is, is dat de joinconditie van de 2e products tabel (p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName) en de sortering van het resultaat (ORDER BY c.CategoryName, p.ProductName) bij elkaar horen. Misschien moet je zelf ff spelen met de query, en 'm eens uitvoeren met de COUNT(p2.ProductID) in 't resultaat of een keerte zonder group bij.
[..]

Dat is om het kort en overzichtelijk te houden. Ik gebruik ook 2 x de tabel products, dus ik moet wel een alias gebruiken.
[..]

Ai, ik hoopte dat dat bij het vereenvoudigde voorbeeld hoorde
Ja ik ben al aan het experimenteren, want het gaat niet helemaal goed.
Hij pakt inderdaad 3 records (waar er tenminste 3 records zijn in de categorie)... maar niet de 3 laatste.

Het lijkt wel of hij ze willekeurig pakt.
pi_31012133
Overigens zou ik het anders hebben aangepakt en bij het toevoegen van een nieuwe item een extra veld updaten dat van 1 t/m 5 loopt en de positie van dat item in de lijst weergeeft. Bij het toevoegen van een item hoef je alleen dat veld te incrementen indien het lager is dan 6, en kun je in de query sorteren op dat veld (ASC weliswaar) en een WHERE-clause maken met veld < 6 beetje een hack, maar het werkt wel.
  FOK!-Schrikkelbaas woensdag 28 september 2005 @ 22:58:00 #14
1972 Swetsenegger
Egocentrische Narcist
pi_31012372
Ok Ik heb SR's query nu zover dat hij de EERSTE 3 per catagorie pakt

(Hij pakte eerst 'willekeurig' omdat ik op een title aan het sorteren was Dan krijg je gewoon de titels welke beginnen met A, vervolgens met B per categorie terug natuurlijk, dom dom dom )

Nu nog de LAATSTE 3.
De query is nu dit (met de orignele tabel namen. genre is gelijk aan categorie en ad is gelijk aan item.)

1
2
3
4
5
6
7
SELECT g.genre, a.title, a.ad_id
FROM genre g
INNER JOIN ad a ON a.genre = g.genre
INNER JOIN ad a2 ON a2.genre = g.genre AND a2.ad_id <= a.ad_id
GROUP BY a.title
HAVING COUNT(a2.ad_id) <= 3
ORDER BY g.genre, a.ad_id DESC


-edit

Swets..., de volgende keer ff dieper nadenken

1
2
3
4
5
6
7
SELECT g.genre, a.title, a.ad_id
FROM genre g
INNER JOIN ad a ON a.genre = g.genre
INNER JOIN ad a2 ON a2.genre = g.genre AND a.ad_id <= a2.ad_id
GROUP BY a.title
HAVING COUNT(a2.ad_id) <= 3
ORDER BY g.genre, a.ad_id DESC


Bedankt voor het meedenken!
pi_31017865
SuperRembo, dat ziet er weer eens super Topf uit man!... wat een knowledge
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31017912
Nog even ter verduidelijjking. Als je wel subquery's kan gebruiken, dan zou je de query zo schrijven:

1
2
3
4
5
6
7
8
9
SELECT c.CategoryID, c.CategoryName, p.ProductID, p.ProductName,
FROM products p
INNER JOIN categories c ON c.CategoryID = p.categoryID
WHERE (
   SELECT COUNT(*) 
   FROM products p2 
   WHERE p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName
) <= 5
ORDER BY c.CategoryName, p.ProductName
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas donderdag 29 september 2005 @ 09:42:28 #17
1972 Swetsenegger
Egocentrische Narcist
pi_31019441
quote:
Op donderdag 29 september 2005 07:26 schreef Chandler het volgende:
SuperRembo, dat ziet er weer eens super Topf uit man!... wat een knowledge
Het verbaast me altijd dat ik voor echt complexe queries en vraagstukken hier WEL een antwoord of een goed idee krijg van mensen als SuperRembo en Roonaan, terwijl op phpfreakz.nl, bij uitstek de php vraagbaak, meestal niet.
pi_31020241
quote:
Op donderdag 29 september 2005 09:42 schreef Swetsenegger het volgende:

[..]

Het verbaast me altijd dat ik voor echt complexe queries en vraagstukken hier WEL een antwoord of een goed idee krijg van mensen als SuperRembo en Roonaan, terwijl op phpfreakz.nl, bij uitstek de php vraagbaak, meestal niet.
Yups, ik dank ook veel aan hun
  FOK!-Schrikkelbaas donderdag 29 september 2005 @ 11:20:56 #19
1972 Swetsenegger
Egocentrische Narcist
pi_31021829
quote:
Op donderdag 29 september 2005 10:16 schreef Darkomen het volgende:

[..]

Yups, ik dank ook veel aan hun
Ik zeg, we maken een walk of fame in de OP
pi_31022269
Altijd baas boven baas, he persoonlijk ga ik met PHP-problemen (if any) altijd op Fok! zoeken en problemen in andere talen vuur ik wel op Tweakers af
  FOK!-Schrikkelbaas donderdag 29 september 2005 @ 11:42:25 #21
1972 Swetsenegger
Egocentrische Narcist
pi_31022490
quote:
Op donderdag 29 september 2005 11:35 schreef JeRa het volgende:
Altijd baas boven baas, he persoonlijk ga ik met PHP-problemen (if any) altijd op Fok! zoeken en problemen in andere talen vuur ik wel op Tweakers af
Van de tweakers heb ik ook een aantal keren goede suggesties gehad.

Alleen zijn ze daar minder geduldig en uitleggerig
pi_31053306
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
<?php
if($_GET['id'] == 'link')

  include("link.php");
}   
elseif($_GET['id'] == 'news')

  include("news.php");
}   
elseif($_GET['id'] == 'ticket')

  include("ticket.php");
}
elseif($_GET['id'] == 'contact')

  include("contact.php");
}
elseif($_GET['id'] == 'link_add')

  include("link_add.php");
}
elseif($_GET['id'] == 'link_edit')

  include("link_edit.php");
}
else
{
   include("main.php");
}
?>


hier roep ik de pagina's mee aan maar als ik nu zeg maar link_edit wil doen komt er ?id=3 achter zeg maar omdat ik die bepaalde link wil wijzigen.
dus dan wordt de voledige url index.php?id=link_edit?id=3 en dat werkt niet.
Hoe zou ik dat het beste kunnen oplossen?

Mijn dank is groot
  vrijdag 30 september 2005 @ 11:31:06 #23
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31053718
index.php?id=link_edit&id=3

let op de &

[ Bericht 77% gewijzigd door Lamme_Sterfkanarie op 30-09-2005 11:38:00 ]
Ik heb het godverdomme gehad met die onkunde van je!
  vrijdag 30 september 2005 @ 11:55:07 #25
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31054525
ik zou het trouwens zo oplossen:

1
2
3
4
5
6
7
8
9
10
<?php
$files
= array("bestand1", "bestand2", "bestand3");

if(isset(
$_GET['file'] && in_array($_GET['file'], $files)){
    include(
$_GET['file'] . ".php");
}
else {
   include(
"main.php");
}
?>


mogelijke bugs daargelaten, niet getest
je hebt nu trouwens ook 2x id in je url staan. dat gaat ook niet werken vandaar dat ik de eerste id hernoemd naar file heb.
Ik heb het godverdomme gehad met die onkunde van je!
  FOK!-Schrikkelbaas vrijdag 30 september 2005 @ 12:33:58 #27
1972 Swetsenegger
Egocentrische Narcist
pi_31055931
quote:
Op vrijdag 30 september 2005 11:55 schreef Lamme_Sterfkanarie het volgende:
ik zou het trouwens zo oplossen:
[ code verwijderd ]

mogelijke bugs daargelaten, niet getest
je hebt nu trouwens ook 2x id in je url staan. dat gaat ook niet werken vandaar dat ik de eerste id hernoemd naar file heb.
Of met een switch
pi_31057154
Ik maak meestal gebruik van de methode die Lamme_Sterfkanarie voordraagt, in combinatie met een levenshtein() methode om bij een verkeerde waarde van de pagina-id de dichtstbijzijnde pagina te vinden (ofwel, gmaes wordt games mocht de gebruiker een typfout maken).

Het nadeel van een switch vind ik dat je dan voor elke pagina een case moet maken, terwijl je het nu gewoon in een array gooit en het werkt. Vroeger gebruikte ik wel een switch om voor het includen van de pagina nog wat checks te doen, maar aangezien die altijd betrekking hebben op de pagina zelf had ik besloten dat ik dat voortaan in de include doe dan ziet het er imo ook wat netter uit.
  vrijdag 30 september 2005 @ 13:16:13 #29
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31057218
daarom gebruik ik de constructie zoals ik hem heb ook altijd. Bij een nieuwe pagina hoef je alleen maar de array te veranderen. Of die nu hardcoded is of dat je die in elkaar draait met informatie uit een database het blijft werken
Ik heb het godverdomme gehad met die onkunde van je!
pi_31061616
ik heb nog een vraagje:

Ik wil de gegevens wat doormiddel van een formulier ingevoerdt wordt controleren.
Nu heb ik al wat op internet gezocht en vondt dit
1if(empty($bericht))

Is dit een beetje goed of hebben jullie andere suggesties?
pi_31063675
De methode die je kiest om je input te controleren, hangt af van wat je wilt dat er gecontroleerd wordt

Ik hanteer bij berichten (voor e-mailformulieren) iets als dit:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
//Bericht in variabele stoppen
$bericht = $_POST['bericht'];

//Whitespaces voor en na het bericht weghalen
$bericht = trim($bericht);

//Check of het bericht wel is ingevuld (en een redelijke lengte heeft)
if (strlen($bericht) &lt; 6) {
    ...
}
?>

Maar zoals ik al zei, het ligt maar net aan wat je wilt controleren
  vrijdag 30 september 2005 @ 18:35:37 #32
71919 wonderer
Hung like a My Little Pony
pi_31064261
Ik was dus bezig met een gallery en ik dacht, laat ik een functie maken die in ieder geval de juiste mappen vast aanmaakt, met de juiste rechten, zodat ik alleen de plaatjes nog maar hoef te uploaden. Mja. Als ik dat gewoon via ftp doe, is de user/group mijn gebruikersnaam, maar als ik het via een script doe, wordt dat apache en kan ik er daarna niks meer mee.

Weet iemand hoe ik dit beter kan aanpakken? Group/user veranderen ofzo?
"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_31064405
Die gallery gaat met de rechten van Apache draaien. Zorg er dus voor dat je in je script die directory aanmaakt en 'm goed chmod(). Dit hoef je als het goed is dus maar een keer te doen, en dan staan de rechten goed

Overigens, als je in FTP de rechten op 777 zet maakt het niet uit wat de gebruikersnaam is, want dan kan Apache er ook bij. Dan hoef je alleen nog maar te hopen dat je niet op een shared webhost zit waarbij iedereen kan rondkijken
pi_31064844
quote:
Op donderdag 29 september 2005 09:42 schreef Swetsenegger het volgende:

[..]

Het verbaast me altijd dat ik voor echt complexe queries en vraagstukken hier WEL een antwoord of een goed idee krijg van mensen als SuperRembo en Roonaan, terwijl op phpfreakz.nl, bij uitstek de php vraagbaak, meestal niet.
Best raar eing. want hier zou je toch minder / slechtere reacties verwachten hehe. Maar goed denk dat alleen maar de mensen met meer dan begin basis reageren dan daar op phpfreakz, daar is het een komen en gaan van ppl die snel ff hun oplossing willen weten (veel noobz) enzo, heb je hier niet
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 30 september 2005 @ 19:04:58 #35
71919 wonderer
Hung like a My Little Pony
pi_31065095
quote:
Op vrijdag 30 september 2005 18:40 schreef JeRa het volgende:
Die gallery gaat met de rechten van Apache draaien. Zorg er dus voor dat je in je script die directory aanmaakt en 'm goed chmod(). Dit hoef je als het goed is dus maar een keer te doen, en dan staan de rechten goed

Overigens, als je in FTP de rechten op 777 zet maakt het niet uit wat de gebruikersnaam is, want dan kan Apache er ook bij. Dan hoef je alleen nog maar te hopen dat je niet op een shared webhost zit waarbij iedereen kan rondkijken
Het aanmaken van de directories gaat wel goed, ik kan alleen daarna niks meer met die mappen doen via een FTP programma, omdat ik de rechten niet heb. Kan ze niet weggooien, niks uploaden, niks aanpassen...
"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_31065516
quote:
Op vrijdag 30 september 2005 19:04 schreef wonderer het volgende:

[..]

Het aanmaken van de directories gaat wel goed, ik kan alleen daarna niks meer met die mappen doen via een FTP programma, omdat ik de rechten niet heb. Kan ze niet weggooien, niks uploaden, niks aanpassen...
Dan moet je die bestanden ná het uploaden en verplaatsen naar die directory ook de goede rechten (777 waarschijnlijk) geven. Dan kun je ze ook via FTP wijzigen/verwijderen/whatever. De rechten die je aan een directory geeft zijn namelijk alleen voor die node, de directory dus, van toepassing en niet op de onderliggende directories of bestanden.

Of je maakt natuurlijk een adminpanel in je gallery
pi_31065768
quote:
Op woensdag 28 september 2005 22:58 schreef Swetsenegger het volgende:
Ok Ik heb SR's query nu zover dat hij de EERSTE 3 per catagorie pakt

(Hij pakte eerst 'willekeurig' omdat ik op een title aan het sorteren was Dan krijg je gewoon de titels welke beginnen met A, vervolgens met B per categorie terug natuurlijk, dom dom dom )

Nu nog de LAATSTE 3.
De query is nu dit (met de orignele tabel namen. genre is gelijk aan categorie en ad is gelijk aan item.)
[ code verwijderd ]

-edit

Swets..., de volgende keer ff dieper nadenken
[ code verwijderd ]

Bedankt voor het meedenken!
Dat HAVING(COUNT()) gedoe, ik wist niet dat je dat als LIMIT kon gebruiken? of doet het dat niet? het leek mij namelijk dat COUNT(), ook bij een GROUP BY, een soort van constante was?
  vrijdag 30 september 2005 @ 22:04:10 #38
71919 wonderer
Hung like a My Little Pony
pi_31070609
quote:
Op vrijdag 30 september 2005 19:22 schreef JeRa het volgende:

[..]

Dan moet je die bestanden ná het uploaden en verplaatsen naar die directory ook de goede rechten (777 waarschijnlijk) geven. Dan kun je ze ook via FTP wijzigen/verwijderen/whatever. De rechten die je aan een directory geeft zijn namelijk alleen voor die node, de directory dus, van toepassing en niet op de onderliggende directories of bestanden.

Of je maakt natuurlijk een adminpanel in je gallery
Ik kan ze al niet eens uploaden, laat staan veranderen. En ik heb juist mijn eigen gallery geschreven omdat ik het een voor een toevoegen van images zo irritant vond. Hij leest nou gewoon de directory uit.

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
<?php
function create_gallery($code,$name,$fotograaf,$email,$date,$user)
{
if(!
is_dir($code)){
  
mkdir($code,0777);
  
mkdir($code.'/images',0777);
  
mkdir($code.'/thumbnails',0777);
  
mkdir($code.'/caps',0777);
  
$file=$code.'/header.txt';
  
copy('under.jpg',$code.'/thumbnails/first.jpg');
  
$entry=$name."\n";
  if(
$email!=''){
   
$entry.='<a href="mailto:'.$email.'">'.$fotograaf.'</a>'."\n";
  }
  else{
   
$entry.=$fotograaf."\n";
  }
  
$entry.=$date."\n";
  
$entry.=$user."\n";

  if (!
$handle = fopen($file, 'w+')) {
   
$msg='Fout! Kan het bestand '.$file.' niet openen.';
   exit;
  }
  if (!
fwrite($handle, $entry)) {
   
$msg='Fout! Kan het bestand '.$file.' niet beschrijven.';
   exit;
  }
  
fclose($handle);
}
else{
  
$msg='Deze galerie bestaat al, kies een andere naam!';
}
return
$msg;
}
?>


Misschien kan ik hier wat mee?
"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_31071568
Direct onder die regel met 'copy' moet je dit zetten:

chmod($code . '/thumbnails/first.jpg', 0777);

En direct onder de regel met 'fclose' dit:

chmod($file, 0777);

Ik denk dat je dan een stuk verder komt
  vrijdag 30 september 2005 @ 23:51:01 #40
71919 wonderer
Hung like a My Little Pony
pi_31074088
Werkt niet. Ik kan met een gewoon FTP programma niet uploaden. Ik zie ook dat ondanks de rechten die ik tijdens het maken heb toegekend, de werkelijke rechten op drwxr-xr-x liggen... ik mis de w mogelijkheid en die kan ik niet handmatig toevoegen, want ik behoor als ftp user niet tot die groep.

Hij maakt alles wel netjes aan, maar ik kan er daarna niks meer mee.
"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_31074383
Het lijkt alsof Apache een mask heeft gekregen waardoor het geen write rechten kan instellen voor group en others...je zou even kunnen proberen na te vragen aan de beheerder van de server of daar iets aan te doen is, maar anders zul je toch echt een adminpanel moeten maken
  zaterdag 1 oktober 2005 @ 00:23:59 #42
71919 wonderer
Hung like a My Little Pony
pi_31074919
Hm, die 0777 weghalen bij mkdir en dan chmod(directory,0777) werkt WEL. Maar toch raar, zo'n omweg
"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_31078634
Van deze pagina:
quote:
The mode is also modified by the current umask, which you can change using umask().
Ik gok dat dat niet van toepassing is op chmod()
pi_31078781
Ik ben vanaf het begin af aan via een tutorial een upload scriptje aan het maken... Ook al heb ik die site netjes gevolgd... Na de eerste simpele stap wertke het al niet:

index.php:

1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<title>Upload test form</title>
</head>
<body>
<form action="getfile.php" method="post"><br>
File: <input type="file" name="uploadFile"><br>
<input type="submit" value="Upload File">
</form>
</body>
</html>


getfile.php:

1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title>Upload test</title>
</head>
<body>
<?php
  move_uploaded_file($_FILES['uploadFile'] ['tmp_name'], "../uploads/{$_FILES['uploadFile'] ['name']}")
?>
</body>
</html>


Wat doe ik nu al fout?
pi_31078833
Er horen in ieder geval geen spaties tussen $_FILES['uploadFile'] en ['tmp_name'].

Volgens mij hoort er nog enctype="multipart/form-data" in de form-tag.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31078864
quote:
Op zaterdag 1 oktober 2005 09:47 schreef SuperRembo het volgende:
Er horen in ieder geval geen spaties tussen $_FILES['uploadFile'] en ['tmp_name'].

Volgens mij hoort er nog enctype="multipart/form-data" in de form-tag.
bedankt. dat waren de twee fouten! het werkt nu!
  FOK!-Schrikkelbaas zaterdag 1 oktober 2005 @ 17:31:40 #47
1972 Swetsenegger
Egocentrische Narcist
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 11:51:16 #48
1972 Swetsenegger
Egocentrische Narcist
pi_31108846
quote:
Op zaterdag 1 oktober 2005 17:31 schreef Swetsenegger het volgende:
Voor de echte nerds
http://www.phpfreakz.nl/forum.php?forum=5&page=1
Ik wil deze winnen eigenlijk, dus ik crosspost 'm hier.
Als we een korte oplossing hebben, post ik het antwoord als het fok-team
quote:
Beste PHP-ers,


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

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

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

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

--[ Inzendingen
Je kunt je oplossing sturen naar:

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

--[ Doelstelling
Je moet de input veranderen in hoofdletters en in kleine letters, maar met
een twist. We gaan het camel-talk stijl doen. We gaan ervan uit dat de input
alleen uit A-Za-z bestaat. De input komt van een formulier vandaan.
Dit is het formulier:

1
2
3
4
5
6
7
8
9
10
11
12
13
<html> 
<head> 
<title>PHP Golf #5</title> 
</head> 

<body> 
<form method="POST" action="camel.php"> 
<input type="hidden" name="dummy"> 
<input type="text" name="string"> 
<input type="submit" name="submit"> 
</form> 
</body> 
</html> 


Het doel is de input te veranderen in camel-style.
Voorbeeld input:

"PHPFreakz heeft een community"

output:

"PhPfReAkZ hEeFt EeN cOmMuNiTy"

De output moet beginnen met een hoofdletter. Iedere tweede letter is een
een hoofdletter. Spaties tellen dus niet mee als karakters (zie voorbeeld hierboven).

Nu mag jij camel.php programmeren en liefst zo kort mogelijk.


--[ Deadline:

De deadline is over 6 dagen.
Donderdag 19:00 6 oktober 2005

-----

Post in dit topic vragen/suggesties.
GEEN OPLOSSINGEN!

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

Diegene die het minste karakters heeft gebruikt, wint!

Veel succes,

Tri Pham
De kortste geldige oplossing staat op dit moment op 66 karakters. Standaard instellingen, dus Notices staan uit, super globals staan uit.

Loopen gaat niet werken omdat je dan al boven de 20 karakters kwijt ben voor het loopen door je string. Dan hou je dus nog max 46 karakters over voor het overslaan van spaties en het omzetten naar uppper dan wel lowercase.

Houden we een reguliere expressie over. Daar ga ik nu mee beginnen, na twee dagen met loopen aan het prutsen te zijn geweest. Input is welkom.
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 12:12:28 #49
1972 Swetsenegger
Egocentrische Narcist
pi_31109441
Ik vond al wat interessants:
Remember, the only difference in ASCII between an uppercase letter and a lowercase letter is a single bit that is 0 for uppercase and 1 for lowercase. Surely it would be possible to write some code that would simply flip this bit in each character to the value you want:
- AND with 0 to force uppercase
- OR with 1 to force lowercase
- XOR with 1 to invert the case
- randomly set it to 1 or 0 to set random case.

deze vond ik erbij, welke uppercase en lowercase omdraait

1
2
3
<?php
preg_replace
('/[a-z]+/ie', '\'$0\' ^ str_pad(\'\', strlen(\'$0\'), \' \')', $input);
?>


Maar dat moet dus een preg_replace welke AND 0 bij karakter 1, OR 1 bij karakter 2, zo tot het eind van de string. spaties negeren worden

[ Bericht 25% gewijzigd door Swetsenegger op 02-10-2005 12:33:11 ]
pi_31110892
quote:
Op zaterdag 1 oktober 2005 17:31 schreef Swetsenegger het volgende:
Voor de echte nerds
http://www.phpfreakz.nl/forum.php?forum=5&page=1
Als je hier nou meteen naar het juiste topic had gelinkt, dan had ik 'm meteen gesnapt.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 13:09:59 #51
1972 Swetsenegger
Egocentrische Narcist
pi_31111246
quote:
Op zondag 2 oktober 2005 13:00 schreef SuperRembo het volgende:

[..]

Als je hier nou meteen naar het juiste topic had gelinkt, dan had ik 'm meteen gesnapt.
Altijd userinput checken

Anyway, ik ga even een aantal uurtjes quality time met mijn dochter besteden. Vanavond weer over nadenken.

[ Bericht 11% gewijzigd door Swetsenegger op 02-10-2005 13:16:17 ]
pi_31111602
Ik zit nu op 91 77 68 tekens met een preg_replace, 103102 tekens met een loop.

Nog een flinke weg te gaan naar de 66 (of minder tekens)
Ik kom in de buurt van de 66

[ Bericht 47% gewijzigd door SuperRembo op 02-10-2005 15:36:48 ]
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 15:31:08 #53
1972 Swetsenegger
Egocentrische Narcist
pi_31116057
quote:
Op zondag 2 oktober 2005 13:18 schreef SuperRembo het volgende:
Ik zit nu op 9177 tekens met een preg_replace, 103102 tekens met een loop.

Nog een flinke weg te gaan naar de 66 (of minder tekens)
Vanavond weer eens kijken, maar 66 tekens is echt bizar weinig.
niet vergeten dat je de laatste ?> mag weglaten he
pi_31116257
quote:
Op zondag 2 oktober 2005 15:31 schreef Swetsenegger het volgende:

[..]

Vanavond weer eens kijken, maar 66 tekens is echt bizar weinig.
niet vergeten dat je de laatste ?> mag weglaten he
Dan moet er wel weer een ; achter. Dan zit ik nu op 67.
63!

Zal dan maar ff reggen op dat forum
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 15:42:32 #55
1972 Swetsenegger
Egocentrische Narcist
pi_31116376
quote:
Op zondag 2 oktober 2005 15:38 schreef SuperRembo het volgende:

[..]

Dan moet er wel weer een ; achter. Dan zit ik nu op 67.
63!

Zal dan maar ff reggen op dat forum
Dat zal ik maar doen.
trouwens, je kan 'm mailen naar phpgolf [at] gmail.com
pi_31116414
Ik krijg wel 2 + (aantal niet-spaties) notices
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31116434
63
Ik had al wel het vermoeden dat jij in de buurt zou komen van die 66, maar na een middagje die 66 al gepasseerd!
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 15:46:05 #58
1972 Swetsenegger
Egocentrische Narcist
pi_31116463
quote:
Op zondag 2 oktober 2005 15:43 schreef SuperRembo het volgende:
Ik krijg wel 2 + (aantal niet-spaties) notices
notices staan standaard uit, en is dus geldig
De huidige nummer 1 heeft 66 met een notice. Als hij 68 karakters gebruikt heeft hij geen notices, maar de 66 karakter optie is gewoon geldig

Ben wel heeeeeeeeeeeeeeeeel benieuwd hoe je het gedaan hebt

volgens mij moet ik hier toch 'om de andere' mee kunnen krijgen
quote:
Replacement may contain references of the form \\n or (since PHP 4.0.4) $n, with the latter form being the preferred one. Every such reference will be replaced by the text captured by the n'th parenthesized pattern. n can be from 0 to 99, and \\0 or $0 refers to the text matched by the whole pattern. Opening parentheses are counted from left to right (starting from 1) to obtain the number of the capturing subpattern.
Maar dat lukt me niet, en deze:
quote:
The precise effect of "\cx" is as follows: if "x" is a lower case letter, it is converted to upper case. Then bit 6 of the character (hex 40) is inverted. Thus "\cz" becomes hex 1A, but "\c{" becomes hex 3B, while "\c;" becomes hex 7B.
Zal toch ook enig lucht moeten geven in het aantal gebruikte karakters.

Maar die krijg ik OOK al niet aan de praat

[ Bericht 41% gewijzigd door Swetsenegger op 02-10-2005 15:56:37 ]
pi_31118993
Ik schaam me diep, 193 tekens
Aangezien het geen enkele competitie is zal ik em posten:
1
2
3
$a=$_POST['string'];for($b=0;$b<strlen($a);$b++){$c=ord(substr($a,$b,1));
if($c!=32){$e++;$g=($e%2!=0)?(($c<91)?chr($c):chr($c-32)):(($c<91)?chr($c+32):
chr($c));$f.=$g;}else{$f.=" ";}}echo $f;


(minus enters dus)
Ik zal me beter moeten verdiepen in preg_replaces, anders wordt het echt niks

-edit- 154
1
2
3
$a=$_POST['string'];for($b=0;$b<strlen($a);$b++){$c=substr($a,$b,1);
if($c!=" "){$d.=($e%2==0)?strtoupper($c):strtolower($c);$e++;}else $d.=" ";}
echo $d;


[ Bericht 26% gewijzigd door Nevermind op 02-10-2005 17:44:19 ]
pi_31119765
In plaats van $c=substr($a,$b,1) zou je $c=$a{$b} kunnen gebruiken.
En in plaats van if else kan je ook de ? : operator gebruiken.

Met een (for)loop heb ik 'm in 93 tekens.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31120380
Dankje, de accollades had ik ook net bedacht, en daarmee kom ik op 133. Nu verder met ? :
Erg leuk om te doen trouwens, ook al ben ik er niet erg goed in
-edit- 124 122 117

[ Bericht 3% gewijzigd door Nevermind op 02-10-2005 18:32:03 ]
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 18:18:18 #62
1972 Swetsenegger
Egocentrische Narcist
pi_31120485
quote:
Op zondag 2 oktober 2005 18:14 schreef Nevermind het volgende:
Dankje, de accollades had ik ook net bedacht, en daarmee kom ik op 133. Nu verder met ? :
Erg leuk om te doen trouwens, ook al ben ik er niet erg goed in
-edit- 124
Ik ben er ook niet goed in, maar je leert er wel een hoop handiheidjes mee
De verkorte if notatie bijvoorbeeld
quote:
Op zondag 2 oktober 2005 17:54 schreef SuperRembo het volgende:
In plaats van $c=substr($a,$b,1) zou je $c=$a{$b} kunnen gebruiken.

Die ken/kon ik niet.
pi_31120519
quote:
Op zondag 2 oktober 2005 18:18 schreef Swetsenegger het volgende:

[..]

Ik ben er ook niet goed in, maar je leert er wel een hoop handiheidjes mee
De verkorte if notatie bijvoorbeeld
Inderdaad, bedankt voor de tip trouwens
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 18:29:18 #64
1972 Swetsenegger
Egocentrische Narcist
pi_31120782
Nevermind, je kan ook een foreach loop gebruiken en alleen de $b++.
Als je namelijk de eerste keer begint is $b dan NULL en dan begint hij gewoon bij 0, de volgende ronde is hij 1. Dat levert wel een notice op, maar dat is niet fout

alleen maakt dat weinig uit met betrekking tot karakters
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:12:04 #65
1972 Swetsenegger
Egocentrische Narcist
pi_31121947
$c=chr($c & 0)

waarom geeft dit altijd een spatie terug?
pi_31122170
Dat hangt maar net van de waarde van $c af
pi_31122265
Ik kwam er achter dat je in for-loops ook direct resultaat kan teruggeven, weer wat geleerd. Daarmee kom ik op
1
2
$a=$_POST[string];for($c=0;$c<strlen($a);print($a{$c}!=" "
?$c%2==0?strtoupper($a{$c}):strtolower($a{$c}):" "),$c++);


Nog steeds veel te veel, maar het is weer een paar tekens minder

Maar als ik het goed begrijp kun je alleen het print-commando gebruiken? Zelfs echo werkt niet.
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:27:18 #68
1972 Swetsenegger
Egocentrische Narcist
pi_31122471
quote:
Op zondag 2 oktober 2005 19:18 schreef JeRa het volgende:
Dat hangt maar net van de waarde van $c af
Ongeacht de waarde van $c geeft hij dus altijd 0 terug (en met chr() dus een spatie)
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:28:01 #69
1972 Swetsenegger
Egocentrische Narcist
pi_31122501
quote:
Op zondag 2 oktober 2005 19:20 schreef Nevermind het volgende:
Ik kwam er achter dat je in for-loops ook direct resultaat kan teruggeven, weer wat geleerd. Daarmee kom ik op
[ code verwijderd ]

Nog steeds veel te veel, maar het is weer een paar tekens minder

Maar als ik het goed begrijp kun je alleen het print-commando gebruiken? Zelfs echo werkt niet.
klopt, met print kan je het resultaat van een functie printen, met echo niet
en je kan die strtolower en strtoupper nog vervangen door een bitwise operatie. Hoewel dat bij tot op heden nog niet lukt
pi_31122519
quote:
Op zondag 2 oktober 2005 19:27 schreef Swetsenegger het volgende:

[..]

Ongeacht de waarde van $c geeft hij dus altijd 0 terug (en met chr() dus een spatie)
Maar je doet '& 0', dus ik mag aannemen dat $c een integer is? Of is het een character?
pi_31122580
quote:
Op zondag 2 oktober 2005 19:20 schreef Nevermind het volgende:
Ik kwam er achter dat je in for-loops ook direct resultaat kan teruggeven, weer wat geleerd. Daarmee kom ik op
[ code verwijderd ]

Nog steeds veel te veel, maar het is weer een paar tekens minder

Maar als ik het goed begrijp kun je alleen het print-commando gebruiken? Zelfs echo werkt niet.
Ik wil niet vervelden doen, maar klopt je output wel? Je moet wel rekening houden met de spaties.


1
2
3
input  = "PHPFreakz heeft een community"
output = "PhPfReAkZ hEeFt EeN cOmMuNiTy" // Goed
output = "PhPfReAkZ HeEfT EeN CoMmUnItY" // Fout
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31122611
quote:
Op zondag 2 oktober 2005 19:27 schreef Swetsenegger het volgende:

[..]

Ongeacht de waarde van $c geeft hij dus altijd 0 terug (en met chr() dus een spatie)
$c & 0 is altijd 0, net als $c and false altijd false is.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31122625
Ai, je hebt gelijk SuperRembo. Ik ga er later weer over verder denken
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:33:23 #74
1972 Swetsenegger
Egocentrische Narcist
pi_31122640
quote:
Op zondag 2 oktober 2005 19:32 schreef SuperRembo het volgende:

[..]

$c & 0 is altijd 0, net als $c and false altijd false is.
hoe moet ik dan AND'ten met 0

-edit- ik geef het op ook. Mijn laatste werkende code was iets van 139 karakters. Ik ga NOOIT onder die 63 komen
pi_31122655
quote:
Op zondag 2 oktober 2005 19:28 schreef Swetsenegger het volgende:

[..]

klopt, met print kan je het resultaat van een functie printen, met echo niet
en je kan die strtolower en strtoupper nog vervangen door een bitwise operatie. Hoewel dat bij tot op heden nog niet lukt
Die bitwise operaties werken ook met tekens, maar dan moet je wel aan beide kanten een character gebruiken. Dat het verschil tussen hoofdletter en kleine letter altijd een spatie is, dat veronderstel ik bekend

Overigens ben ik nog niet verder gekomen dan 69 (zonder php sluit tag), of 108 met een loopje
pi_31122660
-edit-
pi_31122684
quote:
Op zondag 2 oktober 2005 19:33 schreef Swetsenegger het volgende:

[..]

hoe moet ik dan AND'ten met 0
Er zit verschil tussen 'a' & 0 en 'a' & '0'.
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:37:18 #78
1972 Swetsenegger
Egocentrische Narcist
pi_31122758
quote:
Op zondag 2 oktober 2005 19:35 schreef Light het volgende:

[..]

Er zit verschil tussen 'a' & 0 en 'a' & '0'.
Ja ik vat 'm nu, moet dus $c=$c&' ' zijn.
-edit- nee dus
pi_31122903
1
2
3
<?php
$a
=strtolower($_POST[string]);$a=preg_replace('/\w\s?\w?/e','ucfirst("$0")',$a);
?>

Verder dan dat kom ik op het moment niet. 84 tekens inclusief <? en ?>
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:46:51 #80
1972 Swetsenegger
Egocentrische Narcist
pi_31123092
quote:
Op zondag 2 oktober 2005 19:41 schreef JeRa het volgende:

[ code verwijderd ]

Verder dan dat kom ik op het moment niet. 84 tekens inclusief <? en ?>
Hij doet het niet.
pi_31123101
quote:
Op zondag 2 oktober 2005 19:46 schreef Swetsenegger het volgende:

[..]

Hij doet het niet.
Wat doet hij niet? Hier draait ie prima?

edit: met output, zie hieronder.
pi_31123177
1
2
3
<?php
$a
=strtolower($_POST[string]);echo preg_replace('/\w\s?\w?/e','ucfirst("$0")',$a);
?>

86 tekens.
pi_31123275
quote:
Op zondag 2 oktober 2005 19:49 schreef JeRa het volgende:

[ code verwijderd ]

86 tekens.
Maak er dan
1<?=preg_replace('/\w\s?\w?/e','ucfirst("$0")',strtolower($_POST[string]));

van, heb je 74
pi_31123356
quote:
Op zondag 2 oktober 2005 19:51 schreef Nevermind het volgende:

[..]

Maak er dan
[ code verwijderd ]

van, heb je 74
In mijn afgunst van die constructie was ik 'm gewoon helemaal vergeten nou, nog maar 12 tekens
pi_31123425
Kun je niet iets toevoegen aan de pattern zodat ie case insensitive wordt en je het "strtolower"-stukje weg kan laten?
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:57:04 #86
1972 Swetsenegger
Egocentrische Narcist
pi_31123446
ucfirst maakt van het eerste karakter van een string een hoofdletter.
Ik begrijp je regexp niet
pi_31123463
quote:
Op zondag 2 oktober 2005 19:56 schreef Nevermind het volgende:
Kun je niet iets toevoegen aan de pattern zodat ie case insensitive wordt en je het "strtolower"-stukje weg kan laten?
Case insensitive maken is makkelijk (i-modifier), maar de bron lowercase maken is een ander verhaal nog niets gevonden tot nu toe.
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 19:58:08 #88
1972 Swetsenegger
Egocentrische Narcist
pi_31123487
quote:
Op zondag 2 oktober 2005 19:56 schreef Nevermind het volgende:
Kun je niet iets toevoegen aan de pattern zodat ie case insensitive wordt en je het "strtolower"-stukje weg kan laten?
case insensitive preg_replace is geen probleem (ipv /e wordt het /ie), maar... wat doe je dan als de input een hoofdletter is en het een kleine letter moet worden?
pi_31123531
quote:
Op zondag 2 oktober 2005 19:57 schreef Swetsenegger het volgende:
ucfirst maakt van het eerste karakter van een string een hoofdletter.
Ik begrijp je regexp niet
1\w\s?\w?

Woord-karakter, eventuele whitespace, eventueel woord-karakter.

Deze string matched ie telkens (2 bij 2, bij een spatie 3, bij het laatste teken eventueel 1) en dan maakt ie van het eerste teken een uppercase

Dus:

blaat blaat blaat
pi_31123548
Ik kom niet kleiner dan 67 tekens
pi_31123612
quote:
Op zondag 2 oktober 2005 19:58 schreef Swetsenegger het volgende:

[..]

case insensitive preg_replace is geen probleem (ipv /e wordt het /ie), maar... wat doe je dan als de input een hoofdletter is en het een kleine letter moet worden?
Je hebt gelijk, ik zat even mee te denken, maar ik heb veel te weinig ervaring met regexp om iets zinnigs toe te voegen
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 20:01:43 #92
1972 Swetsenegger
Egocentrische Narcist
pi_31123615
quote:
Op zondag 2 oktober 2005 19:59 schreef JeRa het volgende:

[..]
[ code verwijderd ]

Woord-karakter, eventuele whitespace, eventueel woord-karakter.

Deze string matched ie telkens (2 bij 2, bij een spatie 3, bij het laatste teken eventueel 1) en dan maakt ie van het eerste teken een uppercase

Dus:

blaat blaat blaat
Ach fuck, natuurlijk. ? is 0 of 1, dus je $0 wordt letter+letter of letter+spatie+letter, waarbij de eerste van $0 hoofdletter wordt Deze zocht ik al.
pi_31123666
quote:
Op zondag 2 oktober 2005 20:01 schreef Swetsenegger het volgende:

[..]

Ach fuck, natuurlijk. ? is 0 of 1, dus je $0 wordt letter+letter of letter+spatie+letter, waarbij de eerste van $0 hoofdletter wordt Deze zocht ik al.
Maar het is kennelijk niet dé oplossing
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 20:03:21 #94
1972 Swetsenegger
Egocentrische Narcist
pi_31123690
quote:
Op zondag 2 oktober 2005 19:59 schreef Light het volgende:
Ik kom niet kleiner dan 67 tekens
Post je code, misschien krijgen we er nog 5 vanaf om SuperRembo te verslaan
pi_31123758
quote:
Op zondag 2 oktober 2005 19:59 schreef Light het volgende:
Ik kom niet kleiner dan 67 tekens
Die wil ik ook wel zien
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31123797
1<?=preg_replace('/\w/e','++$u%2?$0&~" ":$0|" "',$_POST[string]);

Ik heb er nog 65 van weten te maken
pi_31123854
SuperRembo, klopt het dat jouw code op je site staat?
pi_31124031
quote:
Op zondag 2 oktober 2005 20:07 schreef JeRa het volgende:
SuperRembo, klopt het dat jouw code op je site staat?
Hmmm, ja. Heb 'm weer weggehaald. Had niet verwacht dat dat zo snel gevonden zou worden
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31124034
quote:
Op zondag 2 oktober 2005 20:06 schreef Light het volgende:

[ code verwijderd ]

Ik heb er nog 65 van weten te maken
Hele mooie oplossing, maar daar kunnen er nog 3 vanaf *niet zegt waar*
  FOK!-Schrikkelbaas zondag 2 oktober 2005 @ 20:21:34 #100
1972 Swetsenegger
Egocentrische Narcist
pi_31124263
quote:
Op zondag 2 oktober 2005 20:06 schreef Light het volgende:

[ code verwijderd ]

Ik heb er nog 65 van weten te maken

Met uitleg graag

1'++$u%2?$0&~" ":$0|" "'

++$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.

[ Bericht 36% gewijzigd door Swetsenegger op 02-10-2005 20:27:08 ]
pi_31124351
quote:
Op zondag 2 oktober 2005 20:21 schreef Swetsenegger het volgende:

[..]


Met uitleg graag
Voor elke character wordt deze code ge-evalled:
1++$u % 2 ? $0 & ~" " : $0 | " "

Oftewel, bij de eerste character wordt het uppercase gemaakt ($0 & ~" ") en bij elk tweede character wordt het lowercase gemaakt ($0 | " "). Dit omdat $u 1, 2, 3, 4 is en dat met %2 1, 0, 1, 0 oplevert
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)
  FOK!-Schrikkelbaas maandag 10 oktober 2005 @ 13:17:42 #203
1972 Swetsenegger
Egocentrische Narcist
pi_31332250
quote:
Op donderdag 6 oktober 2005 08:35 schreef Swetsenegger het volgende:

[..]

Ok,

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

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

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


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

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

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

bv 1024x800 etc?

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

Ik heb een functie gemaakt.

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


en die functie roep ik normaal aan met

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


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

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


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

bv 1024x800 etc?

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

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

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

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

dus iets van (stel je hebt)


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

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

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

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

Ik had vroeger een example die het volgende had

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


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

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

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

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

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

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

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

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

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

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

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

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

vb

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

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


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


dan wordt dat stukje dus

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


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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

   }

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

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

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

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

Je doet telkens

$ip = array($ips);

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

$ip[] = $ips;

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

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

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

[..]

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

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

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

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


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

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

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

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

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

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


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

Nee toch?
pi_31536980
Ik krijg het niet werkend

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

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

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

echo
"Random-nummer: $random_getal";

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


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

Dus hij geeft em eem foutmelding, en hij blijft dubbele uitvoer geven..
Wat doe ik toch fout?
pi_31537843
$_SESSION['exclude'] is nog geen array. Daarom geeft ie zowel een foutmelding in de functie (daarom zei ik ook dat je áltijd een array moet meegeven ) als bij array_push, die ook een array verwacht. Je kunt zoiets op te lossen door eerst

1
2
3
if (!is_array($_SESSION['exclude'])) {
    $_SESSION['exclude'] = array();
}


te doen
pi_31537966
Hmm.. Stom van me

Hoe moet ik dit dan werkend krijgen, want onderstaande code geeft alsnog dezelfde foutmelding:

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

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

if (!
is_array($_SESSION['exclude'])) {
$_SESSION['exclude'] = array();
}

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

echo
"Random-nummer: $random_getal";

array_push($_SESSION['exclude'],"$random_getal");
?>
pi_31538532
Mijn fout, is_array moet je veranderen in isset en dan werkt het wel
pi_31539153
Ok, mooi nu werkt ie.. MAAR
Hij belandt in een endless-loop zodra alle nummers ge-exclude zijn.
Weet je misschien een manier om em te laten echoen dat er geen random getal meer weer gegeven kan worden, omdat alle getallen al gebruikt zijn?
pi_31541455
quote:
Op dinsdag 18 oktober 2005 18:06 schreef Siegfried het volgende:
Ok, mooi nu werkt ie.. MAAR
Hij belandt in een endless-loop zodra alle nummers ge-exclude zijn.
Weet je misschien een manier om em te laten echoen dat er geen random getal meer weer gegeven kan worden, omdat alle getallen al gebruikt zijn?
Je zegt het zelf al bijna

1
2
3
if ($aantalNummers == $aantalNummersGeexclude) {
   echo 'Help, hij belandt in een endless-loop';
}
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31541626
quote:
Op dinsdag 18 oktober 2005 12:33 schreef JeRa het volgende:

[..]

Iemand?
Wat bedoel je precies? Redabel voor wie?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31541888
quote:
Op dinsdag 18 oktober 2005 19:41 schreef SuperRembo het volgende:

[..]

Je zegt het zelf al bijna
[ code verwijderd ]
Hmm.. Ok
Maar hoe tel ik hoeveel waardes er in een array zitten?
Kan dit ook gewoon met count?
pi_31542725
quote:
Op dinsdag 18 oktober 2005 19:47 schreef SuperRembo het volgende:

[..]

Wat bedoel je precies? Redabel voor wie?
Even een simpel voorbeeldje; een website staat toe dat users php scripts uploaden en die laten draaien op de server, in een geconditioneerde toestand. Dat wil zeggen, bepaalde acties mogen niet worden uitgevoerd en worden gecontroleerd. Echter kun je door recursiviteit alsnog PHP laten crashen i.p.v. zoiets mooi op te vangen met een (eigen) error. Mijn vraag is, waarom hebben ze dit nooit opgelost?
pi_31543538
Oh op die manier.

Ik heb werkelijk geen idee
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31545176
quote:
Op dinsdag 18 oktober 2005 19:57 schreef Siegfried het volgende:

[..]

Hmm.. Ok
Maar hoe tel ik hoeveel waardes er in een array zitten?
Kan dit ook gewoon met count?
Ja, count is juist om te tellen hoeveel waardes er in een array zitten.

1
2
3
4
5
<?php
if (count($exclude) == ($max - $min + 1)) {
    
$exclude = array(); // en toen was $exclude weer leeg :)
}
?>


[ Bericht 2% gewijzigd door Light op 18-10-2005 23:23:58 ]
pi_31545379
Maar wat nu als je een waarde in $exclude zet die niet binnen de reeks valt?...

overigens moet dat '==' zijn[/gezeik]

[ Bericht 18% gewijzigd door JeRa op 18-10-2005 22:01:58 ]
pi_31546230
Hmm..
Toch blijft hij steeds in de endless-loop uitkomen:

1
2
3
4
5
6
7
8
if (count($_SESSION['ant_2']) == ($aantal_ant_2) || count($_SESSION['vr_2']) == ($aantal_vr_2)) 
{
   echo "Alle antwoorden van $naam_2 zijn op ;)";
}
else
{
   Hier staat die code waardoor ie uiteindelijk in de endless-loop belandt.   
}


Wat is er fout aan de if?
Sorry voor de vele vragen, maar ik kom er dus echt niet uit..
pi_31553390
he,

kan iemand me misschien vertellen hoe ik n variabele uit n functie meeneem en weer bij n andere functie kan gebruiken. Het ziet er n beetje als volgt uit.
Heb dus al met die global gewerkt, maar dat is dus alleen voor variabelen die niet in n andere functie staan. Heb ook al met $GLOBALS geprobeerd maar het wil me maar niet lukken.

Alvast bedankt.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function var1 ()
{

$var = "hello world";

}


function var2 ()
{

global  $var;

echo $var;

}
pi_31557297
Dat kan met return.

1
2
3
4
5
6
7
8
9
function who() {
   return 'Twisted';
}
function hello($name) {
   echo "Hello $name";
}

$who = who();
hello($who);
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31567689
Ik heb een probleem met een uplaod script, dit plaatje :
http://www.borntobewild.nl/thatsme/gopic/borntobewild.gif
Komt er zo uit te zien:
http://www.borntobewild.nl/avatar.php?id=11

De code is vrij simpel lijkt me:
1
2
3
4
5
6
7
8
9
10
11
12
   $temp_file_name = "/data/home/httpd/html/www/_tmp/".rand()."_".$_FILES[image][name];
      if(copy($_FILES['image']['tmp_name'],$temp_file_name))
      {
         $handle = fopen($temp_file_name,'r');
         $file_content = fread($handle,filesize($temp_file_name));
         fclose($handle);
         $encoded_image = chunk_split(base64_encode($file_content)); 

         $query ="INSERT INTO `avatars` (`id`, `image`, `type`, `status`, `views`, `weight`)
         VALUES ('', '".$encoded_image."', '".$_FILES[image][type]."', '".$POST[status]."','0','0')";
         $create_row = mysql_query($query) or die(mysql_error());
}


om de foto te laten zien ook:
1
2
3
header( "Content-type: $row[type]" );
header("Content-disposition:filename=www.borntobewild.nl");
echo base64_decode($row['image']);


Ik snap het ff niet?
er zijn namenlijk ook genoeg die wel goed zijn geupload via hetzelfde script?
Alleen die zijn dan ongeveer 50kb ipv deze die 100kb is?
maak ik deze img kleiner dan is er geen probleem dus alleen problemen bij grooter images.

het sql veld is van het 'text' type.
pi_31568395
Ik snap je probleem niet echt. Die GIF-afbeelding is weldegelijk 100 kb groot als ik naar de bron kijk, en je scriptje doet hier niets
pi_31569253
quote:
Op woensdag 19 oktober 2005 22:23 schreef Darkomen het volgende:

het sql veld is van het 'text' type.
Is het type "blob" niet handiger in dit geval?
pi_31574596
Blob is toch maar max 64 kb?
En het origneel is meer dan 100kb maar het opgeslagen gif bestandje is maar 46kb

@jera er zit natuurlijk nog een html formpje bij, maar die maakt verders neit uit.
pi_31576148
je hebt verschillende maten blobs grootste is 16mb dacht ik.


mijn vraag is als volgt. ik heb n simpel formpje waar je een titeltje en een textarea kan invullen, nou wil ik dat de textarea ingevoerd wordt, zoals het getikt is. dus met enters, en spaties e.d.

de enters en (dubbele of meerdere) spaties worden getrimmed of iets dergelijks, waardoor ik dus uiteindelijk met niet 'opgemaakte' text kom te zitten.

tevens wil ik, dat wanneer het item ge-edit wordt, de gegevens die in de textarea ook op dezelfde manier verschijnen. dus geen <br> tags er in e.d., maar gewoon enters zoals ik ze hier getikt heb. Iemand een tip over waarnaar ik moet kijken?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_31576430
gewoon de <br>'s door \n laten vervangen?
pi_31576474
Worden alle grotere afbeeldingen naar dezelfde grootte 'ingekort' of is dat willekeurig?
pi_31576516
quote:
Op donderdag 20 oktober 2005 08:46 schreef Darkomen het volgende:
Blob is toch maar max 64 kb?
En het origneel is meer dan 100kb maar het opgeslagen gif bestandje is maar 46kb

@jera er zit natuurlijk nog een html formpje bij, maar die maakt verders neit uit.
Longblob en het uploaden gaat wel goed
pi_31576611
quote:
Op donderdag 20 oktober 2005 10:46 schreef Darkomen het volgende:
gewoon de <br>'s door \n laten vervangen?
en andersom neem ik aan.. dus bij input \n -> <br>, en bij inlezen in textarea <br> -> \n?

ok, zal ik proberen. maar hoe zit het met de dubbele en meerdere spaties?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_31576718
ja sorry, dat klopt, ik bedoel ook eigenlijk alleen voor het inlezen in de textarea.
spaties kan ik ff niks over zeggen
  donderdag 20 oktober 2005 @ 11:03:01 #275
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31576725
om enters in tekst mee te pakken kun je nl2br() gebruiken
Ik heb het godverdomme gehad met die onkunde van je!
pi_31576832
uiteraard
pi_31579727
ik zit met een vraagje... nogal een onhandig iets maar goed..
Hoe doe ik dit:
quote:
Er zijn 473 ingelogde gebruikers en 2522 gasten aanwezig
ik kan natuurlijk in de database laten zien wie er zijn ingelogged,..
maar als het scherm word gesloten zonder uit te loggen, heb ik een probleem
ik ken de manier al voor het html/javascript-code dat je een popup kunt geven dan om de loguit te doen, maar toch werkt dit meestal (zoals bij mij) niet en blijven er mensen voor altijd ingelogged staan..

ook begrijp ik niet hoe je de gasten kunt tellen. hoe kan ik namelijk zien hoeveel mensen er op dit moment mijn website open hebben staan, maar niet ingelogged zijn..

ik wil dus weten...
hoe tel ik het aantal ingeloggede sessies?
hoe tel ik de gasten (niet ingelogged)

ik zal nog wel ff googlen ernaar, maar heb dit al te vaak geprobeerd...
─_(º.0)_/─
pi_31580001
Gasten:

Misschien kan het makkelijker door het apachelog...maar dat weet ik niet.

Misschien bij elke pagina bezoek (wel of niet ingelogd) ip en timestamp naar db schrijven.
En over een bepaalde tijdsperiode (5, 15 minuten?) het aantal unieke ip's tellen?
Daar zul je nog je aantal ingelogde gebruikers van af moeten trekken.

Op deze manier zal je DB wel erg groot worden... Dus direct een functie om alle oude waardes (meer dan 5/15 minuten) uit de DB te gooien?

En misschien wel handig dit max 1x per minuut te doen. bv naar een text-file schrijven, en via laatste wijziging-functie kijken of hij minder dan 1 minuut oud is, en dus de text-file uitleest, of toch zelf aantal gebruikers gaat berekenen.

Tis maar een idee, misschien (waarschijnlijk) is er een veel handigere manier...
pi_31580211
haha dat heb ik idd al eens geprobeerd,..
probleem is dat de hele website dan echt te traag gaat..

http://www.phpfreakz.nl/library.php?sid=20437

staat een goed voorbeeld van hoe je gasten kunt checken,.. alleen moet ik een manier vinden om dit aan de memberid te koppelen van de leden,.. zodat de class ziet of ik ingelogged ben of niet
─_(º.0)_/─
pi_31580239
ik zie dat ik een foutje heb gemaakt bij het voorbeeldscriptje dat er staat...
hmm.. ff kijken of het zo werkt
─_(º.0)_/─
pi_31580261
Jongens ik blijf in de knoop zitten met mijn script..

1
2
3
4
5
6
7
8
if (count($_SESSION['ant_2']) == ($aantal_ant_2) || count($_SESSION['vr_2']) == ($aantal_vr_2)) 
{
   echo "Alle antwoorden van $naam_2 zijn op ;)";
}
else
{
   Hier staat die code waardoor ie uiteindelijk in de endless-loop belandt.   
}


Waarom belandt ie tóch in de endless-loop?
  donderdag 20 oktober 2005 @ 14:54:03 #282
125047 Lamme_Sterfkanarie
tweet tweet en dan ineens niet
pi_31580282
voor m'n forum gaf ik iedereen die kwam een sessie-id en die propte ik in de database. Bij elke visit update ik de lastvisit. Je kunt dus via een COUNT query iedereen die 5 geleden een pagina bezoek heeft mee laten tellen. En met een functie die een getal tussen de 1 en de 10 genereert gooi je bij de 1 er een query bij die oude sessies d'r uit gooit
Ik heb het godverdomme gehad met die onkunde van je!
pi_31580369
En nu mijn vraag:

Via reg_expresions maak ik van url's, [url=] en mailadressen een linkje.

Alleen wil ik met de emailadressen hetzelfde doen, als met url's gedaan wordt:


URL's zonder [url= replacen door [ url=$url]$url[/url]
en [ url=*]*[/url] replacen door html code (<a href="$url ~

daarvoor heb ik dit (volgens mij van SuperRembo):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
   
// http://foo.net => [url=http://foo.net]http://foo.net[/url]
   
'#(?<!\[url=)(http://.*?)(?=[.,?:;()<>]*(\s|$))#i'
        
=&gt; '[url=\1]\1[/url]',

   
// www.foo.net => [url=www.foo.net]http://www.foo.net[/url]
   
'#(?<!\[url=)(?<!http://)(www\..*?)(?=[.,?:;()<>]*(\s|$))#i'
        
=&gt; '[url=http://\1]\1[/url]',

   
// [url=http://foo.net]Foo[/url] => <a href="http://foo.net">Foo</a>
   
'#\[url=(https?://.*?)\](.*?)\[/url\]#i'      
        
=&gt; '<a href="\1">\2</a>',

   
// [url=foo.net]Foo[/url] => <a href="http://foo.net">Foo</a>
   
'#\[url=(.*?)\](.*?)\[/url\]#i'               
        
=&gt; '<a href="http://\1">\2</a>',
            
?>


Dit wil ik dus ook voor emailadressen: eerst 'losse amailadressen door een bbc code replacen: [ email=email]email[/email]

Alleen moeten de 'losse' emailadressen geen [email= bevatten

dus ik denk:
1
2
3
4
<?php
    
'#(?<!\[email=)([^@\s]+@(:?[-a-z0-9]+\.)+[a-z]{2,})#'
        
=&gt; '[email=$1]$1[/email]',
?>

Dus ik heb alleen dit extra toegeveogd (de oude code werkte perfect)
(?<!\[email=)

Maar zo wordt [email=blaat@nl.nl]blaat[/url] <a href=[email=blaat@nl.nl> [email=blaat@nl.n

Mijn vraag nu kort:
hoe krijg ik een preg_replace voor emailadressen die geen [email= bevatten.
pi_31580540
1$bericht = eregi_replace("([a-zA-Z0-9_-]+)@([a-zA-Z0-9\._-]+)(\.[a-zA-Z]+)", "<a href=mailto:\\1@\\2\\3>\\1@\\2\\3</a>", $bericht);


zo misschien? is alleen geen preg_replace
hij vangt op of er een emailadres gedumpt is en maakt er dan een link van
─_(º.0)_/─
pi_31580824
quote:
Op donderdag 20 oktober 2005 15:04 schreef vamos1 het volgende:

[ code verwijderd ]

zo misschien? is alleen geen preg_replace
hij vangt op of er een emailadres gedumpt is en maakt er dan een link van
Het van een emailadres een linkje maken is dus wel gelukt. Ik moet alleen voorkomen dat hij van een emailadres waar '[email=' voor staat, ook een emailadres van maakt
pi_31580885
ik heb mijn online-teller gevonden voor in combinatie met mijn leden...


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
<?php 
ob_start();
session_start();

//controleer of de sessie van het inloggen bestaat (in mijn geval is dan de memberid geregistreerd
if ( isSet ( $_SESSION['memberid'] ) ) 

    $iUser_id = $_SESSION['memberid']; 

else 

    $iUser_id = 0; 


//als men lid is, moet er dus worden gekeken wie het is,...
//ook al wordt onderaan alleen laten zien hoeveel er online zijn, kun je dit nog altijd aanpassen  
//naar wie er online zijn van de leden,.. verander de tabel naar die van jouw leden...
$rQueryUsernameBepalen = mysql_query ( "SELECT id, gbnaam FROM users WHERE id = ".$iUser_id ) or die ( mysql_error() );
$aQueryUsernameBepalen = mysql_fetch_assoc ( $rQueryUsernameBepalen ); 
$sUsername = $aQueryUsernameBepalen['gbnaam']; 


/* #### INSTELBARE VARIABELEN #### */ 

$sIpadres = $_SERVER['REMOTE_ADDR']; 
$sHuidigePagina = $_SERVER['HTTP_REFERER']; 
$sTime = time()+1800; // is 3 minuten 


$sQuerySelectOnline = "SELECT count(*) FROM online WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";  

$rQuerySelectOnline = mysql_query ( $sQuerySelectOnline );  

$aQuerySelectOnline = mysql_result ( $rQuerySelectOnline,0 );  

// wanneer het ipadres er nog niet instaat 

if ( $aQuerySelectOnline == 0 )  
{  
    $rQueryInsert = mysql_query ( "INSERT  
                                         INTO online ( ip, locatie, tijd, user_id, username ) 
                                   VALUES ('$sIpadres','$sHuidigePagina','$sTime', '$iUser_id', '$sUsername' ) " ) or die ( mysql_error() ); 
}  
else // het ipadres staat er dus wel in 
{  
    $rQueryUpdate = mysql_query ( "UPDATE online 
                                        SET locatie='".$_SERVER['HTTP_REFERER']."', tijd = '$sTime', user_id = '$iUser_id', username = '$sUsername' 
                                   WHERE ip = '".$_SERVER['REMOTE_ADDR']."'" ) or die ( mysql_error()); 
}  

$iHuidigeTijd = time();  

mysql_query("DELETE FROM online WHERE tijd < $iHuidigeTijd");  

$sQueryGastenOnline = "SELECT * FROM online WHERE user_id = 0";  
$rQueryGastenOnline = mysql_query ( $sQueryGastenOnline );  
$iAantalGastenOnline = mysql_num_rows ( $rQueryGastenOnline );  

$sQueryLedenOnline = "SELECT * FROM online WHERE user_id <> 0";  
$rQueryLedenOnline = mysql_query ( $sQueryLedenOnline );  
$iAantalLedenOnline = mysql_num_rows ( $rQueryLedenOnline );  


echo "Gasten: ".$iAantalGastenOnline."<br />";  
echo "Leden: ".$iAantalLedenOnline."<br />"; 

while ( $aQueryLedenOnline = mysql_fetch_assoc ( $rQueryLedenOnline ) ) 

 echo '<a href=#>'.$aQueryLedenOnline['naam'].'</a>,'; 

?> 

je moet natuurlijk wel eerst je eigen database-koppeling even maken
toch bedankt voor de hulp, misschien heeft iemand er wat aan...
bron: http://www.phpfreakz.nl/library.php?sid=19766
─_(º.0)_/─
pi_31581817
quote:
Op donderdag 20 oktober 2005 15:15 schreef the_disheaver het volgende:

[..]

Het van een emailadres een linkje maken is dus wel gelukt. Ik moet alleen voorkomen dat hij van een emailadres waar '[email=' voor staat, ook een emailadres van maakt
voor een gewone link maak ik gebruik van

$bericht = preg_replace("#\[link=\\"(.*?)\\"\](.*?)\[/link\]#si","<a target=_blank href=\"http://\\1\">\\2</a>", $bericht);

misschien dat je dat een beetje kunt ombouwen naar wat je nodig hebt?
ik denk alleen dat daar wat knutselwerk voor nodig is
─_(º.0)_/─
pi_31582087
quote:
Op donderdag 20 oktober 2005 15:58 schreef vamos1 het volgende:

[..]

voor een gewone link maak ik gebruik van

$bericht = preg_replace("#\[link=\\"(.*?)\\"\](.*?)\[/link\]#si","<a target=_blank href=\"http://\\1\">\\2</a>", $bericht);

misschien dat je dat een beetje kunt ombouwen naar wat je nodig hebt?
ik denk alleen dat daar wat knutselwerk voor nodig is
aanhalingstekens voor _blank?

Maar nee: dat heb ik ook wel, een preg_replace om een bcc code naar een link te replacen.

Om een emailadres naar een bcc code te replacen echter niet...
pi_31582734
Ik zie net dat mijn preg_replace ook voor url niet goed werkt. Als ik dit invoer:
[ url=http://www.nl.nl]http://w ww.nl.nl[/url] (zonder spaites)

krijg ik dit:<a href="http://www.nl.nl"><a href="http://http://www.nl.nl</a>">http://www.nl.nl</a>[/url]

Iemand een goede pagina wat alle reg_expr betekenen? op php.net is het niet erg duidelijk...
pi_31582742
quote:
Op donderdag 20 oktober 2005 14:53 schreef Siegfried het volgende:
Jongens ik blijf in de knoop zitten met mijn script..
[ code verwijderd ]

Waarom belandt ie tóch in de endless-loop?
Omdat dat if statement nooit true is

En als je niet weet hoe dat komt moet je even die 4 variabelen uit dat if statement printen zodat je kunt zien wat voor waardes ze bevatten. Op die manier kun je toch heel makkelijk zoiets debuggen?

Of zie ik wat over het hoofd?Ik heb je probleem niet helemaal gevolgd in je vorige posts
pi_31583544
quote:
Op donderdag 20 oktober 2005 16:44 schreef the_disheaver het volgende:
Ik zie net dat mijn preg_replace ook voor url niet goed werkt. Als ik dit invoer:
[ url=http://www.nl.nl]http://w ww.nl.nl[/url] (zonder spaites)

krijg ik dit:<a href="http://www.nl.nl"><a href="http://http://www.nl.nl</a>">http://www.nl.nl</a>[/url]

Iemand een goede pagina wat alle reg_expr betekenen? op php.net is het niet erg duidelijk...
die url-manier is PRECIES hetzelfde als mijn link-manier.......
en die werkt wel
─_(º.0)_/─
pi_31584003
quote:
Op donderdag 20 oktober 2005 17:32 schreef vamos1 het volgende:

[..]

die url-manier is PRECIES hetzelfde als mijn link-manier.......
en die werkt wel
mja, ik probeer hem nu zelf aan te passen... hopen dat het nu wel werkt (ik probeer nu items met {/url] eruit te filteren
pi_31584492
$bericht = preg_replace("#\[url=\\\"(.*?)\\\"\](.*?)\[/url\]#si","<a target=_blank href=\"http://\\1\">\\2</a>", $bericht);

of ligt dat nou aan mij?
─_(º.0)_/─
pi_31584548
jezus fok is sloom.....

bij mijn vorige post is het wel zo, dat je GEEN http:// moet gebruiken..
─_(º.0)_/─
pi_31586164
Ik heb een probleempje. Ik wil dat 'de user' een afbeelding kan uploaden naar mijn server. Die afbeelding moet dan vervolgens naar mij gemailt worden en weer van de server worden verwijderd. Dat uploaden is geen probleem. Een mailtje maken ook niet, maar de afbeelding toevoegen als bijlage is nog niet gelukt. PHP.net verwijst door naar een pagina van Zend, maar daar kom ik ook niet echt uit. Een heel verhaal over headers, bla bla, maar geen PHP voorbeeldje. Nu heb ik zelf 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
<?php
if ($_FILES['imagefile']['type'] == "image/jpeg")
{
    
copy ($_FILES['imagefile']['tmp_name'], "php_uploads/".$_FILES['imagefile']['name'])
    or die (
"Could not copy");
    echo
"Copy Done....";
}
else
{
    echo
"<br><br>";
    echo
"Could Not Copy, Wrong Filetype (".$_FILES['imagefile']['name'].")<br>";
}

//de hele zooi rondmailen

//ontvangen
$to = "ik@mijzelf.nl";

//onderwerp
$subject = "Hoppakee weer een plaatje.";

//bericht
$message = "Tralala, een plaatje van: ".$_POST["naam"];

//extra zooi
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "From: Mijn server <huhu@serverbak.nl>\r\n";

//en versturen die hap
mail($to, $subject, $message, $headers);
?>


Goed, nu moet dus nog die afbeelding als bijlage worden toegevoegd. Kan iemand mij hiermee helpen? En ik heb nog niet gekeken naar het verwijderen van de afbeelding van de server na het versturen van de mail, maar weet iemand dat toevallig uit z'n hoofd?
pi_31586768
verwijderen:

$afbeeldingsbestand = "images/blaat/blaat.gif";
unlink($afbeeldingsbestand);
pi_31586826
quote:
Op donderdag 20 oktober 2005 20:30 schreef the_disheaver het volgende:
verwijderen:

$afbeeldingsbestand = "images/blaat/blaat.gif";
unlink($afbeeldingsbestand);
Ik had hem net zelf gevonden, maar bedankt

Weet je ook hoe je de afbeelding als bijlage kan mailen
pi_31586894
quote:
Op donderdag 20 oktober 2005 20:33 schreef HuHu het volgende:

[..]

Ik had hem net zelf gevonden, maar bedankt

Weet je ook hoe je de afbeelding als bijlage kan mailen
nope
pi_31587171
misschien helpt deze usercomment? http://nl2.php.net/manual/en/ref.mail.php#55078

deze is denk ik beter: http://nl2.php.net/manual/en/ref.mail.php#54863

gewoon ff zoeken naar 'attachment' binnen de pagina van mail()
pi_31588331
quote:
Op donderdag 20 oktober 2005 20:45 schreef the_disheaver het volgende:
misschien helpt deze usercomment? http://nl2.php.net/manual/en/ref.mail.php#55078

deze is denk ik beter: http://nl2.php.net/manual/en/ref.mail.php#54863

gewoon ff zoeken naar 'attachment' binnen de pagina van mail()
Bedankt, ik zal er eens naar gaan kijken.
pi_31588750
Waaro mkan ik niet kopieren van mn klembord hier in snel reageren???
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')