Chandler | woensdag 28 september 2005 @ 20:40 | |||||
![]() cd niet bijgeleverd Vorige delen: [PHP] voor dummies - Deel 1 [PHP] voor dummies - Deel 2 [PHP] voor dummies - Deel 3 [PHP] voor dummies - Deel 4 [PHP] voor dummies - Deel 5 [PHP/(My)SQL] voor dummies - Deel 6 [PHP/(My)SQL] voor dummies - Deel 7 [PHP/(My)SQL] voor dummies - Deel 8 [PHP/(My)SQL] voor dummies - Deel 9 [PHP/(My)SQL] voor dummies - Deel 10 [PHP/(My)SQL] voor dummies - Deel 11 [PHP/(My)SQL] voor dummies - Deel 12 Zie ook: Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP | ||||||
Swetsenegger | woensdag 28 september 2005 @ 20:42 | |||||
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
Tabel Item
Nu wil ik op de frontpage de laatste 3 records uit tabel item, per catagorie. Het makkelijkst is zoiets als:
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? | ||||||
Nevermind | woensdag 28 september 2005 @ 20:46 | |||||
Volgens mij kun je het in één query doen door een LEFT JOIN te doen op `Catagorie`. categorie overigens? | ||||||
Swetsenegger | woensdag 28 september 2005 @ 20:48 | |||||
quote: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:stiekem heb ik helemaal geen tabel catagorie of categorie, maar heeft deze een compleet andere naam. Dit was echter makkelijker uitleggen ![]() | ||||||
Chandler | woensdag 28 september 2005 @ 20:50 | |||||
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 ![]() | ||||||
Swetsenegger | woensdag 28 september 2005 @ 21:49 | |||||
quote: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? | ||||||
SuperRembo | woensdag 28 september 2005 @ 22:14 | |||||
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. ![]()
| ||||||
Swetsenegger | woensdag 28 september 2005 @ 22:17 | |||||
quote:Ik ga 'm zometeen ff uitproberen ![]() Maar deze zinsnede begrijp ik even niet | ||||||
wonderer | woensdag 28 september 2005 @ 22:22 | |||||
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? | ||||||
Swetsenegger | woensdag 28 september 2005 @ 22:22 | |||||
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 ] | ||||||
SuperRembo | woensdag 28 september 2005 @ 22:35 | |||||
quote: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: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:Ai, ik hoopte dat dat bij het vereenvoudigde voorbeeld hoorde ![]() | ||||||
Swetsenegger | woensdag 28 september 2005 @ 22:41 | |||||
quote: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. | ||||||
JeRa | woensdag 28 september 2005 @ 22:51 | |||||
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 ![]() | ||||||
Swetsenegger | woensdag 28 september 2005 @ 22:58 | |||||
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 ![]() ![]() 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.)
-edit ![]() Swets..., de volgende keer ff dieper nadenken
Bedankt voor het meedenken! | ||||||
Chandler | donderdag 29 september 2005 @ 07:26 | |||||
SuperRembo, dat ziet er weer eens super Topf uit man!... wat een knowledge ![]() | ||||||
SuperRembo | donderdag 29 september 2005 @ 07:35 | |||||
Nog even ter verduidelijjking. Als je wel subquery's kan gebruiken, dan zou je de query zo schrijven:
| ||||||
Swetsenegger | donderdag 29 september 2005 @ 09:42 | |||||
quote: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. | ||||||
Darkomen | donderdag 29 september 2005 @ 10:16 | |||||
quote:Yups, ik dank ook veel aan hun ![]() | ||||||
Swetsenegger | donderdag 29 september 2005 @ 11:20 | |||||
quote:Ik zeg, we maken een walk of fame in de OP ![]() | ||||||
JeRa | donderdag 29 september 2005 @ 11:35 | |||||
Altijd baas boven baas, he ![]() ![]() | ||||||
Swetsenegger | donderdag 29 september 2005 @ 11:42 | |||||
quote:Van de tweakers heb ik ook een aantal keren goede suggesties gehad. Alleen zijn ze daar minder geduldig en uitleggerig ![]() | ||||||
dujour | vrijdag 30 september 2005 @ 11:17 | |||||
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 | ||||||
Lamme_Sterfkanarie | vrijdag 30 september 2005 @ 11:31 | |||||
index.php?id=link_edit&id=3 let op de & [ Bericht 77% gewijzigd door Lamme_Sterfkanarie op 30-09-2005 11:38:00 ] | ||||||
dujour | vrijdag 30 september 2005 @ 11:43 | |||||
aaah zo thanks man | ||||||
Lamme_Sterfkanarie | vrijdag 30 september 2005 @ 11:55 | |||||
ik zou het trouwens zo oplossen:
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. | ||||||
dujour | vrijdag 30 september 2005 @ 12:08 | |||||
thanks ik zal eens gaan proberen | ||||||
Swetsenegger | vrijdag 30 september 2005 @ 12:33 | |||||
quote:Of met een switch | ||||||
JeRa | vrijdag 30 september 2005 @ 13:14 | |||||
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 ![]() 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 ![]() | ||||||
Lamme_Sterfkanarie | vrijdag 30 september 2005 @ 13:16 | |||||
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 ![]() | ||||||
dujour | vrijdag 30 september 2005 @ 15:45 | |||||
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
Is dit een beetje goed of hebben jullie andere suggesties? | ||||||
JeRa | vrijdag 30 september 2005 @ 18:12 | |||||
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:
Maar zoals ik al zei, het ligt maar net aan wat je wilt controleren ![]() | ||||||
wonderer | vrijdag 30 september 2005 @ 18:35 | |||||
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? | ||||||
JeRa | vrijdag 30 september 2005 @ 18:40 | |||||
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 ![]() | ||||||
Chandler | vrijdag 30 september 2005 @ 18:55 | |||||
quote: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 ![]() | ||||||
wonderer | vrijdag 30 september 2005 @ 19:04 | |||||
quote: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... | ||||||
JeRa | vrijdag 30 september 2005 @ 19:22 | |||||
quote: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 ![]() Of je maakt natuurlijk een adminpanel in je gallery ![]() | ||||||
JeRa | vrijdag 30 september 2005 @ 19:30 | |||||
quote:Dat HAVING(COUNT()) gedoe, ik wist niet dat je dat als LIMIT kon gebruiken? ![]() | ||||||
wonderer | vrijdag 30 september 2005 @ 22:04 | |||||
quote: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.
Misschien kan ik hier wat mee? | ||||||
JeRa | vrijdag 30 september 2005 @ 22:33 | |||||
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 ![]() | ||||||
wonderer | vrijdag 30 september 2005 @ 23:51 | |||||
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. | ||||||
JeRa | zaterdag 1 oktober 2005 @ 00:01 | |||||
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 ![]() | ||||||
wonderer | zaterdag 1 oktober 2005 @ 00:23 | |||||
Hm, die 0777 weghalen bij mkdir en dan chmod(directory,0777) werkt WEL. Maar toch raar, zo'n omweg ![]() | ||||||
JeRa | zaterdag 1 oktober 2005 @ 09:17 | |||||
Van deze pagina:quote:Ik gok dat dat niet van toepassing is op chmod() ![]() | ||||||
BlueCurl | zaterdag 1 oktober 2005 @ 09:39 | |||||
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:
getfile.php:
Wat doe ik nu al fout? | ||||||
SuperRembo | zaterdag 1 oktober 2005 @ 09:47 | |||||
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. | ||||||
BlueCurl | zaterdag 1 oktober 2005 @ 09:49 | |||||
quote:bedankt. dat waren de twee fouten! het werkt nu! | ||||||
Swetsenegger | zaterdag 1 oktober 2005 @ 17:31 | |||||
Voor de echte nerds ![]() http://www.phpfreakz.nl/forum.php?forum=5&page=1 | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 11:51 | |||||
quote: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: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. ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 12:12 | |||||
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
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 ] | ||||||
SuperRembo | zondag 2 oktober 2005 @ 13:00 | |||||
quote:Als je hier nou meteen naar het juiste topic had gelinkt, dan had ik 'm meteen gesnapt. | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 13:09 | |||||
quote: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 ] | ||||||
SuperRembo | zondag 2 oktober 2005 @ 13:18 | |||||
Ik zit nu op ![]() Ik kom in de buurt van de 66 ![]() [ Bericht 47% gewijzigd door SuperRembo op 02-10-2005 15:36:48 ] | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 15:31 | |||||
quote:Vanavond weer eens kijken, maar 66 tekens is echt bizar weinig. niet vergeten dat je de laatste ?> mag weglaten he ![]() | ||||||
SuperRembo | zondag 2 oktober 2005 @ 15:38 | |||||
quote:Dan moet er wel weer een ; achter. 63! ![]() Zal dan maar ff reggen op dat forum ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 15:42 | |||||
quote:Dat zal ik maar doen. trouwens, je kan 'm mailen naar phpgolf [at] gmail.com | ||||||
SuperRembo | zondag 2 oktober 2005 @ 15:43 | |||||
Ik krijg wel 2 + (aantal niet-spaties) notices ![]() | ||||||
ikke_ook | zondag 2 oktober 2005 @ 15:44 | |||||
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! | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 15:46 | |||||
quote: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:Maar dat lukt me niet, en deze: quote: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 ] | ||||||
Nevermind | zondag 2 oktober 2005 @ 17:24 | |||||
Ik schaam me diep, 193 tekens ![]() Aangezien het geen enkele competitie is zal ik em posten:
(minus enters dus) Ik zal me beter moeten verdiepen in preg_replaces, anders wordt het echt niks ![]() -edit- 154 ![]()
[ Bericht 26% gewijzigd door Nevermind op 02-10-2005 17:44:19 ] | ||||||
SuperRembo | zondag 2 oktober 2005 @ 17:54 | |||||
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. | ||||||
Nevermind | zondag 2 oktober 2005 @ 18:14 | |||||
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- [ Bericht 3% gewijzigd door Nevermind op 02-10-2005 18:32:03 ] | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 18:18 | |||||
quote:Ik ben er ook niet goed in, maar je leert er wel een hoop handiheidjes mee ![]() De verkorte if notatie bijvoorbeeld ![]() quote: ![]() Die ken/kon ik niet. | ||||||
Nevermind | zondag 2 oktober 2005 @ 18:19 | |||||
quote:Inderdaad, bedankt voor de tip trouwens ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 18:29 | |||||
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 | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:12 | |||||
$c=chr($c & 0) waarom geeft dit altijd een spatie terug? | ||||||
JeRa | zondag 2 oktober 2005 @ 19:18 | |||||
Dat hangt maar net van de waarde van $c af ![]() | ||||||
Nevermind | zondag 2 oktober 2005 @ 19:20 | |||||
Ik kwam er achter dat je in for-loops ook direct resultaat kan teruggeven, weer wat geleerd. Daarmee kom ik op
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. | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:27 | |||||
quote:Ongeacht de waarde van $c geeft hij dus altijd 0 terug (en met chr() dus een spatie) | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:28 | |||||
quote: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 ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 19:28 | |||||
quote:Maar je doet '& 0', dus ik mag aannemen dat $c een integer is? Of is het een character? ![]() | ||||||
SuperRembo | zondag 2 oktober 2005 @ 19:31 | |||||
quote:Ik wil niet vervelden doen, maar klopt je output wel? Je moet wel rekening houden met de spaties.
| ||||||
SuperRembo | zondag 2 oktober 2005 @ 19:32 | |||||
quote:$c & 0 is altijd 0, net als $c and false altijd false is. | ||||||
Nevermind | zondag 2 oktober 2005 @ 19:32 | |||||
Ai, je hebt gelijk SuperRembo. Ik ga er later weer over verder denken ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:33 | |||||
quote: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 ![]() | ||||||
Light | zondag 2 oktober 2005 @ 19:34 | |||||
quote: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 | ||||||
JeRa | zondag 2 oktober 2005 @ 19:34 | |||||
-edit- | ||||||
Light | zondag 2 oktober 2005 @ 19:35 | |||||
quote:Er zit verschil tussen 'a' & 0 en 'a' & '0'. | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:37 | |||||
quote:Ja ik vat 'm nu, moet dus $c=$c&' ' zijn. -edit- nee dus ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 19:41 | |||||
Verder dan dat kom ik op het moment niet. 84 tekens inclusief <? en ?> ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:46 | |||||
quote:Hij doet het niet. | ||||||
JeRa | zondag 2 oktober 2005 @ 19:47 | |||||
quote:Wat doet hij niet? Hier draait ie prima? ![]() edit: met output, zie hieronder. | ||||||
JeRa | zondag 2 oktober 2005 @ 19:49 | |||||
86 tekens. ![]() | ||||||
Nevermind | zondag 2 oktober 2005 @ 19:51 | |||||
quote:Maak er dan
van, heb je 74 ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 19:54 | |||||
quote:In mijn afgunst van die constructie was ik 'm gewoon helemaal vergeten ![]() ![]() | ||||||
Nevermind | zondag 2 oktober 2005 @ 19:56 | |||||
Kun je niet iets toevoegen aan de pattern zodat ie case insensitive wordt en je het "strtolower"-stukje weg kan laten? | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:57 | |||||
ucfirst maakt van het eerste karakter van een string een hoofdletter. Ik begrijp je regexp niet ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 19:57 | |||||
quote:Case insensitive maken is makkelijk (i-modifier), maar de bron lowercase maken is een ander verhaal ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 19:58 | |||||
quote: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? | ||||||
JeRa | zondag 2 oktober 2005 @ 19:59 | |||||
quote:
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 | ||||||
Light | zondag 2 oktober 2005 @ 19:59 | |||||
Ik kom niet kleiner dan 67 tekens ![]() | ||||||
Nevermind | zondag 2 oktober 2005 @ 20:01 | |||||
quote:Je hebt gelijk, ik zat even mee te denken, maar ik heb veel te weinig ervaring met regexp om iets zinnigs toe te voegen ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 20:01 | |||||
quote:Ach fuck, natuurlijk. ? is 0 of 1, dus je $0 wordt letter+letter of letter+spatie+letter, waarbij de eerste van $0 hoofdletter wordt ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 20:03 | |||||
quote:Maar het is kennelijk niet dé oplossing ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 20:03 | |||||
quote:Post je code, misschien krijgen we er nog 5 vanaf om SuperRembo te verslaan ![]() | ||||||
SuperRembo | zondag 2 oktober 2005 @ 20:05 | |||||
quote:Die wil ik ook wel zien ![]() | ||||||
Light | zondag 2 oktober 2005 @ 20:06 | |||||
Ik heb er nog 65 van weten te maken ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 20:07 | |||||
SuperRembo, klopt het dat jouw code op je site staat? ![]() | ||||||
SuperRembo | zondag 2 oktober 2005 @ 20:13 | |||||
quote:Hmmm, ja. Heb 'm weer weggehaald. Had niet verwacht dat dat zo snel gevonden zou worden ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 20:13 | |||||
quote:Hele mooie oplossing, maar daar kunnen er nog 3 vanaf ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 20:21 | |||||
quote: ![]() Met uitleg graag ![]()
++$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 ] | ||||||
JeRa | zondag 2 oktober 2005 @ 20:23 | |||||
quote:Voor elke character wordt deze code ge-evalled:
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 ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 20:28 | |||||
quote: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 ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 20:30 | |||||
quote:wat de neuk is ++$u? | ||||||
SuperRembo | zondag 2 oktober 2005 @ 20:30 | |||||
Thx Light (en JeRa). Ik heb 'm nu in 61 tekens ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 20:31 | |||||
quote:$u = 0; $a = $u++; echo $a; $u = 0; $a = ++$u; echo $a; Voer deze code eens uit ![]() ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 20:33 | |||||
quote:Ja ik begrijp ++ ervoor en erachter wel. Maar waar komt $u vandaan ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 20:34 | |||||
quote: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 ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 20:38 | |||||
quote: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 | ||||||
JeRa | zondag 2 oktober 2005 @ 20:44 | |||||
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 ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 21:00 | |||||
quote: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 ] | ||||||
Light | zondag 2 oktober 2005 @ 21:06 | |||||
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. | ||||||
Light | zondag 2 oktober 2005 @ 21:13 | |||||
quote:Ik ben toch wel benieuwd waar er dan nog 3 weg zouden kunnen. | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 21:16 | |||||
quote:Sterker nog SR zegt op phpfreakz 'm in 59 te hebben ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 21:18 | |||||
quote:Klopt, ik had 'm iets aangedragen waardoor het geheel twee tekentjes kleiner kon, maar ik vond het nogal triviaal ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 21:30 | |||||
quote: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 ![]() | ||||||
JeRa | zondag 2 oktober 2005 @ 21:32 | |||||
quote:XOR'en gaat niet werken omdat je dan áltijd de character van case verandert, ongeacht wat het ervoor was ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 21:34 | |||||
quote: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 ![]() | ||||||
Light | zondag 2 oktober 2005 @ 21:51 | |||||
quote: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. | ||||||
Nevermind | zondag 2 oktober 2005 @ 21:58 | |||||
was next($_POST) al aangedragen als alternatief voor $_POST[string]? Weer twee winst ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 22:03 | |||||
quote: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 ] | ||||||
Light | zondag 2 oktober 2005 @ 22:18 | |||||
quote:Dan moeten er nog 3 af, ergens. | ||||||
Chandler | zondag 2 oktober 2005 @ 22:29 | |||||
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.
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 ![]()
tevens heb ik de op elkaar lijkende tabellen eventjes bij elkaar gezet. ![]() Alvast tnx.. | ||||||
Nevermind | zondag 2 oktober 2005 @ 22:29 | |||||
quote: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 ![]() | ||||||
Swetsenegger | zondag 2 oktober 2005 @ 22:45 | |||||
@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 ![]() 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. | ||||||
Nevermind | zondag 2 oktober 2005 @ 22:48 | |||||
quote: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
(dit is dus niet mijn code, maar dat lijkt me duidelijk) | ||||||
Light | zondag 2 oktober 2005 @ 23:04 | |||||
quote:Die next($_POST) werkt hier wel goed ![]() quote:Dan zijn goede indexen zeker van belang. De forumreactiestabel zal wel het predikaat "groot" meekrijgen, maar lijkt me toch nog redelijk snel ![]() | ||||||
SuperRembo | maandag 3 oktober 2005 @ 07:45 | |||||
@Chandler Waarom maak je niet een tabel als deze:
Dat scheelt zo een tabel of 8. | ||||||
Chandler | maandag 3 oktober 2005 @ 09:28 | |||||
@swetsenegger; je hebt gelijk denk ik. maar ik dacht dat kleine tabelletjes altijd sneller waren ![]() @SuperRembo; dat zou kunnen idd, zo'n tabel... ennuh propertyid zou je dan gebruiken voor een id voor referer, color, etc? neem ik aan. ![]() | ||||||
LeeHarveyOswald | maandag 3 oktober 2005 @ 09:37 | |||||
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! | ||||||
Chandler | maandag 3 oktober 2005 @ 09:53 | |||||
@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 ![]() | ||||||
LeeHarveyOswald | maandag 3 oktober 2005 @ 10:20 | |||||
quote:Tijdsduur filmpjes is variabel ![]() | ||||||
Chandler | maandag 3 oktober 2005 @ 10:35 | |||||
kan je toch ook in de database zetten? dan geef je die ook als variabel mee..!! | ||||||
LeeHarveyOswald | maandag 3 oktober 2005 @ 10:37 | |||||
quote:Zodat een redacteur eerst moet kijken hoelang zijn / haar filmpje is, en dat nog is extra in moet voeren ![]() | ||||||
Darkomen | maandag 3 oktober 2005 @ 11:45 | |||||
PHPGOLF: Heel cool, ik vraag me af wat het winnende script is, en euhm ik ga het niet eens proberen ![]() | ||||||
freiss | maandag 3 oktober 2005 @ 16:01 | |||||
Pff.. ik heb weer eens een probleempje met PHP, maar nu kom ik er niet echt uit. Ik heb de volgende code:
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. ![]() | ||||||
Lamme_Sterfkanarie | maandag 3 oktober 2005 @ 16:07 | |||||
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. | ||||||
Swetsenegger | maandag 3 oktober 2005 @ 16:09 | |||||
quote: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. | ||||||
Lamme_Sterfkanarie | maandag 3 oktober 2005 @ 16:11 | |||||
quote: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() | ||||||
freiss | maandag 3 oktober 2005 @ 16:17 | |||||
quote:nou, bij een ander document doet hij het wel met forum_$f oid. | ||||||
freiss | maandag 3 oktober 2005 @ 16:18 | |||||
quote: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. | ||||||
Lamme_Sterfkanarie | maandag 3 oktober 2005 @ 16:20 | |||||
je kunt je queries beter zo opzetten:
Dan zie je direct waar het mis gaat. | ||||||
freiss | maandag 3 oktober 2005 @ 16:21 | |||||
quote: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? | ||||||
JeRa | maandag 3 oktober 2005 @ 16:28 | |||||
quote:*mompelt iets over subqueries en het DROP-commando | ||||||
freiss | maandag 3 oktober 2005 @ 16:28 | |||||
quote:Overigens geeft die code een foutmelding als ik hem er op zet (en ja, dat van dat woei enz. heb ik weggehaald ![]() | ||||||
Lamme_Sterfkanarie | maandag 3 oktober 2005 @ 16:30 | |||||
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
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. | ||||||
freiss | maandag 3 oktober 2005 @ 16:30 | |||||
quote:en dan niet van dat hoort zo, maar een parse error. | ||||||
freiss | maandag 3 oktober 2005 @ 16:31 | |||||
quote:oh ok, ik zal het onthouden. | ||||||
freiss | maandag 3 oktober 2005 @ 16:34 | |||||
quote:hij doet het trouwens nu. dankje ![]() ![]() ![]() | ||||||
Swetsenegger | maandag 3 oktober 2005 @ 18:38 | |||||
quote: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 ![]() | ||||||
ikke_ook | maandag 3 oktober 2005 @ 18:45 | |||||
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 ![]() | ||||||
Swetsenegger | maandag 3 oktober 2005 @ 19:14 | |||||
quote:[code] -edit- Of je let even op de highlighting van je )'s ![]() | ||||||
Chandler | maandag 3 oktober 2005 @ 20:25 | |||||
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 ![]() | ||||||
SuperRembo | maandag 3 oktober 2005 @ 20:58 | |||||
quote: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. | ||||||
Swetsenegger | maandag 3 oktober 2005 @ 21:11 | |||||
quote:Dat is redelijk eenvoudig op te lossen met style="cursor:pointer;cursor:hand;" | ||||||
JeRa | maandag 3 oktober 2005 @ 21:29 | |||||
Wat is er mis met een <a>? ![]() | ||||||
Swetsenegger | maandag 3 oktober 2005 @ 21:38 | |||||
quote: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 ] | ||||||
Chandler | maandag 3 oktober 2005 @ 22:14 | |||||
@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? ![]() | ||||||
Swetsenegger | maandag 3 oktober 2005 @ 22:17 | |||||
quote:In IE 7 zie ik ook geen handje quote: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.
Dit was niet direkt op jou van toepassing, maar als klikbaar maken van blokken discussie | ||||||
JeRa | maandag 3 oktober 2005 @ 22:34 | |||||
Juist ![]() ![]() | ||||||
LeeHarveyOswald | maandag 3 oktober 2005 @ 23:13 | |||||
quote:poging 2 ![]() | ||||||
wonderer | dinsdag 4 oktober 2005 @ 00:41 | |||||
Even nieuwsgierig, kan ik iemand anders' zijn session be-eindigen? Of moet ie dan per se een pagina met session destroy laden? | ||||||
Chandler | dinsdag 4 oktober 2005 @ 08:06 | |||||
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 ![]() | ||||||
JeRa | dinsdag 4 oktober 2005 @ 10:52 | |||||
quote: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). | ||||||
wonderer | dinsdag 4 oktober 2005 @ 13:01 | |||||
quote: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 ![]() | ||||||
Lamme_Sterfkanarie | dinsdag 4 oktober 2005 @ 13:08 | |||||
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 | ||||||
Chandler | dinsdag 4 oktober 2005 @ 15:15 | |||||
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 ![]() Leuk idee? | ||||||
wonderer | dinsdag 4 oktober 2005 @ 16:03 | |||||
quote: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 ![]() | ||||||
Nevermind | woensdag 5 oktober 2005 @ 03:49 | |||||
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
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 | ||||||
SuperRembo | woensdag 5 oktober 2005 @ 07:52 | |||||
Gewoon doorheen loopen. Bijhouden hoeveel je gevonden hebt. Voor 't gemak de vorige kaart onthouden en als 't een aas is omzetten naar 1.
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 ] | ||||||
Lamme_Sterfkanarie | woensdag 5 oktober 2005 @ 08:37 | |||||
quote: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. | ||||||
wonderer | woensdag 5 oktober 2005 @ 15:21 | |||||
quote: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! | ||||||
wonderer | woensdag 5 oktober 2005 @ 15:27 | |||||
Kan iemand me uitleggen wat
doet? (uit het script van SuperRembo hierboven) | ||||||
Darkomen | woensdag 5 oktober 2005 @ 16:40 | |||||
ze;fde a;s
alleen dan korter geschreven ![]() | ||||||
wonderer | woensdag 5 oktober 2005 @ 16:47 | |||||
quote:Aha! Grappig... *gaat dat eens bestuderen* | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 17:12 | |||||
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:
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? | ||||||
ikke_ook | woensdag 5 oktober 2005 @ 17:20 | |||||
Waarom niet in 1 tabel waarbij je het parentid meegeeft? | ||||||
Schanulleke | woensdag 5 oktober 2005 @ 17:24 | |||||
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? | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 17:30 | |||||
quote:Omdat ik producten ook aan een hoofditem of level 1 item moet kunnen koppelen. Of begrijp ik je verkeerd? | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 17:32 | |||||
quote:Heb je hier wat aan? http://www.phpfreakz.nl/library.php?sid=4194 | ||||||
Schanulleke | woensdag 5 oktober 2005 @ 17:39 | |||||
Dat moet me inderdaad wel redelijk verder helpen. Ga ik even mee stoeien. Bedankt Swets! | ||||||
ikke_ook | woensdag 5 oktober 2005 @ 18:08 | |||||
quote: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 | ||||||
Nevermind | woensdag 5 oktober 2005 @ 18:20 | |||||
quote:Haha, nee ![]()
| ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 18:35 | |||||
quote: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 ] | ||||||
ikke_ook | woensdag 5 oktober 2005 @ 18:54 | |||||
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 | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 19:08 | |||||
quote: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. | ||||||
ikke_ook | woensdag 5 oktober 2005 @ 19:14 | |||||
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. | ||||||
Nevermind | woensdag 5 oktober 2005 @ 19:19 | |||||
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. | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 19:24 | |||||
quote:Ja het moet sneller kunnen, want feitelijk is het hetzelfde als dit met nog een extra laag (en in 1 tabel ipv twee) | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 19:36 | |||||
quote:Mjah, ook hier is je diepte beperkt door het aantal kolommen. Betekent altijd een database aanpassing. quote:Zoiets zat ik ook te denken. bij elke node geef ik het volledige path (in id's) naar de uiteindelijke level 0 parent:
Dit is wel in php in elkaar te sleutelen, hoewel het makkelijker zou zijn wanneer het voorgesorteerd uit mysql komt rollen ![]() | ||||||
ikke_ook | woensdag 5 oktober 2005 @ 19:44 | |||||
Die van mij is niet beperkt door het aantal kolommen hoor ![]() En zo zou je de hele structuur dan dus kunnen printen:
| ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 19:52 | |||||
quote: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 | ||||||
ikke_ook | woensdag 5 oktober 2005 @ 19:59 | |||||
zoiets en dan
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 ] | ||||||
Lamme_Sterfkanarie | woensdag 5 oktober 2005 @ 20:06 | |||||
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.
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
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? | ||||||
SuperRembo | woensdag 5 oktober 2005 @ 20:18 | |||||
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. | ||||||
ikke_ook | woensdag 5 oktober 2005 @ 20:25 | |||||
quote:Klopt ja, stond ook al in het linkje dat ik gaf dat dat recursieve niet perfect zou zijn. | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 20:34 | |||||
quote: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? | ||||||
SuperRembo | woensdag 5 oktober 2005 @ 20:57 | |||||
quote: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. | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 21:02 | |||||
quote: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. | ||||||
Swetsenegger | woensdag 5 oktober 2005 @ 21:05 | |||||
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. | ||||||
Light | woensdag 5 oktober 2005 @ 22:55 | |||||
quote:Met nog een paar aanpassingen, en eens goed tellen, ben ik op 59 tekens gekomen ![]() | ||||||
Swetsenegger | donderdag 6 oktober 2005 @ 08:35 | |||||
quote: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.
(horloges en sieraden zijn dus trees, waarbij sieraden nog geen subitems heeft) En dan heb ik nog niet eens nagedacht over items verwijderen ![]() quote:Stoer! PLaatsen op phpfreakz. Ben benieuwd of jouw methode hetzelfde is als die van SUperRembo ![]() | ||||||
Light | donderdag 6 oktober 2005 @ 18:12 | |||||
quote:Daar had ik 'm gisteravond al geplaatst ![]() ![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 13:17 | |||||
quote: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 ![]()
dat komt doordat de query op naam zoekt uiteraard. Iemand enig idee hoe ik deze kan verbouwen zodat dubbele namen geen problemen geven? | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 13:47 | |||||
quote:Ik was weer veel te moeilijk aan het denken
Opgelost ![]() | ||||||
Chandler | maandag 10 oktober 2005 @ 17:37 | |||||
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? ![]() | ||||||
Chandler | maandag 10 oktober 2005 @ 17:56 | |||||
en nog iets vaags. Ik heb een functie gemaakt.
en die functie roep ik normaal aan met
maaruh daarop krijg ik geen error, maar wel als ik dit doe
Why? ik vat um niet, alle uppercase / lowercase klopt ![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 18:31 | |||||
quote:Je bedoelt zoiets als 640*480 800*600 1024*768 1280*960 1280*1024 (dit is een afwijkende en typische TFT resolutie) 1600*1200 | ||||||
ikke_ook | maandag 10 oktober 2005 @ 18:49 | |||||
or die() dus ipv or | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 19:40 | |||||
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. | ||||||
Chandler | maandag 10 oktober 2005 @ 19:49 | |||||
@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 ![]() | ||||||
Chandler | maandag 10 oktober 2005 @ 19:55 | |||||
@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)
etc.. en dan die plus en of min gebruiken om menu's toe tevoegen en of te verwijderen ofzo?! ![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 19:56 | |||||
quote:Mijn lijstje is aardig compleet hoor ![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 20:00 | |||||
quote: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. | ||||||
Chandler | maandag 10 oktober 2005 @ 20:10 | |||||
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
en dat werkte best, echter zag dat er weer niet uit ![]() | ||||||
Chandler | maandag 10 oktober 2005 @ 20:11 | |||||
@Swets; dat lijstje is idd aardig compleet maar er zijn volgens mij nog veel meer modes (1900??) etc? ![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 20:16 | |||||
quote:
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. | ||||||
SuperRembo | maandag 10 oktober 2005 @ 20:18 | |||||
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. | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 20:21 | |||||
quote: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 | ||||||
Chandler | maandag 10 oktober 2005 @ 20:24 | |||||
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
dus stel je zet een item tussen
dan wordt dat stukje dus
0:0 (1) staat voor 0 = ID 0 = PARENT_ID (1) = sorterings positie ![]() | ||||||
Chandler | maandag 10 oktober 2005 @ 20:25 | |||||
@SuperRembo & @Swets; dan ga ik gewoon checken of het nummerieke stukken zijn en is dat het geval dan is het goed.![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 20:28 | |||||
"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. | ||||||
Chandler | maandag 10 oktober 2005 @ 20:31 | |||||
hoe bedoel jij hierarchistische data? heb je een voorbeeld? | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 20:36 | |||||
quote:
Zo staat het in de tabel ![]() http://www.sitepoint.com/article/hierarchical-data-database/2 http://dev.mysql.com/tech(...)erarchical-data.html | ||||||
Chandler | maandag 10 oktober 2005 @ 20:40 | |||||
lft? en rgt? leg je tabel eens uit?! | ||||||
Chandler | maandag 10 oktober 2005 @ 20:50 | |||||
@ swets: Waarom is Swetsenegger een Lul? ![]() | ||||||
Tiemie | maandag 10 oktober 2005 @ 20:56 | |||||
quote:Left Right? ![]() | ||||||
Chandler | maandag 10 oktober 2005 @ 20:59 | |||||
o mijn god ![]() ![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 21:07 | |||||
quote: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. | ||||||
JeRa | maandag 10 oktober 2005 @ 21:51 | |||||
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 ![]() | ||||||
Swetsenegger | maandag 10 oktober 2005 @ 22:02 | |||||
quote: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
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 ![]() | ||||||
Chandler | dinsdag 11 oktober 2005 @ 05:05 | |||||
ps mijn probleem is reeds gefixt ivm $this-> er voor te zetten.. leuk classes ![]() | ||||||
ikke_ook | dinsdag 11 oktober 2005 @ 08:50 | |||||
quote:'s nachts moet je slapen ipv programmeren man! ![]() | ||||||
Swetsenegger | woensdag 12 oktober 2005 @ 09:06 | |||||
Fok zoekt devvers: De abonnementen, hoe staat het er mee? | ||||||
JeRa | woensdag 12 oktober 2005 @ 13:29 | |||||
quote: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. | ||||||
sh4dow | woensdag 12 oktober 2005 @ 16:28 | |||||
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:
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? | ||||||
JeRa | woensdag 12 oktober 2005 @ 17:11 | |||||
@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:
| ||||||
sh4dow | donderdag 13 oktober 2005 @ 11:58 | |||||
@JeRa, thnx! het is gelukt. | ||||||
Lamme_Sterfkanarie | donderdag 13 oktober 2005 @ 12:38 | |||||
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. | ||||||
Light | dinsdag 18 oktober 2005 @ 08:06 | |||||
Een klein en subtiel schopje om dit topic weer makkelijk vindbaar te maken ![]() | ||||||
JeRa | dinsdag 18 oktober 2005 @ 12:33 | |||||
quote:Iemand? ![]() | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 13:15 | |||||
Ok, ik zit weer te klunzen.. Kom er even niet uit.. ![]() Ik heb dit:
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 ] | ||||||
SuperRembo | dinsdag 18 oktober 2005 @ 13:27 | |||||
| ||||||
Siegfried | dinsdag 18 oktober 2005 @ 13:42 | |||||
Kijk aan, daar heb ik wat aan! Maar hoe exclude ik meerdere getallen? | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 13:57 | |||||
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? | ||||||
JeRa | dinsdag 18 oktober 2005 @ 13:57 | |||||
Zoiets? ![]() | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 14:15 | |||||
Als dat werkt dan ben ik je heel erg dankbaar! Het ziet er in elk geval erg logisch uit ![]() | ||||||
JeRa | dinsdag 18 oktober 2005 @ 14:23 | |||||
quote:Werken, dat doet het ![]() ![]() | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 14:27 | |||||
Dat komt goed, thnx! | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 15:43 | |||||
Moet een session variabele reeds bestaan, alvorens ik " array_push" kan gebruiken om een gebruikt nummer aan de array toe te voegen? Nee toch? | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 16:21 | |||||
Ik krijg het niet werkend ![]()
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? ![]() | ||||||
JeRa | dinsdag 18 oktober 2005 @ 17:07 | |||||
$_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 ![]()
te doen ![]() | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 17:12 | |||||
Hmm.. Stom van me ![]() Hoe moet ik dit dan werkend krijgen, want onderstaande code geeft alsnog dezelfde foutmelding:
| ||||||
JeRa | dinsdag 18 oktober 2005 @ 17:37 | |||||
Mijn fout, is_array moet je veranderen in isset en dan werkt het wel ![]() | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 18:06 | |||||
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? | ||||||
SuperRembo | dinsdag 18 oktober 2005 @ 19:41 | |||||
quote:Je zegt het zelf al bijna
| ||||||
SuperRembo | dinsdag 18 oktober 2005 @ 19:47 | |||||
quote:Wat bedoel je precies? Redabel voor wie? | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 19:57 | |||||
quote:Hmm.. Ok ![]() Maar hoe tel ik hoeveel waardes er in een array zitten? Kan dit ook gewoon met count? | ||||||
JeRa | dinsdag 18 oktober 2005 @ 20:26 | |||||
quote: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? | ||||||
SuperRembo | dinsdag 18 oktober 2005 @ 20:52 | |||||
Oh op die manier. Ik heb werkelijk geen idee ![]() | ||||||
Light | dinsdag 18 oktober 2005 @ 21:47 | |||||
quote:Ja, count is juist om te tellen hoeveel waardes er in een array zitten.
[ Bericht 2% gewijzigd door Light op 18-10-2005 23:23:58 ] | ||||||
JeRa | dinsdag 18 oktober 2005 @ 21:56 | |||||
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 ] | ||||||
Siegfried | dinsdag 18 oktober 2005 @ 22:24 | |||||
Hmm.. Toch blijft hij steeds in de endless-loop uitkomen:
Wat is er fout aan de if? Sorry voor de vele vragen, maar ik kom er dus echt niet uit.. | ||||||
Twisted2000 | woensdag 19 oktober 2005 @ 09:21 | |||||
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.
| ||||||
SuperRembo | woensdag 19 oktober 2005 @ 12:50 | |||||
Dat kan met return.
| ||||||
Darkomen | woensdag 19 oktober 2005 @ 22:23 | |||||
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:
om de foto te laten zien ook:
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. | ||||||
JeRa | woensdag 19 oktober 2005 @ 22:54 | |||||
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 ![]() | ||||||
Light | woensdag 19 oktober 2005 @ 23:27 | |||||
quote:Is het type "blob" niet handiger in dit geval? | ||||||
Darkomen | donderdag 20 oktober 2005 @ 08:46 | |||||
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. | ||||||
Desdinova | donderdag 20 oktober 2005 @ 10:35 | |||||
je hebt verschillende maten blobs ![]() 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? | ||||||
Darkomen | donderdag 20 oktober 2005 @ 10:46 | |||||
gewoon de <br>'s door \n laten vervangen? | ||||||
JeRa | donderdag 20 oktober 2005 @ 10:49 | |||||
Worden alle grotere afbeeldingen naar dezelfde grootte 'ingekort' of is dat willekeurig? | ||||||
Darkomen | donderdag 20 oktober 2005 @ 10:51 | |||||
quote:Longblob en het uploaden gaat wel goed | ||||||
Desdinova | donderdag 20 oktober 2005 @ 10:57 | |||||
quote: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? | ||||||
Darkomen | donderdag 20 oktober 2005 @ 11:02 | |||||
ja sorry, dat klopt, ik bedoel ook eigenlijk alleen voor het inlezen in de textarea. spaties kan ik ff niks over zeggen | ||||||
Lamme_Sterfkanarie | donderdag 20 oktober 2005 @ 11:03 | |||||
om enters in tekst mee te pakken kun je nl2br() gebruiken | ||||||
Darkomen | donderdag 20 oktober 2005 @ 11:09 | |||||
uiteraard | ||||||
vamos1 | donderdag 20 oktober 2005 @ 14:31 | |||||
ik zit met een vraagje... nogal een onhandig iets maar goed.. Hoe doe ik dit: quote: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... | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 14:43 | |||||
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... | ||||||
vamos1 | donderdag 20 oktober 2005 @ 14:51 | |||||
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 ![]() | ||||||
vamos1 | donderdag 20 oktober 2005 @ 14:52 | |||||
ik zie dat ik een foutje heb gemaakt bij het voorbeeldscriptje dat er staat... hmm.. ff kijken of het zo werkt | ||||||
Siegfried | donderdag 20 oktober 2005 @ 14:53 | |||||
Jongens ik blijf in de knoop zitten met mijn script..
Waarom belandt ie tóch in de endless-loop? | ||||||
Lamme_Sterfkanarie | donderdag 20 oktober 2005 @ 14:54 | |||||
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 | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 14:56 | |||||
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):
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:
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. | ||||||
vamos1 | donderdag 20 oktober 2005 @ 15:04 | |||||
zo misschien? is alleen geen preg_replace hij vangt op of er een emailadres gedumpt is en maakt er dan een link van | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 15:15 | |||||
quote: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 | ||||||
vamos1 | donderdag 20 oktober 2005 @ 15:18 | |||||
ik heb mijn online-teller gevonden voor in combinatie met mijn leden...
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 | ||||||
vamos1 | donderdag 20 oktober 2005 @ 15:58 | |||||
quote: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 ![]() | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 16:10 | |||||
quote: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... | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 16:44 | |||||
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... | ||||||
ikke_ook | donderdag 20 oktober 2005 @ 16:44 | |||||
quote: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 | ||||||
vamos1 | donderdag 20 oktober 2005 @ 17:32 | |||||
quote:die url-manier is PRECIES hetzelfde als mijn link-manier....... en die werkt wel | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 17:54 | |||||
quote:mja, ik probeer hem nu zelf aan te passen... hopen dat het nu wel werkt (ik probeer nu items met {/url] eruit te filteren | ||||||
vamos1 | donderdag 20 oktober 2005 @ 18:20 | |||||
$bericht = preg_replace("#\[url=\\\"(.*?)\\\"\](.*?)\[/url\]#si","<a target=_blank href=\"http://\\1\">\\2</a>", $bericht); of ligt dat nou aan mij? ![]() | ||||||
vamos1 | donderdag 20 oktober 2005 @ 18:23 | |||||
jezus fok is sloom..... bij mijn vorige post is het wel zo, dat je GEEN http:// moet gebruiken.. | ||||||
HuHu | donderdag 20 oktober 2005 @ 20:00 | |||||
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:
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? | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 20:30 | |||||
verwijderen: $afbeeldingsbestand = "images/blaat/blaat.gif"; unlink($afbeeldingsbestand); | ||||||
HuHu | donderdag 20 oktober 2005 @ 20:33 | |||||
quote:Ik had hem net zelf gevonden, maar bedankt ![]() Weet je ook hoe je de afbeelding als bijlage kan mailen ![]() | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 20:35 | |||||
quote:nope ![]() | ||||||
the_disheaver | donderdag 20 oktober 2005 @ 20:45 | |||||
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() | ||||||
HuHu | donderdag 20 oktober 2005 @ 21:27 | |||||
quote:Bedankt, ik zal er eens naar gaan kijken. | ||||||
ikke_ook | donderdag 20 oktober 2005 @ 21:38 | |||||
Waaro mkan ik niet kopieren van mn klembord hier in snel reageren??? |