Swetsenegger | zondag 4 juli 2004 @ 23:35 |
Na aanleiding van: [XHTML] Herhalende tekst in XHTML Heb ik toch maar eens een PHP boek aangeschaft, waar ik toch al een uur in heb gelezen. En inderdaad.... include was de oplossing ![]() Nu wat anders. Op basis van OS wil ik een andere stylesheet gebruiken. Nu wist ik al dat $HTTP_USER_AGENT deze info (meestal) heeft en ik vond een prachtig stukje code: quote:Maar ja... dat is op browser, en ik heb de OS info nodig uit HTTP_USER_AGENT. Sterker nog... ik hoef alleen te weten of er linux in de $HTTP_USER_AGENT voorkomt en zo ja wil ik een alternatieve CSS gebruiken. Uiteraard zal ik rustig verder lezen in m'n php boek, maar als iemand een hint heeft... ![]() | |
sylvesterrr | zondag 4 juli 2004 @ 23:42 |
quote:linux gevonden in $_SERVER['HTTP_USER_AGENT'] --> style-linux.css linux NIET gevonden in $_SERVER['HTTP_USER_AGENT'] --> style-non-linux.css | |
devzero | zondag 4 juli 2004 @ 23:42 |
quote:voorbeeld HTTP_USER_AGENT voor opera quote:voorbeeld HTTP_USER_AGENT voor Mozilla quote:Zoeken naar de substring Linux lijkt me al voldoende dus. Alleen HTTP_USER_AGENT kan, net als referer, natuurlijk handmatig gewijzigd worden door de client | |
Lucille | zondag 4 juli 2004 @ 23:44 |
Je kan de de environment variable HTTP_USER_AGENT opvragen, die geeft de volledige inhoud. De PHP versie geeft alleen de browser, maar met getenv("HTTP_USER_AGENT") zou je alles moeten zien. | |
sylvesterrr | zondag 4 juli 2004 @ 23:45 |
quote:In mijn geval: $_SERVER["HTTP_USER_AGENT"] = Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040614 Firefox/0.9 | |
Swetsenegger | zondag 4 juli 2004 @ 23:46 |
quote:Ah! $_SERVER als variabele (?) die zocht ik | |
sylvesterrr | zondag 4 juli 2004 @ 23:47 |
quote:<? header('Content-type: text/plain'); var_dump($_SERVER); ?> Zie je meteen de inhoud van de array $_SERVER | |
Swetsenegger | zondag 4 juli 2004 @ 23:49 |
quote:Thanks...morgen weer eens klooien ![]() | |
Berkery | zondag 4 juli 2004 @ 23:55 |
Ik ben wel benieuwd waarom je voor Linux een ander CSS wil hebben ![]() | |
devzero | zondag 4 juli 2004 @ 23:58 |
quote:Andere fonts misschien? | |
Lucille | maandag 5 juli 2004 @ 00:11 |
quote:Op zich een aardig idee, maar niet altijd safe, want de fontinstallatie hangt af van de distro en zelfs van de applicatie. Zo kan een mozilla browser bij dezelfde fontaanroep een ander uiterlijk hebben dan bijvoorbeeld konquerer. En mozilla op redhat een andere dan mozilla op suse. | |
Berkery | maandag 5 juli 2004 @ 00:13 |
...en daar heb je geen andere style sheet voor nodig. | |
Swetsenegger | maandag 5 juli 2004 @ 08:20 |
Inderdaad andere fonts. Gewoon standaard sans, maar 10 px sans is stukken groter dan 10px tohama. of verdana. | |
Swetsenegger | maandag 5 juli 2004 @ 08:20 |
quote:Want...? | |
Light | maandag 5 juli 2004 @ 08:24 |
En als ik nu wel gewoon Verdana en Tohoma fonts heb in Linux, waarom zou ik die dan niet te zien mogen krijgen op jouw website? | |
Swetsenegger | maandag 5 juli 2004 @ 08:26 |
quote:Die kan je wel zien. Waarom zou je die niet kunnen zien? Het probleem is alleen de fontsize. Niet de fonts op zich | |
Light | maandag 5 juli 2004 @ 08:52 |
quote:Je wekt de indruk andere fonts te willen gebruiken voor Linux-gebruikers. quote:Ik heb niet de indruk dat fonts in Linux een andere grootte hebben dan in Windows. Op een paar uitzonderingen na, daar is het duidelijk kleiner. | |
Swetsenegger | maandag 5 juli 2004 @ 08:55 |
quote:Nee, een andere fontsize quote:In wat ik zie is Sans 10px duidelijk groter dan verdana 10px. Ik maak dus gebruik van dezelfde stylesheet, alleen met kleinere fonts. | |
Light | maandag 5 juli 2004 @ 09:10 |
quote:Sans is een font family, Verdana een font van die family. Het hoeft niet hetzelfde te zijn, maar dat kan wel natuurlijk. quote:Tip: Je kunt ook meer dan 1 style sheet gebruiken. Dus 2 voor de fontgroottes en alles wat daarmee direct te maken heeft (al dan niet OS afhankelijk), en 1 voor de andere dingen. | |
Swetsenegger | maandag 5 juli 2004 @ 09:19 |
quote:Ik ben me bewust dat ik alternatieve stylesheets kan gebruiken. Maar ik wil puur voor Linux een ander stylesheet. | |
QuietGuy | maandag 5 juli 2004 @ 09:26 |
Zie http://nl.php.net/function.get-browser Je kan het OS, etc. allemaal opvragen | |
Swetsenegger | dinsdag 6 juli 2004 @ 21:13 |
strstr($_SERVER['HTTP_USER_AGENT'], 'linux') werkt trouwens niet... stristr wel ![]() | |
sylvesterrr | dinsdag 6 juli 2004 @ 21:30 |
quote:En weet je ook al waarom? ![]() quote:http://nl2.php.net/manual/en/function.strstr.php | |
Roonaan | dinsdag 6 juli 2004 @ 21:48 |
met onderstaande kan je alle environment variabelen uitlezen, alsmede config settings <?php phpinfo(); ?> ![]() | |
QuietGuy | dinsdag 6 juli 2004 @ 21:51 |
quote:Geeft gewoon een output als: quote: | |
Swetsenegger | dinsdag 6 juli 2004 @ 21:51 |
quote:ja... case sensitive ![]() en ik weet ook dankzij jou code wat ? doet... zoek 1 'iets'.... | |
Light | dinsdag 6 juli 2004 @ 21:54 |
quote:En in sommige browsers kun je ook instellen hoe ze zichzelf noemen, en of het OS al dan niet moet worden meegestuurd. | |
Berkery | dinsdag 6 juli 2004 @ 21:55 |
quote:"Standaard sans" kan bij elke gebruiker weer een ander font zijn. Ligt aan de instellingen. | |
QuietGuy | dinsdag 6 juli 2004 @ 21:57 |
quote:Helemaal betrouwbaar is het nooit, maar als men dit zelf modificeert moeten ze ook niet zeiken als ze verkeerd herkend worden ![]() | |
Light | dinsdag 6 juli 2004 @ 21:59 |
quote:Da's wel weer waar natuurlijk. | |
Swetsenegger | dinsdag 6 juli 2004 @ 22:03 |
quote:Dat begrijp ik.... | |
robh | dinsdag 6 juli 2004 @ 22:05 |
Ah. Ik probeer uit te vogelen of er ook zoiets als een destructor bestaat voor php classes.. Iemand die dat weet? | |
Light | dinsdag 6 juli 2004 @ 22:10 |
quote:Uit de PHP documentatie: quote:Lijkt me duidelijk. | |
robh | dinsdag 6 juli 2004 @ 22:15 |
quote:Thnx. | |
Swetsenegger | dinsdag 6 juli 2004 @ 23:29 |
Cool! Ik heb mijn eerste volledig zelf uitgevonden functionele PHP script geschreven: quote: quote: | |
Light | dinsdag 6 juli 2004 @ 23:36 |
quote:En wat is dan het nut van die +100000000? | |
Swetsenegger | dinsdag 6 juli 2004 @ 23:37 |
quote:experation. Een last visit gaat natuurlijk niet werken als het cookie expired zodra je de browser sluit ![]() | |
Light | dinsdag 6 juli 2004 @ 23:44 |
quote:Dat klinkt wel logisch ![]() ![]() | |
Swetsenegger | woensdag 7 juli 2004 @ 08:42 |
quote: ![]() 10000000/3600=2777 uur/24=115 dagen Hoezo 7 jaar? | |
Light | woensdag 7 juli 2004 @ 09:24 |
quote:Ah. Dat is dan waarschijnlijk het resultaat geweest van het feit dat ik niet meer helemaal helder was. 2777/365,25=7 (en een beetje) 115 dagen klinkt al een stuk beter als expire tijd. | |
Swetsenegger | woensdag 7 juli 2004 @ 11:01 |
quote:Gelukkig bevat een dag meer dan 1 uur ![]() | |
Swetsenegger | woensdag 7 juli 2004 @ 20:51 |
Ok, code wat geoptimaliseerd:quote:Maar.... Blijkbaar staat er een engels OS op de server, want date stuurt engelse waarden naar mijn cookie. En de site is Nederlands... Dus dat levert zoiets op als "Uw laatste bezoek was Wednesday 7 July 2004 20.32" Dus ik denk, kom ik maak gewoon een vertaalslag. Eerst dacht ik slim te zijn want ik ging er van uit dat de array $_COOKIE gewoon geindexeerd zou zijn, dus [0] de dag, [1] de datum, [2] de maand, etc. Maar er is natuurlijk maar 1 index... [date] met de waarde Wednesday 7 July, etc. Niet getreurt, ik dacht het dan maar anders aan te pakken. Met strstr de waarde van de dag uit lezen, en indien Monday zet ik $day=Maandag en indien Tuesday $day=Dinsdag, en zo hetzelfde voor de maand. Uiteindelijk print ik dan "Uw laatste bezoek was $day $date $month $year $time" Dus aan de slag gegaan: quote:Dat werkt... Maar nu komt de datum... en ja 7 in het engels is 7 in het nederlands. Het enige wat ik dus moet doen is de eerste integer uit $_COOKIE['date'] filteren en toewijzen aan de variabele $date... Maar hoe doe ik dat? Dan komt de maand, dat is weer redelijk simpel, maar vervolgens het jaar en de tijd.... hint... anybody? | |
Swetsenegger | woensdag 7 juli 2004 @ 20:55 |
en kan iemand de titel aanpassen naar [PHP] voor dummies ![]() | |
sylvesterrr | woensdag 7 juli 2004 @ 20:57 |
<? setlocale(LC_ALL, 'nl_NL'); ?> Staat de datum in je cookie opgeslagen als "Wednesday 7 July 2004 20.32" ? Dan is strtotime de juiste functie die je nodig hebt. | |
keeper | woensdag 7 juli 2004 @ 21:00 |
Van http://nl.php.net/datequote: | |
Swetsenegger | woensdag 7 juli 2004 @ 21:01 |
quote:Wat doet dit? quote:even lezen. | |
sylvesterrr | woensdag 7 juli 2004 @ 21:06 |
Met strtotime() kun je "Wednesday 7 July 2004 20.32" omzetten naar een unix-timestamp. Zo'n unix-timestamp kun je weer formatten met date().quote:http://nl2.php.net/manual/en/function.setlocale.php | |
Swetsenegger | woensdag 7 juli 2004 @ 21:30 |
quote:"Uw laatste bezoek was Wednesday 07 July 2004, 21:29 " ![]() Wat de neuk..... -edit- gevonden ![]() http://www.codebase.nl/index.php/command/viewcode/id/188 quote:Blijkbaar is het een windows server.... | |
QuietGuy | donderdag 8 juli 2004 @ 14:38 |
quote: ![]() | |
Murray | vrijdag 9 juli 2004 @ 13:15 |
Is er ook een php equivalent voor de HTML Base tag? Ik heb al m'n bestanden in /map staan, alleen één staat er in / . Links kun je dan in html weer werkend krijgen met <base href="map/" />, alleen zijn m'n includes nu verneukt.. Is dat op te lossen? | |
SwiffMeister | vrijdag 9 juli 2004 @ 13:17 |
quote:Ik heb een fantastische hint voor je: post dit op tweakers die wete alles over dit probleem | |
sylvesterrr | vrijdag 9 juli 2004 @ 14:59 |
quote:*hint* lees de reacties ook even door *hint* | |
Murray | vrijdag 9 juli 2004 @ 17:21 |
quote: | |
sylvesterrr | vrijdag 9 juli 2004 @ 17:42 |
quote:http://nl2.php.net/manual/en/function.ini-set.php include_path | |
Swetsenegger | zaterdag 10 juli 2004 @ 11:31 |
quote:Er zitten zat zeer getalenteerde PHP'ers op fok. En die zijn in de regel relaxter met n00bs (mits ze de juiste vragen stellen) dan op GoT. | |
Light | zaterdag 10 juli 2004 @ 12:28 |
quote:Bedoel je zoiets? | |
Murray | zaterdag 10 juli 2004 @ 13:17 |
quote:Misschien... ![]() Het lukt me namelijk nog niet. ![]() Goed ik heb 3 mappen: test/ test/map1/ test/map2/ In map1 staat home.php: <?php include("../map2/blaat.txt"); ?> in map2 staat blaat.txt: het werkt.... ![]() Zie: http://members.lycos.nl/elevation81/test/map1/home.php alleen nu wil in home.php in test/ zetten.. Wat vul ik dan in bij include path? *** Ik heb nu het volgende in test/home.php: <?php ini_set("include_path", "./map1"); include("../map2/blaat.txt"); ?> Maar dat werkt niet: http://members.lycos.nl/elevation81/test/home.php *** include("../map2/blaat.txt"); veranderen naar include("map2/blaat.txt"); wil ik niet want in de bestanden die ik include gebruik ik ook weer include's.. die dan dus niet werken. | |
Swetsenegger | zaterdag 10 juli 2004 @ 18:20 |
Nou.... Ik ben wel redelijk trots op mezelf... Verleden week zondag een php boek gekocht en nu heb ik toch een leuk gastenboek/response systeem in elkaar geknutseld ![]() www.123swets.com/response.php | |
Swetsenegger | zaterdag 10 juli 2004 @ 23:42 |
En nu kan ik al quoten ook ![]() Binnenkort is het beter als replique... Ik heb dus mijn response system ook maar vast een naam gegeven... TjapTjoy™ © 2004 Swetsenegger | |
devzero | zondag 11 juli 2004 @ 00:03 |
quote: ![]() ![]() | |
Swetsenegger | zondag 11 juli 2004 @ 00:09 |
quote: ![]() Mjah, voor iemand die een week geleden niets van php afwist vind ik het toch best redelijk ![]() | |
fotoloog | zondag 11 juli 2004 @ 00:11 |
quote:Welk boek is het Swets,en heb je evt een isbn nr? M'n zoon heeft het ook te pakken! | |
devzero | zondag 11 juli 2004 @ 00:14 |
quote:Het ziet er goed uit. Ik heb ook nog steeds het voornemen om php een beetje door te spitten, maar ben nooit verder gekomen dan de basics (aan de andere kant, het lijkt wel veel op perl wat ik wel kan). | |
Swetsenegger | zondag 11 juli 2004 @ 00:15 |
quote:Snel op weg - PHP voor het world wide web Auteur is Larry Ulman. ISBN: 90-430-0901-6 Het is een duidelijk boek, met veel voorbeelden maar niet goedkoop. Maar ik moet er wel bij zeggen dat ik vroegah redelijk in Basic en Assembly heb zitten rommelen. Als je geen enkele programmeer ervaring hebt, wordt het wel lastig denk ik ![]() | |
Swetsenegger | zondag 11 juli 2004 @ 00:17 |
quote:Als je redelijk wat programmeer ervaring hebt, je niet vreemd opkijkt van if (then) else. Je een variabele van een constante weet te onderscheiden en bij integer niet denkt aan een oprecht mens, is het een appeltje-eitje... De basics dan ![]() -edit- het is de syntax welke het moeilijk maakt. | |
fotoloog | zondag 11 juli 2004 @ 00:18 |
quote:Die kleine is redelijk slim(2 vwo) Dank je ! | |
devzero | zondag 11 juli 2004 @ 00:25 |
quote:Wat ik vervelend aan php vind, is dat je je variabelen niet hoeft te declareren. Type-foutjes in je variabele namen (en die wil je juist duidelijk houden ala $bezoekers_gemiddelde) worden dan uiterst moeilijk op te sporen. (vanuit unix shell) shell> php <?php $variable = 10; echo $variabele*2; ?> 0 [ Bericht 1% gewijzigd door devzero op 11-07-2004 00:26:54 (kromme zin verbeterd) ] | |
sylvesterrr | zondag 11 juli 2004 @ 09:26 |
quote:Output: quote:I love error_reporting(E_ALL) [ Bericht 9% gewijzigd door sylvesterrr op 11-07-2004 09:50:05 ] | |
Swetsenegger | zondag 11 juli 2004 @ 09:30 |
Wat Sylvester zegt. En daarnaast... lekker makkelijk juist!... Gewoon $naam= value. Het is allemaal zo logisch... het lijkt wel ![]() ![]() | |
devzero | zondag 11 juli 2004 @ 10:07 |
quote:Bingo, die zocht ik ![]() quote:Persoonlijk vind ik dat een lelijke constructie. Dan nog maar liever ${naam} ![]() | |
Swetsenegger | zondag 11 juli 2004 @ 10:42 |
quote:Moeten foutmeldingen wel aan staan in de php.ini Anders voeg je voor de error reporting het volgende toe: ini_set(display_errors',1); | |
Swetsenegger | zondag 11 juli 2004 @ 10:49 |
Toch ff hulp nodig. Met str_replace kan ik bepaalde waarden veranderen. bv :quote vervang je door wat anders. Maar nu wil ik een string van/tot iets vervangen. Ik weet de van, en de tot, maar niet wat er tussen staat (bv ik wil :quote blablabla :/quote vervangen door [..]) Hoe doe ik dat? | |
sylvesterrr | zondag 11 juli 2004 @ 10:49 |
quote: ![]() | |
sylvesterrr | zondag 11 juli 2004 @ 10:51 |
quote:http://nl2.php.net/manual/en/function.preg-replace.php http://nl2.php.net/manual/en/function.ereg-replace.php Tip: download SMF/PHPBB/IPB ofzo, zodat je even kan afkijken. ![]() | |
Roonaan | zondag 11 juli 2004 @ 10:51 |
quote:$str = substr($str, 0, $van).$replace.substr($str, $tot); quote:Performance gericht scripten is tegenwoordig geen onderdeel van de opleiding meer? ![]() | |
sylvesterrr | zondag 11 juli 2004 @ 10:54 |
quote:1. Welke opleiding? ![]() 2. Eerlijk gezegd vind ik jouw methode niet om aan te zien. ![]() | |
Roonaan | zondag 11 juli 2004 @ 10:57 |
quote:1. Zelfstudie. Tegenwoordig wil men niet meer goed scripten, alleen maar werkend. 2. Want? 2x strpos + die regel is gewoon sneller dan het opstarten van je regexp engine. Daarnaast levert het regexpen vaak een onduidelijkheid in je code op als je het later wilt teruglezen. Je kan in één oogopslag zien wat er gebeurt bij de substr.$t.substr methode, wat je bij het regexpen altijd een moment nadenken kost en een secure check of je misschien niet vergeten bent een \ een quote of een ^ bent vergeten te lezen waardoor de betekenis 100% anders is dan je eerst had gedacht. | |
Swetsenegger | zondag 11 juli 2004 @ 10:58 |
quote:ff kijken of ik het begrijp... ik heb.... $quote_invoer=$row['invoer']; Maar daar kan dus al een [.quote]blabla[./quote] in staan. Ik wil dus quotes in quotes vermijden, net als hier op fok. Dus het wordt dan $quote_invoer=substr($quote_invoer,0,[.quote]).$weetnietwathiermoet($quote_invoer,[./quote]); ![]() | |
Roonaan | zondag 11 juli 2004 @ 11:01 |
quote: ![]() $quote_start = strpos($quote_invoer, '[.quote]'); $quote_einde = strpos($quote_invoer, '[./quote]', $quote_start); if($quote_start !== false && $quote_einde !== false) $quote_invoer = substr($quote_invoer, 0, $quote_start).'[..]'.substr($quote_invoer, $quote_einde); | |
sylvesterrr | zondag 11 juli 2004 @ 11:07 |
quote: ![]() quote:Weegt dat op tegen de onduidelijkheid van 2x strpos + die regel? quote:Eén woord: documenteren ![]() quote:Als je lang genoeg met regexps bezig bent, kun je je regexp best makkelijk herkennen. ![]() quote:Met alle respect hoor, maar is dat niet de schuld van de scripter zelf? ![]() | |
Swetsenegger | zondag 11 juli 2004 @ 11:19 |
quote:Even ontleden, want gewoon copy paste is niet voldoende.... Ok, variabele quote_start wordt dan [.quote] quote_einde wordt.... [./quote]... maar wat doet die $quote_start daar ![]() als quote_start niet gelijk is aan 'false EN "e_einde niet gelijk is aan 'false'... dan wordt quote_invoer gelijk aan quote_invoer vanaf positie 0 t/m positie quote_start + [..] + quote_invoer vanaf quote _einde... | |
sylvesterrr | zondag 11 juli 2004 @ 11:22 |
-laat maar- | |
Swetsenegger | zondag 11 juli 2004 @ 11:24 |
quote:jou oplossing ziet er simpeler uit. Alleen weet ik dus niet wat er tussen de [.quote] en [./quote] staat... | |
Roonaan | zondag 11 juli 2004 @ 11:25 |
quote:StrPos is de php versie van de java methode string.indexOf. De eerste param, is de haystack, de tweede de needle. De derde ($quote_start) geeft aan vanaf welke index er gezocht mag worden. Als er bijvoorbeeld [./quote] quote:Jups. StrPos geeft false terug als een substring niet gevonden wordt. Als je dit niet eerst test, gebeuren er mogelijk rare dingen (omdat false bij casting naar een int gelijk wordt gezet aan 0 geloof ik) | |
Swetsenegger | zondag 11 juli 2004 @ 11:47 |
quote:aha, ok dus $quote_einde = strpos($quote_invoer, '[./quote]', $quote_start); zegt zoek in quote_invoer naar [.quote] vanaf de waarde van quote_start quote_start = quote_invoer VANAF [.quote] quote_einde=quote_invoer VANAF [./quote] $quote_invoer = substr($quote_invoer, 0, $quote_start).'[..]'.substr($quote_invoer, $quote_einde); quote_invoer = quote_invoer vanaf 0 tot (en met?)[.quote]+[..]+[./quote] tot het einde.... Maar volgens mij levert dit: [.quote]Op 11-07 zei Swets bladiebla[.quote][..][./quote][./quote] en niet [.quote]Op 11-07 zei Swets bladiebla[..][./quote] | |
Swetsenegger | zondag 11 juli 2004 @ 12:02 |
quote:Hmz, niet helemaal: [.quote]Op zondag 11 juli 2004, 12:00 schreef test het volgende: [..][./quote] [./quote] | |
Light | zondag 11 juli 2004 @ 12:03 |
quote:Maar hoe zit dat dan als je een tekst hebt met [.quote] en dan nog een keer [.quote], dan gevolgd door een [./quote] en om alles af te sluiten weer een [./quote]? En om het leuker te maken kun je ook nog meerdere quotes neerzetten natuurlijk. quote:0 == "" == false, da's allemaal waar. Maar 0 === "" is false. En 0 === false en "" === false ook. | |
Swetsenegger | zondag 11 juli 2004 @ 12:07 |
quote:Mjah, in principe voorkom ik nu dat er nooit meer dan 2 keer een [.quote] en [./quote] in de tabel komt te staan. Als mensen handmatig TTC (das mijn variant van UBB codes ![]() Wanneer iemand gewoon 'quote' klikt en zijn aanvulling erbij zet niet. Behalve dan dat ik met roonaans code een [./quote] extra overhou.... | |
Light | zondag 11 juli 2004 @ 12:14 |
quote:Tja, je weet natuurlijk nooit wat mensen invoeren quote:$quote_invoer = substr($quote_invoer, 0, $quote_start).'[..]'.substr($quote_invoer, $quote_einde+8); Dan begin je niet meer op de plek van die [./quote] met je tweede substring, maar 8 plaatsen verder. Dan zou je precies die [./quote] gehad moete hebben. | |
Swetsenegger | zondag 11 juli 2004 @ 12:17 |
quote:OE, die is mooier dan mijn verzonnen oplossing: $quote_invoer=str_replace('[/quote]','',$quote_invoer); (ik zie dat je al rekening hebt gehouden met de punt ![]() | |
Swetsenegger | zondag 11 juli 2004 @ 12:20 |
Alleen begrijp ik niet dat quote_start WEL goed gaat (en niet tot en met [.quote]) en quote_einde niet ![]() | |
sylvesterrr | zondag 11 juli 2004 @ 12:24 |
quote:strpos geeft de positie van het begin van die string. | |
Swetsenegger | zondag 11 juli 2004 @ 12:34 |
quote:ja, maar in geval van quote_start toch ook tot en met [.quote]? Dat begrijp ik tenminste uit de beschrijving op php.net | |
Light | zondag 11 juli 2004 @ 13:00 |
quote:quote_start geeft aan waar de [.quote] begint. Maar quote_start wordt als lengte gebruikt in substr. En omdat we altijd bij nul beginnen te tellen klopt het weer precies. Quote_start geeft dus niet alleen aan waar [.quote] begint maar ook hoeveel tekens er voor [.quote] staan, en dat gebruik je ![]() | |
Swetsenegger | zondag 11 juli 2004 @ 13:10 |
quote:Yep, ik zie het nu. Weer een hoop geleerd vandaag | |
Swetsenegger | maandag 12 juli 2004 @ 13:41 |
Nog een vraag. In mijn reactie systeem/gastenboek gaat alles met een POST naar dezelfde php. (Dus het formulier in 'response.php' submit de invoer naar 'response.php' waar het dan verwerkt wordt. Dit heet het nadeel dat wanneer ik een f5 doe ik het prachtige pop-upje krijg: Deze pagina kan niet worden vernieuwd zonder opnieuw de gegevens te verzenden... Klik je dan op retry wordt de submit twee keer gepost. Dat wil ik voorkomen. Nu heb ik al slim helemaal onderaan in het script alle relevante variabelen ge- unset, maar daar trekt de browser zich niets van aan. Hoe dan? | |
Roonaan | maandag 12 juli 2004 @ 13:44 |
Na het verzenden gewoon meteen redirecten. header('Location: index.php'); | |
Swetsenegger | maandag 12 juli 2004 @ 13:45 |
quote:eh... snap ik niet. Wat redirect ik? Ik wil die mensen wel op die pagina houden ![]() | |
Roonaan | maandag 12 juli 2004 @ 13:49 |
quote:Ah okee. Het idee is dat je via die header() functie tegen de browser zegt dat die naar een andere locatie gaat. Evn denken. Jij wil dat die op dezelfde pagina blijft (response.php) maar dat hij als het waren het POST gebeuren vergeet. Als je dan header('Location: response.php') doet, dan ontvangt de browser dit, die vervolgens response.php opnieuw van de server inleest als GET request: Browser -> Server: POST response.php?bericht=....enz Server->Browser: Header:Location: response.php Browser -> Server GET response.php Als iemand dan F5 doet is de laatst geladen pagina die GET response.php en ben je dus van het POST verhaal af. /brakke uitleg. | |
Swetsenegger | maandag 12 juli 2004 @ 14:00 |
quote:Ik snappum wel... ff testen, want dit zou precies zijn wat ik nodig heb ![]() | |
Swetsenegger | maandag 12 juli 2004 @ 14:26 |
Hmz, header werkt alleen voor alle HTML? Dus alleen zo...: <?php header("location: blabla"); ?> <html> <head> ....... </html> | |
Swetsenegger | maandag 12 juli 2004 @ 16:07 |
Iemand een idee hoe ik voorkom dat ik met F5 twee maal hetzelfde bericht plaats? | |
Ali Salami | maandag 12 juli 2004 @ 16:22 |
Controle of hetzelfde al in de db staat van die user, binnen een bepaalde tijdsperiode ![]() | |
mschol | maandag 12 juli 2004 @ 16:32 |
quote:er mag voor een header helemaal geen output zijn wil je dat wel gebruik dan include() | |
mschol | maandag 12 juli 2004 @ 16:33 |
quote:waarom met een tijdsperiode?? das niet nodig... | |
Roonaan | maandag 12 juli 2004 @ 16:35 |
quote:Dit is op te lossen door output_buffering te gebruiken. Dan wordt alle output opgeslagen en laat je die aan het einde pas doorsturen naar de browser. Zo kan je je header info altijd plaatsen: <?php ob_start(); //starten output buffering ?> <html> <head> ....... </html> <?php header("location: blabla"); ob_end_flush();// output buffering stoppen en alles doorsturen naar de client. ?> Output buffering heeft een aantal basis functies die je het meest zult gebruiken als je het gaat gebruiken ooit: ob_start(); starten ob_end_flush(); stoppen en doorgeven naar client ob_end_clean(); stoppen en wegdonderen ob_get_contents(); inhoud van de huidige buffer opvragen (String) | |
Ali Salami | maandag 12 juli 2004 @ 16:42 |
quote:M.i. wel. Ten eerste omdat je heus wel dubbele berichten mag plaatsen. Zou mooi zijn als ik een post in januari plaats en dat ik, wanneer ik in februari weer eenzelfde post plaats, de meldign krijg dat ik een dubbel bericht plaats. Daarnaast vergroot het de snelheid van de query ook. | |
Lord_Of_Darkness | maandag 12 juli 2004 @ 22:18 |
gewoon als je reply.php opent sessie starten, waneer je post verwijderd hij die sessie, ram je op F5 dan bestaat die sessie dus niet meer, dus moet je eerst weer naar de oude pagina... simpel truukje | |
Swetsenegger | maandag 12 juli 2004 @ 23:24 |
quote:Die had ik ook al ergens gelezen inderdaad. Daar ga ik nog mee aan de slag, want de kans op een dubbelpost is redelijk beperkt. Vandaag heb ik eerst een preview optie ingebouwd ![]() | |
Nkjez | dinsdag 13 juli 2004 @ 00:19 |
tvp (moet PHP leren ![]() | |
Swetsenegger | dinsdag 13 juli 2004 @ 15:15 |
quote:Met deze extra regel: while(stristr($quote_invoer,'[quote]')){ Werkt het prima ![]() | |
Roonaan | dinsdag 13 juli 2004 @ 15:34 |
moet je er wel een escape uit de loop bij maken ![]() if($quote_start !== false && $quote_einde !== false) $quote_invoer = substr($quote_invoer, 0, $quote_start).'[..]'.substr($quote_invoer, $quote_einde); else { break;} vor als er [.quote][/.quote][.quote] staat | |
Swetsenegger | dinsdag 13 juli 2004 @ 15:37 |
quote:Hmz, ja voor een 'halve' quote zeg maar..... Inderdaad wel verstandig. | |
Swetsenegger | woensdag 14 juli 2004 @ 10:26 |
Even een snel vraagje. Voordat ik hem zelf schrijf, bestaat er een PHP functie welke een URL uit een string vist waar naast de URL nog meer info instaat? Op php.net zie ik het niet zo snel. parse_url, maar dat is volgens mij bedoelt voor een string waar ALLEEN een url instaat? | |
ToBe | woensdag 14 juli 2004 @ 10:31 |
=edit= keek niet goed | |
uniekje | woensdag 14 juli 2004 @ 10:37 |
Kijk eens op www.regexlib.com voor een passende regular expression voor URLs... misschien dat je die kunt gebruiken... | |
Roonaan | woensdag 14 juli 2004 @ 10:41 |
quote:Hoe vind het onderscheid tussen url en info plaats? Neem aan een spatie of iets dergelijks? | |
Swetsenegger | woensdag 14 juli 2004 @ 10:48 |
quote:Ik heb nu dit en dat werkt: quote:tenminste... zolang er maar 1 url in de string staat. Voor een tweede moet ik denk ik gaan werken met een for lus en dan de waarde in een array zetten.... maar dat heb ik nog niet helemaal door, dus dat wordt zoeken ![]() -edit- en uiteraard moet ik nog wat verzinnen voor mailto (op basis van de @ en dan negatief tot de spatie en positief tot de spatie) en heel misschien probeer ik ook url's als forum.fok.nl op te vangen. hoewel dat lastig wordt. Ow ja, het werkt ook niet wanneer je een url invoert en op submit ramt... want dan ontbreekt de spatie na de .com of .nl of .org ![]() [ Bericht 9% gewijzigd door Swetsenegger op 14-07-2004 10:54:02 ] | |
Roonaan | woensdag 14 juli 2004 @ 10:54 |
Voorstel doet: Je maakt een tweede variabele uitvoer, waar je het reeds verwerkte gedeelte in opslaat. $uitvoer = ''; //in het begin is de uitvoer leeg while(($url_start = strpos($invoer, 'www')) !== false) //loopen zolang er www staat. { $url_einde = strpos($invoer, ' ', $url_start); if($url_start !== false && $url_einde !== false) { $url = substr($invoer, $url_start, $url_einde); $uitvoer .= substr($invoer, 0, $url_start).'<a href="http://'.$url.'" rel="external">'.$url.'</a>'; $invoer = substr($invoer, $url_einde); } elseif($url_start !== false) //url aan het einde van de invoer { $uitvoer .= '<a href="http://'.$url.'" rel="external">'.$url.'</a>'; $invoer = ''; } else break; } $invoer = $uitvoer.$invoer; //restje eraan vast plakken. Maar een reguliere expressie is denk ik makkelijker, omdat je dan ook alle ftp en http die mogelijk al wel geplaatst zijn ook te pakken krijgt. | |
Da_Koen | woensdag 14 juli 2004 @ 10:56 |
Ik denk dat je dat het beste kunt doen met http://nl.php.net/manual/en/function.preg-match.php , maar dan moet je wel de regular expressions snappen, wat mij nog niet helemaal gelukt is...... | |
Swetsenegger | woensdag 14 juli 2004 @ 11:00 |
quote:Zo ff beter bekijken, maar wat je feitelijk voorstelt is de $invoer strippen op url's en stukje bij beetje aangepast voor urls plakken in $uitvoer.... Uiteindelijk is $invoer leeg en $uitvoer gevuld. dus quote: | |
sylvesterrr | woensdag 14 juli 2004 @ 11:01 |
quote:Vind jij dit overzichtelijk? ![]() quote:Zeker weten. | |
Swetsenegger | woensdag 14 juli 2004 @ 11:02 |
quote:Ja dat begrijp ik ook nog niet erg ![]() "zich verdiepen gaat" | |
Roonaan | woensdag 14 juli 2004 @ 11:03 |
Dat was toch ook de bedoeling? Maar inderdaad je gaat aan $invoer knabbelen en elk hapje eindigt op een url. Voor de smaak kauw je even extra op die url met een pepermuntje erbij voordat je hem doorslikt. Aan het eind houd je óf een url over, of nog een kruimeltje. De uitvoer is dan de invoer met de extra pepermuntjes. ![]() | |
Swetsenegger | woensdag 14 juli 2004 @ 11:06 |
quote:Ja precies ![]() Maar ik zal eens kijken naar regular expressions, want dat lijkt me in dit geval makkelijker. En anders is jouw optie perfect. | |
Swetsenegger | woensdag 14 juli 2004 @ 12:33 |
RegExp hulp gezocht ![]() Ik heb nu: quote:Dit geeft als output quote:Ok, die extra spatie in de href snap ik... maar waar is de 'e' van 'er' gebleven ![]() Enne... dit werkt maar 1 keer... Dus twee url's in de tekst levert maar 1 href op ![]() Waar ga ik de mist in? | |
Swetsenegger | woensdag 14 juli 2004 @ 13:24 |
Dit werkt al met meerdere url's quote:Nu die laatste spatie er nog uit... | |
Swetsenegger | woensdag 14 juli 2004 @ 13:39 |
En dit is 'm! $preg_test = preg_replace("/(www*(.*?))\s/i",'<a href="http://\1" rel="external">\1</a> ',$invoer); print("<div class=\"response\">$preg_test</div>"); Ik zal ff (proberen) uit te leggen wat het doet... We zoeken van www TOT EN MET de eerste whitespace en er mag alles tussenstaan. Case-insensitive: ("/(www*(.*?))\s/i", van deze zoekactie BEWAREN we vanaf www TOT de eerste whitespace: ("/(www*(.*?))\s/i", *trots* | |
Roonaan | woensdag 14 juli 2004 @ 13:57 |
en wat gebeurt er met de mogelijk voorafgaande http:// als mensen die intypen?![]() | |
Swetsenegger | woensdag 14 juli 2004 @ 14:15 |
quote:Geen moer ![]() Dat moet ik nog rechttrekken. Nog een probleempje. Ik verwacht een spatie na de url. Wanneer die er niet staat.... Dus bij deze zin: Nu worden alle adressen goed omgezet, zowel www.fok.nl als www.123swets.com gebeurt er dus niets met www.123swets.com ![]() Ik kan verdorie alleen geen 'OR's gebruiken in reguliere expressies. anders liet ik OF naar een \s OF naar een $ (einde string) kijken. Dat krijg ik alleen nog gezeik wanneer iemand netjes het voorbeeld zinnetje eindigt met een . ![]() En HIER werkt dat wel... hoe doet die Breuls dat verdomme ![]() | |
Roonaan | woensdag 14 juli 2004 @ 14:39 |
Waarom kan je geen or's gebruiken dan? (\s|$) | |
Swetsenegger | woensdag 14 juli 2004 @ 14:59 |
quote:Dat ga je niet menen ![]() is | gewoon or? *vloekt zachtjes binnensmonds* ff testen ![]() | |
Swetsenegger | woensdag 14 juli 2004 @ 15:03 |
Dat werkt!!!! mail heb ik ook al... nu alleen nog wanneer iemand de regel met een punt afsluit. en het lullige is... punten komen vaker voor in url's ![]() | |
Swetsenegger | woensdag 14 juli 2004 @ 15:15 |
Ik wilde alleen een simpel gastenboekje op mijn site... Leek me een leuk project om PHP te leren. Ondertussen begint het wel een geil stukje software te worden: Posten, preview van je post, quoten, www en mail wordt automatisch omgezet naar http en mailto hrefs, smiley's, ik als beheerder kan WEL html tags gebruiken anderen niet, controle op lege invoer, waarschuwing bij verkeerd gebruik van [.quote].... Ik raak een beetje door features heen ![]() | |
Roonaan | woensdag 14 juli 2004 @ 15:58 |
Emailnotificatie? xml/rss stream voor je newsreader | |
Swetsenegger | woensdag 14 juli 2004 @ 16:01 |
quote:Ik krijg al een mail wanneer iemand een bericht post. Die was ik vergeten ![]() Misschien een sorteer optie. | |
woutabest | woensdag 14 juli 2004 @ 17:28 |
Oke dan ga ik nu ff mijn dummie-kwaliteiten op het php-gebied demonstreren: ![]() Waarom pakt mijn computer de extensie .php niet? Hij ziet hem als ongeldig. | |
Swetsenegger | woensdag 14 juli 2004 @ 17:34 |
quote:Als je op internet een .php pagina bekijkt, of wanneer je thuis op je eigen PC een php pagina wilt bekijken welke je zelf gemaakt hebt? | |
woutabest | woensdag 14 juli 2004 @ 17:39 |
die ik zelf net gemaakt heb (tutorial start, 1 echootje ![]() | |
Swetsenegger | woensdag 14 juli 2004 @ 17:45 |
quote:Die moet je wel bekijken in je PHP directory. Wat heb je nodig. Op je PC moet PHP draaien. PHP is niet normaal HTML welke je in je browser kunt openen. Normaal gesproken wanneer je op internet een php pagina opent heeft de server deze door de php parser getrokken, alle PHP code uitgevoerd en het resultaat is dan HTML welke naar jouw browser gestuurt wordt. Wanneer je dus thuis het resultaat wilt bekijken moet je eerst php installeren. Er zijn diverse simpele all-in-one pakketen met PHP, apache en mysql. Ik zelf heb foxserv gedownload. http://www.foxserv.net/portal.php Die installeer je. Op je PC heb je dan een directory 'foxserv' en daarin een folder 'www' Plaats je php pagina in die ww folder, dus bv C:/foxserv/www/mijnpagina/index.php Deze kan je nu in de browser bekijken door http://localhost/mijnpagina/index.php te tikken. | |
mschol | woensdag 14 juli 2004 @ 17:46 |
quote:als je em wilt bewerken moet je em eff openen met notepad wil je de output zien moet je even het bestandje benaderen vanaf je php server (bijvoorbeeld apache met php module) | |
woutabest | woensdag 14 juli 2004 @ 17:48 |
quote: ![]() ![]() | |
woutabest | woensdag 14 juli 2004 @ 18:28 |
![]() ![]() | |
Swetsenegger | woensdag 14 juli 2004 @ 19:45 |
Nog wat vreemds, gecko browser laten de geparste HTML niet goed zien. klik ik rechts en dan reload, WEL. met mijn html is dus niets mis. Iemand een idee waar het aan ligt? [ Bericht 0% gewijzigd door Swetsenegger op 14-07-2004 20:02:50 ] | |
robh | woensdag 14 juli 2004 @ 20:58 |
quote:Laat je html eens valideren op http://validator.w3.org/ | |
robh | woensdag 14 juli 2004 @ 20:59 |
Oh, iemand bekend met een bug in mozilla die <li> items buiten de tabel laat vallen? Het staat erg stom namelijk en ik moet een alternatief hebben. | |
Swetsenegger | woensdag 14 juli 2004 @ 21:14 |
quote:XHTML1.1 strict validated. Zoals gezegd, mijn html is prima | |
Swetsenegger | woensdag 14 juli 2004 @ 21:59 |
Hoe unset ik een cookie? | |
robh | woensdag 14 juli 2004 @ 22:03 |
Lege cookie sturen ![]() | |
Swetsenegger | woensdag 14 juli 2004 @ 22:15 |
quote:Ik vond 'm net op php.net ![]() Dubbel post probleem is ook opgelost nu. | |
Swetsenegger | donderdag 15 juli 2004 @ 14:28 |
quote: ![]() | |
Roonaan | donderdag 15 juli 2004 @ 14:29 |
heb je al paginering erin? Dat op elke page er noem eens wat, 10, items komen en als er meer items zijn dat je dan naar de volgende page moet? | |
Swetsenegger | donderdag 15 juli 2004 @ 14:57 |
quote:LOL, ik ben al blij als er ooit 10 willekeurig reacties van ECHTE bezoekers komen te staan. Maar ik kan het er wel in bakken natuurlijk | |
Swetsenegger | donderdag 15 juli 2004 @ 14:58 |
Ik ben blij dat ik overal commentaar bij gezet hebt, want ondertussen is het een php van 16K ![]() | |
Swetsenegger | donderdag 15 juli 2004 @ 17:48 |
Iemand trouwens een tip voor een goede php editor (text geen wysiwyg). In notepad wordt het wat onoverzichtelijk... | |
mschol | donderdag 15 juli 2004 @ 17:51 |
quote:dreamweaver ![]() crimson editor phpedit oid | |
Swetsenegger | donderdag 15 juli 2004 @ 17:59 |
vergat ik 'freeware' erbij te roepen?![]() | |
Roonaan | donderdag 15 juli 2004 @ 18:01 |
Grimson geloof ik is gratis. Maar alles met syntax highlighting en regelnummering is prima eik. UltraEdit is helaas niet gratis maar wmb wel fijn om mee te scripten. | |
Swetsenegger | donderdag 15 juli 2004 @ 18:47 |
quote:Precies, maar welke zijn dat? | |
keeper | donderdag 15 juli 2004 @ 18:54 |
quote:http://www.editpadpro.com/editpadlite.html | |
ToBe | donderdag 15 juli 2004 @ 19:02 |
Ik gebruik zelf Win Syntax, freeware en erg snel en simpel http://www.winsyntax.com/ | |
Swetsenegger | donderdag 15 juli 2004 @ 19:23 |
quote:Precies wat ik zocht | |
Da_Koen | donderdag 15 juli 2004 @ 19:39 |
Ik vind notepad van XP toch nog altijd het lekkerst werken..... | |
Swetsenegger | donderdag 15 juli 2004 @ 19:48 |
quote:Ik heb tot nu toe ook alleen in notepad gewerkt, maar bij een php van 589 regels (inc HTML) is syntax highlighting en regelnummers toch wel verdomd prettig | |
Da_Koen | donderdag 15 juli 2004 @ 19:50 |
quote:Regelnummers heb je ook bij notepad! Beeld -> statusbalk, dat is wel handig idd ![]() | |
Swetsenegger | donderdag 15 juli 2004 @ 19:56 |
quote:die is greyed out bij mij ![]() | |
mschol | donderdag 15 juli 2004 @ 20:29 |
quote:* mschol kijkt er eff naar.. hey bij mij ook ![]() | |
woutabest | donderdag 15 juli 2004 @ 21:01 |
quote:greyed watte? ![]() ![]() | |
Roonaan | donderdag 15 juli 2004 @ 21:02 |
quote:disabled. :S | |
Swetsenegger | donderdag 15 juli 2004 @ 21:08 |
GEK word ik ervan....quote:Mooi en prachtig www.123swets.com wordt netjes een linkje 'www.swets.com test' wordt www.swets.com ook netjes een linkje en de spatie tussen de com en test blijft gewoon bestaan. 'www.swets.com[' wordt www.swets.com als link... zonder de [. Waar blijft die???? Dat probleem had ik eerst ook met de spatie. Big deal zou je denken, maar [.quote]www.123swets.com[./quote] geeft door het in cyberspace verdwijnen van de blokhaak hele rare taferelen [ Bericht 0% gewijzigd door Swetsenegger op 15-07-2004 21:15:46 ] | |
Light | donderdag 15 juli 2004 @ 21:27 |
$invoer = preg_replace("/(www*.*?)(\s|$|\[)/i",'<a href="http://\1" rel="external">\1</a>\2',$invoer); En dit kan ook wel eens helpen ![]() | |
Swetsenegger | donderdag 15 juli 2004 @ 21:27 |
reguliere expressies zijn voor iedereen moeilijk begrijp ik? | |
Swetsenegger | donderdag 15 juli 2004 @ 21:28 |
quote:met die link ben ik aan deze regexp gekomen ![]() hmz ff proberen | |
Light | donderdag 15 juli 2004 @ 21:33 |
Hij kan nog beter, bedenk ik me ![]() $invoer = preg_replace("/(www\..*)(\s|$|\[)/Ui",'<a href="http://\1" rel="external">\1</a>\2',$invoer); Dan nemen we alles dat begint met www. (let op die punt) tot aan de eerste spatie, $-teken of blokhaak openen. | |
Swetsenegger | donderdag 15 juli 2004 @ 21:33 |
quote: ![]() | |
Swetsenegger | donderdag 15 juli 2004 @ 21:37 |
quote:In hoeverre is dat anders van wat ik doe? Het is wat.... duidelijker. -edit- hmz in mijn geval zou www123swets.com ook een link worden in jouw geval niet Wat doet die U ook alweer? -edit- This modifier inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by "?". It is not compatible with Perl. It can also be set by a (?U) modifier setting within the pattern. wtf? [ Bericht 12% gewijzigd door Swetsenegger op 15-07-2004 21:47:13 ] | |
Swetsenegger | donderdag 15 juli 2004 @ 21:45 |
Overigens dom dat ik de \2 vergat. uiteraard is de \1 niet hetzelfde als de \2 (waar ik vanuit ging) | |
Swetsenegger | donderdag 15 juli 2004 @ 21:49 |
Light, hoe lang PHP jij al? Nog verbeter tips voor deze: quote:Ik zit nog met twee probleempjes mbt de regexp's. Wat als er ge-eindigt wordt op een punt (www.123swets.com.) en mbt ftp als er user:inlog@ftp.naam.com wordt gepost wordt wordt dat e-mail (een van de redenen waarom ik ftp er nog niet in gezet heb | |
Light | donderdag 15 juli 2004 @ 21:54 |
quote:Die U maakt de expressie ungreedy. Standaard is een expressie greedy, dwz hij werkt volgens het principe "pakken wat je pakken kan". En dat merk je vooral bij die *. Als die ungreedy is dan pakt het sterretje tot het eerste teken dat de rest van de expressie accepteeert. Voorbeeld: Als je [.b]1[./b]2[.b]3[./b] greedy gaat verwerken dan krijg je het hele stuk "1[./b]2[.b]3" bold. Bij ungreedy worden alleen de 1 en de 3 bold gegeven, zoals de bedoeling is. En het verschil tussen www*.* en www\..* is eigenlijk heel logisch. De eerste pakt ww, gevolgd door 0 of meer w's, gevolgd door nul of meer willekeurige tekens. De tweede pakt www, gevolgd door een punt (vandaar die \.), gevolgd door 0 of meer willekeurige tekens. En ww.123swets.com is geen geldige url, die hoef je ook niet als zodanig te parsen. wwww.123swets.com ook niet. Maar www*.* vindt ze allebei prima ![]() | |
Light | donderdag 15 juli 2004 @ 21:57 |
quote:Ik heb enige ervaring ![]() En reguliere expressies zijn leuk om mee te spelen ![]() | |
Light | donderdag 15 juli 2004 @ 22:01 |
Trouwens, aan die url parser kan nog wel het een en ander verbeterd worden. Maar ik stoe eerst even met dat mailadres ding ![]() | |
Swetsenegger | donderdag 15 juli 2004 @ 22:04 |
quote:dit ga ik nog even langzaam lezen. quote:Ja, ik had ff verder nagedacht en begreep het al ![]() [/quote] | |
Swetsenegger | donderdag 15 juli 2004 @ 22:04 |
quote:Ik heb dit nu ![]() $uitvoer = preg_replace("/(www\..*)(\s|$|\[|\]|<|>|!|\?|&|\*|\(|\)|\")/Ui",'<a href="http://\1" rel="external">\1</a>\2',$uitvoer); | |
Swetsenegger | donderdag 15 juli 2004 @ 22:06 |
quote:Ik vond al dat ik aardig ver gekomen was ![]() Maar het is inderdaad erg leuk, maar je moet wel je kop erbij houden. Anders krijg je hele vreemde resultaten | |
Roonaan | donderdag 15 juli 2004 @ 22:14 |
quote:Kan je onderhand dat laatste stuk niet veranderen in een expressie die zegt: totdat ik een andere karakter tegenkom dan wat wel mag Voor ereg-replace zou dat laatste stuk ([^A-Za-z0-9~.\\/]* ) zijn maar ik weet niet wat de pregversie daarvan is. | |
Swetsenegger | donderdag 15 juli 2004 @ 22:17 |
quote:*denkt* Volgens mij niet. Het gaat namelijk niet om wat wel of niet zou mogen, ik anticipeer op wat er redelijkerwijs na een url komt wat er geen onderdeel meer vanuit maakt quote:*mompelt* wat was het verschil ook alweer | |
Swetsenegger | donderdag 15 juli 2004 @ 22:27 |
*test* www.milonic.co.uk -edit- ![]() Ik dacht ff dat replique hetzelfde deed als wat ik van plan was mbt het punt probleem. Namelijk niet meer dan 1 punt na de www. toestaan want www.123swets.com. wordt geen url. *denkt* co.uk als geldig toegevoegd? www.gemtek.com.tw dan? -edit- ![]() hmz....Breuls is een betere PHP'er dan mij | |
Light | donderdag 15 juli 2004 @ 22:28 |
Is dit wat? $invoer = preg_replace("/([A-Za-z0-9._-]+@[-A-Za-z0-9]+(\.[-A-Za-z0-9]+)*)/i",'<a href="mailto:\1">\1</a>',$invoer); | |
Swetsenegger | donderdag 15 juli 2004 @ 22:32 |
quote:voor de apestaart 1 maal de normale karakters plus . - en _ dan een apestaart dan weer alle normale karakters 1 of meer keer en een puntplus alle normale karakters nog 1 keer wat doet jeroen@123swets.com09 in dit geval? | |
mschol | donderdag 15 juli 2004 @ 22:34 |
quote:LEUK?!?! ik heb een hekel aan die dingen (maar denk dat het komt omdat ik die engelse uitleg niet snap..) heb jij toevallifg een goede nederlandse uitleg over rexexp in php??? | |
Swetsenegger | donderdag 15 juli 2004 @ 22:36 |
quote:Het is wel hoofdpijn code ja ![]() Maar wel krachtig! | |
Light | donderdag 15 juli 2004 @ 22:41 |
quote:Op een vergelijkbare manier ![]() $invoer = preg_replace("/(www\.[A-Za-z0-9.\/\~]+)/i",'<a href="http://\1" rel="external">\1</a>',$invoer); Maar ik ga hier dus uit van tekens die wel mogen. | |
Light | donderdag 15 juli 2004 @ 22:47 |
quote:En een + betekent ten minste 1 maal, zoals een * ten minste 0 maal betekent. Dus na de apestaart staat ten minste een letter, cijfer of -, dan ten minste 1 keer een punt gevolgd door weer een letter/cijfer/- quote:Dat wordt dan ook vertaald naar een mailadres. Inclusief die 09, dus een werkend adres wordt het niet. [ Bericht 5% gewijzigd door Light op 15-07-2004 22:53:26 (quote gefixt) ] | |
Light | donderdag 15 juli 2004 @ 22:51 |
quote:Nee, ik moet me ook zien te redden met de engelse. | |
Swetsenegger | donderdag 15 juli 2004 @ 22:52 |
quote:Dat doet mijn code ook bedenk ik me nu. Tis ondertussen te laat voor diepzinnige regexp overpeinzingen ![]() Bedankt voor je hulp! -edit- maar als je na die punt na de apestaart de cijfercombo weglaat klopt het wel | |
Light | donderdag 15 juli 2004 @ 22:55 |
quote:Deze niet: $invoer = preg_replace("/([A-Za-z0-9._-]+@[-A-Za-z0-9]+(\.[-A-Za-z0-9]+)*\.[A-Za-z]{2,4})/i",'<a href="mailto:\1">\1</a>',$invoer); quote:Graag gedaan ![]() | |
Swetsenegger | donderdag 15 juli 2004 @ 22:57 |
quote:oe... dat vetgedrukte ontgaat me nu ff... Morgen ![]() | |
Light | donderdag 15 juli 2004 @ 22:57 |
quote:Dan zou het misgaan als er na de apestaart iets staat als mail.123swets.com | |
Swetsenegger | donderdag 15 juli 2004 @ 23:03 |
$invoer = preg_replace("/(www\.[A-Za-z0-9._-\/~]\.[A-Za-z]+)/i",'<a href="http://\1" rel="external">\1</a>\1',$invoer); Volgens mij pak ik hier alles mee tot en met .co.uk en .com.tw enzo... toch? | |
Light | donderdag 15 juli 2004 @ 23:06 |
quote:Daarmee dwing je af dat er na de laatste punt in het mail adres 2 t/m 4 letters volgen. Geen cijfers of andere vreemde tekens, alleen letters. Da's dus voor het top level domain, als .nl, .com of .info. | |
Light | donderdag 15 juli 2004 @ 23:08 |
quote:Maar www.123swets.com/test gaat nog wel mis. | |
Swetsenegger | donderdag 15 juli 2004 @ 23:13 |
quote:Ja ik zie het ![]() Ik ga er nog eens diep over nadenken Volgens mij kan je nooit alles afvangen. Op welke manier dan ook. Met de laatste regel welke ik nu gebruik gaat het alleen mis wanneer mensen ieen punt achter de url zetten of vreemde tekens als % en ^. De tekens welke je mag verwachten heb ik wel afgevangen | |
Light | donderdag 15 juli 2004 @ 23:27 |
quote:Voor de ingewikkeldere dingen kunnen mensen vast ook een url-tag gebruiken. En wat dat betreft hoef je niet alles af te vangen op een gewoon www. adres. En als je het zo bekijkt is $invoer = preg_replace("/(www(\.[-A-Za-z0-9]+)+\.[A-Za-z]{2,4}(\/\~?[-A-Za-z0-9\.\/?%&=#] ![]() waarschijnlijk ook wat overdreven compleet ![]() | |
Swetsenegger | vrijdag 16 juli 2004 @ 08:54 |
quote:LOL, dit is ongeveer de regexp welke ik zat te bedenken in mijn hoofd: www. daarna alle karakters een punt dan com info co org , dus 2 tot 4 karakters en geen cijfers dan eventueel een slash, tilde en wederom alle karakters dan eventueel een punt en max 4 letters had ik in mijn hoofd. | |
Light | vrijdag 16 juli 2004 @ 09:23 |
Als je nu ook nog een [.url] [./url] tag gaat inbouwen krijg je wel leuke effecten. ![]() En webadressen mogen ook beginnen met http:// (of https://) om het nog ingewikkelder te maken. | |
Roonaan | vrijdag 16 juli 2004 @ 09:49 |
t64e<?php $regexp = '(((http|ftp|https|gopher)://)?([a-z]+)\.([a-zA-Z0-9]+)(\.([a-z]+)){1,2}([/\\][a-zA-Z0-9] ![]() $regrep = '<a href="\\1">\\1</a>'; $text = 'Dit is een test voor website urls. Midden in een zin moet www.reuters.com goed geparsed worden, en ook www.reuters.co.uk met meerdere punten moet ook goed doorkomen. Url\'s met meerdere niveau\'s zoals www.fok.nl/nieuws of www.fok.nl/nieuws/ moeten eigenlijk stiekum ook rond komen. Op het einde van een zin moet het ook goedkomen met www.fokforum.nl. En niet te vergeten http://forum.fok.nl/templates/foksilver/i/logo.jpg'; echo ereg_replace($regexp, $regrep, $text); ?> Alleen ik krijg dan problemen met http://forum.fok.nl/templates/foksilver/i/logo.jpg die stopt dan bij de punt zeg maar en de jpg niet meepakt. Als ik echter $regexp = "(((http|ftp|https|gopher)://)?([a-z]+)\.([a-zA-Z0-9]+)(\.([a-z]+)){1,2}([/\\][^ \t\n\r$] ![]() gebruik, dan gaat dat wel goed, maar weet je weer niet zeker of dat alle extremiteiten dan wel in orde zijn omdat je vrij veel accepteerd op het eind. Valt me op trouwens dat www.fok.nl/nieuws/ niet gepakt wordt... en www.fok.nl/nieuws ook niet. terwijl die lange op het einde in replique wel goed gaat. hmmmm.... | |
Swetsenegger | vrijdag 16 juli 2004 @ 11:16 |
quote:Volgens mij gaan we nu een beetje voorbij aan de topictitel ![]() overigens denk ik dat www.fok.nl/nieuws alleen goed gaat wanneer gevolgd door een punt en daarna minimaal 2 karakters www.fok.nl/nieuws.ph Ja dus ![]() Volgens mij lijkt Breuls url parser verdomd veel op een van die laatste van ons ![]() [ Bericht 5% gewijzigd door Swetsenegger op 16-07-2004 11:21:58 ] | |
Swetsenegger | vrijdag 16 juli 2004 @ 11:17 |
quote:mjah, hij negeert de http:// gewoon en zet de www erachter wel netjes naar een url. Niets aan de hand dus ![]() | |
Roonaan | vrijdag 16 juli 2004 @ 12:06 |
quote:Je kan er toch een eenvoudige (((http|https|ftp)://)?) tussenplakken aan het begin? Dan heb je dat ook afgevangen. | |
Swetsenegger | vrijdag 16 juli 2004 @ 12:58 |
quote: ![]() Van het weekend wel eens kritisch naar de url parser kijken. | |
mschol | vrijdag 16 juli 2004 @ 13:07 |
quote:tis idd krachtrig maar als ik geen duidelijke nl uitleg van iedere mogelijkheid (dus wat ^ en $ etc betekenen) heb dan schiet ik er zelf weinig mee op.. maar ik nog wel eff googlen | |
Swetsenegger | vrijdag 16 juli 2004 @ 13:41 |
quote:^ begin string $ einde string http://www.phphulp.nl/php/tutorials/2/29 http://www.phphulp.nl/php/tutorials/2/134 | |
Swetsenegger | vrijdag 16 juli 2004 @ 14:15 |
<? # Regular Expressions: "^Ik" // geeft aan dat een string moet beginnen met "Ik" "en jij$" // geeft aan dat de string moet eindigen op "en jij" "^Ik en jij$" // hier moet de string beginnen met "Ik en jij" maar er ook op eindigen, alleen "Ik en jij" is dus correct "ik" // geeft aan dat een string de waarde "ik" moet bevatten "ab*" // geeft aan dat na de a een aantal b's moeten komen (dit kunnen er ook nul zijn) bv. "a" (dan zijn er 0 b's) "ab", "abb", "abbb" enz "ab+" // is vrijwel hetzelfde alleen mag b geen nul keer voorkomen dus "ab", "abb", "abbb" enz "ab?" // geeft aan dat b nul of 1 keer mag voorkomen "ab{2}" // geeft aan dat de a gevolgt wordt door exact 2 b's dus "abb" "ab{2,}" // geeft aan dat de a gevolgt wordt door minimaal 2 b's "abb", "abbb" enz "ab{1,3}" // geeft aan dat a gevolgt wordt door 1, 2 of 3 b's dus "ab", "abb" of "abbb" "a(bc)*" // de haakjes geven aan dat het om dat hele stuk gaat dus bc komt nul of meer keer voor: "a", "abc", "abcbc" enz "a(bc){1,3}" // geeft aan dat bc 1 tot 3 keer voor moet komen "abc", "abcbc" of "abcbcbc" "hoi|dag" // geeft aan dat een string hallo of dag moet bevatten "(hoi|dag)ik" // geeft aan dat er voor ik hoi of dag moet staan "(ab|bc)*d" // geeft aan dat d voorafgegaan moet worden door ab of bc "[a-d]" // geeft aan dat een string de kleine letters a tot en met d moet bevatten "[a-zA-Z]" // betekent alle kleine a-z en alle hoofd A-Z "[0-9]" // geeft een string aan met cijfers 0-9 "[a-zA-Z0-9]" // combineert de twee hierboven "." // met een punt kunnen we één teken defineren "a.[0-9]" // de waarde a wordt gevolgt door een willekeurig teken en een getal tussen 0-9 "^.{5}$" // houdt in dat de string 5 willekeurige tekens bevat note : als je het bv dollarteken los van de expressie wil gebruiken doe je dat zo "\$" (binnen de [ ] niet daar is een $ gewoon een $) "[^a-d]$" // geeft aan dat een string niet eindigt op de letters a-d "^[^A-Z]\.$" // geeft aan dat een string niet met een hoofdletter begint maar wel op een punt eindigt ?> | |
Light | vrijdag 16 juli 2004 @ 18:18 |
quote:(((https?|ftp):\/\/)?) is korter. Dat protocol moet natuurlijk ook in de uiteindelijke link komen, maar da's niet zo'n probleem. Als er geen protocol gekozen is moet er ook een link gemaakt worden, en dan wel met http:// als protocol. Da's lastiger. | |
Swetsenegger | vrijdag 16 juli 2004 @ 20:09 |
Tja, nou ik ben wel aardig door m'n features heen. Ik zal de code nog wel wat optimaliseren, maar het is wel 'af' nu. Wat zal ik nu eens gaan doen ![]() | |
mschol | vrijdag 16 juli 2004 @ 21:16 |
quote:een CMS bouwen ??? | |
Swetsenegger | vrijdag 16 juli 2004 @ 21:57 |
quote:Ja, dat idee had ik al ![]() | |
Swetsenegger | zaterdag 17 juli 2004 @ 18:54 |
Wat doe ik fout? Welke naam ik ook intik, ik kom steeds weer op login.php... quote: | |
sylvesterrr | zaterdag 17 juli 2004 @ 19:01 |
quote:is wat netter. ![]() maar ehh...je weet zeker dat die invoervelden ook echt bestaan in dat formulier? | |
Swetsenegger | zaterdag 17 juli 2004 @ 19:04 |
quote:Ja... ![]() volledige php: quote: | |
sylvesterrr | zaterdag 17 juli 2004 @ 19:09 |
<input type="text" name"password" size="20" /> --> <input type="text" name="password" size="20" /> ![]() var_dump($_POST) levert het volgende op: quote:$_POST['password'] bestaat dus niet eens. ![]() | |
Swetsenegger | zaterdag 17 juli 2004 @ 19:34 |
![]() | |
Swetsenegger | zaterdag 17 juli 2004 @ 19:51 |
Volgens mij zie ik weer wat over het hoofd... op onderhoud.php staat nu deze toevoegingquote:En ik kom alleen op login.php terecht ![]() | |
Swetsenegger | zaterdag 17 juli 2004 @ 20:14 |
AAAARGH, session_start() ![]() | |
sylvesterrr | zaterdag 17 juli 2004 @ 20:21 |
quote:Voortaan wat beter slapen he. ![]() | |
Light | zaterdag 17 juli 2004 @ 20:33 |
quote:Ik zou dan gaan voor: <input type="password" name="password" size="20" /> | |
sylvesterrr | zaterdag 17 juli 2004 @ 21:29 |
quote:Inderdaad, maar daar ging het niet om. ![]() ![]() | |
Swetsenegger | zondag 18 juli 2004 @ 00:17 |
quote:Dat had ik al aangepast, maar om te zien of je geen tikfouten in je password maakt... ![]() | |
Light | zondag 18 juli 2004 @ 00:46 |
quote:Om te zien of je je wachtwoord wel kunt tikken is type="text" wel handig, da's waar ![]() | |
Swetsenegger | maandag 19 juli 2004 @ 12:31 |
quote:Wat trouwens wel erg lekker is bij winsyntax dat hij de corresponderende { en } aangeeft! | |
sylvesterrr | maandag 19 juli 2004 @ 12:48 |
quote: ![]() Nu is dat wel handig ja. ![]() ![]() Nu is dat ook wel handig, maar niet noodzakelijk. ![]() [ Bericht 3% gewijzigd door sylvesterrr op 19-07-2004 12:55:43 ] | |
Swetsenegger | maandag 19 juli 2004 @ 14:56 |
quote:In beide gevallen heb ik me de tering gezocht ![]() (Ja, ik maak gebruik van inspringingen) | |
slindenau | maandag 19 juli 2004 @ 15:31 |
Daarom vind ik dat je inspringen goed moet leren, en niet zoals sylvesterrr doet, want dan zie je nog niet welke accolades bij elkaar horen. Zo doe ik het altijd: ![]() Dit is maar een voorbeeldje, hier kan je snel zien welke accolade bij welke statement hoort ![]() | |
Swetsenegger | maandag 19 juli 2004 @ 16:39 |
quote:Ja zo strak doe ik het niet ![]() | |
sylvesterrr | maandag 19 juli 2004 @ 16:41 |
quote:He, het inspringen doen we op dezelfde manier, maar het plaatsen van de accolades blijkbaar niet. ![]() ![]() | |
mschol | maandag 19 juli 2004 @ 17:23 |
quote:op die laatste manier deed ik het al standaard terwijl mij verteld werdt dat je juist de andere moest gebruiken.. ![]() | |
Swetsenegger | woensdag 21 juli 2004 @ 22:32 |
Is er ergens een site waar de snelheid per PHP functie te vinden is? In millesec of in clockcycli ofzo? | |
slindenau | woensdag 21 juli 2004 @ 22:47 |
quote:Hehe, je kan snelheid gewoon testen door de tijd op te nemen aan het begin en aan het eind, dat een keer of 100.000 te doen, en dan het gemiddelde te nemen. Snelheid opnemen kan zo: quote: | |
Swetsenegger | woensdag 21 juli 2004 @ 22:50 |
quote:Mjah, dat doe ik al. Maar ik wil eigenlijk gewoon per functie de tijd weten. In zo'n geval kan je dus simpel uitrekenen of twee keer een str_replace plus een substr_count sneller is als een preg_replace ![]() | |
slindenau | woensdag 21 juli 2004 @ 22:58 |
quote:Die lijsten zullen niet bestaan, omdat de snelheid afhangt van de snelheid van de server ![]() Het hangt dus af van de snelheid van de processor en het geheugen van de server. | |
Swetsenegger | woensdag 21 juli 2004 @ 23:02 |
quote:Dan kan je het toch in cycli aangeven ipv in harde waardes. bij een snelle server zal een cyclus sneller voorbij zijn. Maar dan weet je nog steeds dat een functie van 2 cycli sneller is dan een functie van 3 cycli. | |
Roonaan | donderdag 22 juli 2004 @ 09:30 |
Je kan beiden toch 1000 keer uitvoeren $time[0]; 1000x preg $time[1] 1000x strpos $time[2] 1000x preg $time[3]; 1000x strpos $time[4] echo "<br/>preg: ".($time[1] - $time[0] + $time[3] - $time[2]); echo "<br/>strr: ".($time[2] - $time[1] + $time[4] - $time[3]); | |
Swetsenegger | donderdag 22 juli 2004 @ 11:00 |
quote:Mjah, dat is toch een gezeur? Om optimaal te coden zou het gewoon makkelijk zijn wanneer er per functie de tijd beschikbaar was. Maar dat bestaat dus niet ![]() | |
Roonaan | donderdag 22 juli 2004 @ 11:08 |
Hoe wil je in hemelsnaam de cycle's van een preg bepalen dan? Die is toch sterk afhankelijk van de lengte van zowel string als regexp? strpos is over te zeggen dat (wanneer optimaal geprogrammeerd) deze single-pass zou moeten kunnen zijn. Dat haal je denk ik met preg niet. str_replace zal ook single-pass kunnen denk ik? het is toch een soort strpos. substr is ook singlepass. | |
slindenau | donderdag 22 juli 2004 @ 13:30 |
Het komt er gewoon op neer dat je toch moet gaan benchmarken ![]() | |
Swetsenegger | dinsdag 27 juli 2004 @ 22:44 |
Nog een duidelijke uitleg voor regex: http://www.phpfreakz.nl/artikelen.php?aid=8 | |
Swetsenegger | zondag 1 augustus 2004 @ 21:06 |
Ik ben wat simpele statistieken aan het maken: Hits en unieke bezoekers. Bij elke hit op elke pagina sla ik het ip, de pagina waar de hit op plaats vind en DATE op in een tabel. Hits is natuurlijk eenvoudig: quote:Voor unieke bezoekers heb ik nu dit quote:Maar... ik wil hier een tijd aanvast hangen. Bv hits van hetzelfde IP gelden opdezelfde dag als 1 unieke bezoeker, maar de volgende dag moet ik 'm natuurlijk weer gewoon meetellen.... Hoe prop ik dat in m'n query? | |
Ali Salami | zondag 1 augustus 2004 @ 21:14 |
-herstel, deze klopte niet, ik denk even verder ![]() | |
Swetsenegger | zondag 1 augustus 2004 @ 21:16 |
quote:Zoiets of ditissum? Wat doet die count? | |
Swetsenegger | zondag 1 augustus 2004 @ 21:23 |
Feitelijk moet ik dus distinct IP EN distinct date.... -edit- Nee van het distinct IP moet ik distinct date | |
Ali Salami | zondag 1 augustus 2004 @ 21:32 |
SELECT date, count(DISTINCT ip) FROM ip_address` GROUP BY date Die was het | |
Swetsenegger | zondag 1 augustus 2004 @ 21:33 |
quote:En het resultaat hiervan is bv '6'? En wat doet die count nu? Dat is toch vervanging voor mysql_num_rows? | |
Ali Salami | zondag 1 augustus 2004 @ 21:34 |
Per datum weergegeven datum - aantal verschillende ip's datum2 - aantal verschillende ip's etc | |
Ali Salami | zondag 1 augustus 2004 @ 21:38 |
count telt het aantal rows binnen de waarde die je opgeeft. In mijn eerste querie telde hij het aantal ip's binnen die datum, maar het moesten verschillende ip's zijn, wat je dus weer oplost met die DISTINCT. Op deze manier kun je in de querie dus iets ten opzichte van een andere waarde tellen. Dat is dus wat anders dan mysql_num_rows, waarin je het uiteindelijke aantal rijen dat hij teruggeeft telt (in dit geval zou je dat brengen op het aantal verschillende dagen dat erin staan. Kun je weer gebruiken voor het gemiddeld aantal unieke bezoekers er dag ![]() | |
Swetsenegger | zondag 1 augustus 2004 @ 21:40 |
quote:Ja dat dacht ik al, maar dat zoek ik dus niet. In de tabel staat bv IP-adres 1 - vandaag 1 - vandaag 2 - vandaag 3 - vandaag 4 - vandaag 4 - morgen 1 - morgen Dit geeft NU 4 unieke bezoekers, terwijl het er 6 zouden moeten zijn de twee maal 1- vandaag telt 1 keer, maar de 1- morgen telt wel als uniek, hetzelfde voor 4 | |
Ali Salami | zondag 1 augustus 2004 @ 21:44 |
Wat de querie doet is vandaag - 4 morgen - 2 In de while-lus zorg je er vervolgens voor dat de tweede kolom weer wordt opgeteld bij elkaar, dan krijg je dus 6 | |
Roonaan | zondag 1 augustus 2004 @ 21:54 |
misschien select distinct concat(ip, date), ip, date from ip_address of select concat(ip,date) as ipdate, ip, date from ip_address group by ipdate | |
Light | zondag 1 augustus 2004 @ 22:21 |
select ip, datum from ip_address group by datum, ip | |
Swetsenegger | zondag 1 augustus 2004 @ 22:39 |
Thanks voor de hulp, maar ik kom er nog niet jongens. Dit schrijf ik naar de tabel: quote:ip_address bevat dus zoiets als 80.163.249.138 (per hit) pagina bevat bv /index.php datum_geplaatst bevat bv 2004-08-01 Nu wil ik dus alle IP's welke hetzelfde zijn EN binnen dezelfde dag vallen per pagina als 1 tellen. Oe, is dit hem dan? quote:Ik zal het morgen pas weten ![]() | |
Ali Salami | zondag 1 augustus 2004 @ 22:56 |
Ik snap eik niet waarom je niet met die van mij uit de voeten kan. Punt is wel dat je daarbij in een php-handeling nog wat moet optellen, maar ik ken zo geen query waarmee dat wel lukt. Wil je voor elke pagina, dus bv index.php: quote:waarbij elke hit voor een uniek ipadres telt, dan kun je mijn query gebruiken, vermeerderd uiteraard met het 'WHERE pagina='-statement. Dan heb je het aantal unieke hits per dag, die je dmbv een while-loop kunt laten zien. Dat is wat ik nog steeds denk dat je wilt eik. Ik had alleen de query site-breed, dus zonder dat je naar een specifieke pagina gaat kijken. Even kort dus nog: tabelinhoud: quote:Je hebt ip 3 verschillende ip adressen, die je met een COUNT(distinct ip) kunt tellen. Je wilt echter per dag, wat je kunt doen met mijn query van een aantal posts terug. Wil je dan ook nog het totaal aantal unieke hits van al die dagen dan zul je moeten doen: quote:en dan output en eventuele extra's quote: In de query van je hier net boven hoef je overigens geen GROUP BY te gebruiken aangezien je geen zaken als count, sum etc gebruikt.. Wat ik bij dergelijke queries overigens meestal doe is direct uitproberen in phpmyadmin. Je ziet dan meteen of de query fout is, kunt hem meteen weer testen etc.. ![]() [ Bericht 22% gewijzigd door Ali Salami op 01-08-2004 23:07:03 ] | |
Swetsenegger | zondag 1 augustus 2004 @ 22:59 |
quote:Ik was alleen op zoek naar totalen, maar per dag is natuurlijk ook wel weer geil. Morgen verder kloten ![]() | |
Ali Salami | zondag 1 augustus 2004 @ 23:12 |
Ik heb nog wat bij de vorige post gezet wbt de while_loop waarmee je die totalen verkrijgt etc ![]() Toch zijn die totalen niet echt duidelijk. Als je zoals jij stelt het aantal unieke bezoekers telt per dag, en daarvan totalen maakt, dan tel je dus ook dubbele ip's. En daarmee zeker dubbele bezoekers. Maargoed, gemiddeld aantal unieke bezoekers per dag kun je dus wel weer berekenen ![]() | |
Swetsenegger | maandag 2 augustus 2004 @ 08:37 |
quote:Dat klopt ja. wanneer je per pagina unieke IP's telt, dan is het totaal van de pagina's anders dan website wide. Geldt niet voor hits ![]() | |
Swetsenegger | dinsdag 24 augustus 2004 @ 21:17 |
Waar ga ik de fout in? Ik heb deze query: "SELECT * FROM database WHERE ID=".$waarde." ORDER BY ID LIMIT ". ($waarde+10) ." DESC" En die geeft de volgende foutmelding: You have an error in your SQL syntax near 'DESC' at line 1 query SELECT * FROM database WHERE id=0 ORDER BY id LIMIT 10 DESC De waardes lid en limit zijn goed, maar blijkbaar is query niet goed. | |
Light | dinsdag 24 augustus 2004 @ 21:28 |
DESC hoort bij de ORDER BY. Als je het voor LIMIT zet zou het wel moeten werken. ![]() | |
Swetsenegger | dinsdag 24 augustus 2004 @ 21:29 |
"SELECT * FROM database WHERE ID=".$waarde." ORDER BY ID DESC LIMIT ". ($waarde+10) ." dus? | |
Swetsenegger | dinsdag 24 augustus 2004 @ 21:31 |
Hmz, geen foutmelding alleen krijg ik geen data. De bedoeling is dus VANAF ID waarde tot en met waarde+10 | |
Swetsenegger | dinsdag 24 augustus 2004 @ 21:34 |
Ik heb het al gevonden. Ik dacht dat Mysql autoincrement ID start bij 0, maar dat blijkt 1 te zijn -edit- niet dus, want nu pakt ie ALLEEN ID 1 en niet 1 t/m 10 ![]() | |
Light | dinsdag 24 augustus 2004 @ 21:40 |
Is dit dan wat je zoekt? "SELECT * FROM database WHERE ID>=".$waarde." ORDER BY ID LIMIT 0,10 | |
mschol | dinsdag 24 augustus 2004 @ 21:45 |
quote:moet het dan niet: "SELECT * FROM database WHERE ID>=".$waarde." ORDER BY ID LIMIT ".$waarde.",10" zijn?? ![]() | |
Swetsenegger | dinsdag 24 augustus 2004 @ 21:47 |
Ja, ik had 'm al gevonden. Een groter dan teken doet wonderen Thanks! | |
Light | dinsdag 24 augustus 2004 @ 21:59 |
quote:Nee ![]() "SELECT * FROM database WHERE ID>=".$waarde." ORDER BY ID LIMIT 0, 10" en "SELECT * FROM database ORDER BY ID LIMIT ".$waarde.",10" leveren dezelfde uitvoer op. Tenminste, als alle ID's bestaan. En waarschijnlijk levert de eerste een beter resultaat op en is hij ook sneller. Als niet alle ID's bestaan dan levert de eerste nog steeds 10 resultaten vanaf het gevraagde ID, de tweede levert 10 resultaten vanaf $waarde rijen. Als $waarde == 100 en van de eerste 100 ID's zijn er 10 alweer verwijderd dan krijg je resultaten vanaf ID 110. | |
Swetsenegger | dinsdag 24 augustus 2004 @ 22:05 |
quote:Dat laatste is wel de bedoeling. Het is als volgt. In mijn gastenboek wil ik simpelweg max 10 reacties per pagina laten zien. Indien er meer dan 10 reacties zijn krijg je onderaan de mogelijkheid om naar pagina 2 te gaan. Ik geef dus een offset mee van pagina nummer plus 10 (met gedelete ID's heb ik dus een probleempje) Maar het wordt nog leuker. Ik heb een sorteringsmogelijkheid. Laatste eerst tonen of eerste eerst tonen ![]() Dus met deze query kom ik er niet, ja met ASC niet met DESC. Dus ik ben nog wat kunst en vliegwerk aan het uithalen. Dat gaat wel lukken maar gedelete ID's heb ik even geen oplossing voor. | |
Swetsenegger | dinsdag 24 augustus 2004 @ 22:30 |
DESC en ASC probleem is opgelost Ik doe het volgende: Ik tel het totaal aantal records in de database (is aantal reacties) Dat deel ik door tien en het getal wat daar uitkomt rond ik af naar het eerst volgende hele getal Dat zijn het aantal pagina's die ik krijg. Die urls print ik met een while lus: quote:En mijn querys worden dan quote:en dan nog wat geneuzel.... Dit werkt perfect.... mits er geen ID's gedelete zijn. Want het totaal aantal reacties is bv 25, maar door gedellete ID's is het hoogste ID 27... Die zie ik met bovenstaande methode dus nooit op beeld ![]() | |
_-rally-_ | woensdag 25 augustus 2004 @ 08:01 |
quote:Waarom wil je gedelete ID's zien ? | |
Swetsenegger | woensdag 25 augustus 2004 @ 08:42 |
quote:Ik wil geen gedelete ID's zien. Ik wil de aanwezige ID's zien. Stel je voor ik heb 28 reacties. Maar mijn hoogtse ID is 32 (dus 4 gedelete ID's) Met DESC zie ik op de eerste page van ID 32 t/m 20 (daar zitten dus 2 gedelete ID's tussen. Maar zijn wel de eerste 10 records). Op pagina 2 begin ik nu nietmet 19, maar met 22 (want ik trek per pagina simpelweg 10 van het hoogste ID af) Pagina 2 loopt dan van 22 tm 11 (dus wederom 1 gedelete ID Pagina 3 start op 12 (ipv 10) en loopt tot ID 3... ID 2 en 1 welke niet gedelete zijn zie ik dus niet ![]() Dat komt doordat de offset (simpelweg uitgaan van hoogste ID en daar er 10 vanaf trekken per pagina) Er van uit gaat dat ale ID's er zijn. Ik zie dus netjes 10 reacties per pagina, maar ik begin niet per pagina met het opvolgende ID omdat er ID's gedelete zijn. Sommige reacties staan dus zowel op pagina 1 als 2 of zowel 2 als 3 waardoor er in totaal 30 reacties worden getoont, maar NIET alle 28 van het totaal (door de dubbele presentatie) Moeilijk verhaal, maar ik hoop dat iemand het snapt ![]() | |
_-rally-_ | woensdag 25 augustus 2004 @ 10:48 |
quote:Waarom doe je dat ? Waarom niet als je op pag 1 32 - 20 hebt, de query voor pag. 2: where id <20 ? [ Bericht 7% gewijzigd door _-rally-_ op 25-08-2004 10:57:45 ] | |
Swetsenegger | woensdag 25 augustus 2004 @ 11:19 |
quote:Daar heb ik uiteraard aan gedacht, maar dan moet ik dus op pagina 1 onthouden waar ik geindigd ben en daar bij pag 2 mee beginnen. Maar als ik nu direkt van pag 1 naar pag 3 ga? Dan moet ik niet beginnen bij 20..... En ik weet op dat moment niet waar pag 2 eindigt. -edit- ter aanvulling, de GET info wordt dus gesubmit naar dezelfde pagina he. Dus de page response.php draait bij de eerste keer opstarten de query vanaf hoogste ID, limit 10. en ik genereer op die pagina de urls naar eventueel page 2, 3 , 4 enz. Wanener ik die URL aanklik ga ik na response.php met de GET info voor de offset. | |
_-rally-_ | woensdag 25 augustus 2004 @ 11:32 |
quote:Dus moet je of elke keer de hele tabel doorlopen op je links te bouwen, of een hulptabel bijhouden met begin en eind van elke pagina. response.php draait bij de eerste keer opstarten de query vanaf hoogste ID, limit 10. en ik genereer op die pagina de urls naar eventueel page 2, 3 , 4 enz. Wanener ik die URL aanklik ga ik na response.php met de GET info voor de offset. [/quote] | |
Swetsenegger | woensdag 25 augustus 2004 @ 11:34 |
quote:Ja dat idee had ik ook al. Maar dan schiet het zijn doel enigzins voorbij. Door die extra queries wordt het dan eerder trager dan sneller door minder reacties per scherm. Wanneer ik een previous/next gebruik is het eenvoudiger. (maar minder gelikt) | |
Light | woensdag 25 augustus 2004 @ 11:49 |
Dan moet het dus iets worden als $query='SELECT * FROM database ORDER BY id ASC LIMIT '. (($pagina - 1) * $perpagina).','.$perpagina; $perpagina is dus het aantal reacties dat op een pagina moet verschijnen. En $pagina het paginanummer van de te tonen pagina, 1 voor de eerste pagina. | |
Swetsenegger | woensdag 25 augustus 2004 @ 11:57 |
quote:*kijkt* Snappum ff niet. wat is die twee 'perpagina'? (MySQL heb ik nog wat moeite mee. Ik heb nog geen goed boek en die online manual is niet echt duidelijk) -edit- wacht even, maar dit is toch hetzelfde als ik nu doe? Die variable perpagina is gewoon 10. quote: | |
Light | woensdag 25 augustus 2004 @ 12:06 |
Die $perpagina is gewoon 10. Maar misschien dat je dat in de toekomst nog eens wilt aanpassen ![]() Bij oplopende sortering krijg je dus (voor pagina 1 t/m 3) $query='SELECT * FROM database ORDER BY id ASC LIMIT 0,10'; $query='SELECT * FROM database ORDER BY id ASC LIMIT 10,10'; $query='SELECT * FROM database ORDER BY id ASC LIMIT 20,10'; | |
Swetsenegger | woensdag 25 augustus 2004 @ 12:27 |
quote:Ja ok, maar dan heb ik dus het probleem van ontbrekende ID's. | |
Light | woensdag 25 augustus 2004 @ 12:35 |
Nee, het probleem van de ontbrekende ID's speelt alleen als je de ID-selectie dmv WHERE doet. | |
Swetsenegger | woensdag 25 augustus 2004 @ 12:40 |
quote:Maar wat is die 20 dan? $query='SELECT * FROM database ORDER BY id ASC LIMIT 20,10'; Dat is toch starten vanaf ID 20? Of is dat NA 20 geparste records? | |
Light | woensdag 25 augustus 2004 @ 12:47 |
LIMIT 20,10 (of LIMIT 10 OFFSET 20) wil zeggen: Sla de eerste 20 resultaten over en lever de volgende 10 op. | |
Swetsenegger | woensdag 25 augustus 2004 @ 12:49 |
quote:Mijn held ![]() Ik WIST dat er een oplossing moest zijn. Ik ga het direkt proberen (en mijn topic waarin ik om een MySQL boek verzoek in V&A ff kicken) | |
Swetsenegger | woensdag 25 augustus 2004 @ 13:20 |
Top, voor ASC werkt dit perfect. NU alleen voor DESC verzinnen. Daar moet ik beginnen vanaf het hoogste ID en dan 10. Maar als ik daar zeg: $query='SELECT * FROM database ORDER BY id DESC LIMIT '. hoogsteID.',10'; Dan is mijn eerste pagina natuurlijk leeg. Is er ook iets dat je de LAATSTE x resultaten oversla en tel daarvan 10 naar beneden? | |
Light | woensdag 25 augustus 2004 @ 13:24 |
Dan kun je gewoon dezelfde query gebruiken. Met DESC ipv ASC natuurlijk. De 10 hoogste ID's krijg je dan als eerste aangeleverd, dus LIMIT 0,10 werkt dan gewoon. | |
Swetsenegger | woensdag 25 augustus 2004 @ 13:37 |
quote:Dat ging niet helemaal goed, maar dat zal meer aan mijn implementatie liggen dan aan jou advies. Ik rommel nog ff verder ![]() | |
Swetsenegger | woensdag 25 augustus 2004 @ 13:43 |
Light, mag ik je kussen ![]() Bedankt voor het inzichtelijk maken van wat SQL voor me. Wat had ik fout gedaan aan de DESC kant. Ik wilde daar starten met het hoogste ID. Stom, dat doet DESC wel voor me. | |
Light | woensdag 25 augustus 2004 @ 13:54 |
quote:Ik wil wel een keer een uitzondering maken hoor. ![]() quote:En ik ben blij dat je wat hebt aan mijn uitleg ![]() quote:Da's wel de bedoeling van DESC ja. Trouwens, om dingen gecompliceerd te maken, ASC mag je ook weglaten. Maar dat maakt het hier zeker niet duidelijkerer. | |
cygnusx | woensdag 25 augustus 2004 @ 14:03 |
hallo ik ben een quiz in php aan het maken, met highscore e.t.c. maar nu moet ik er voor zorgen dat hij bij een lijst van 10 vragen een random vraag kiest dus dat elke keer del ijst weer anders is en vooral dat zeg maar vraag 1. niet hetzelfde kan zijn als vraag 6... hoe fix ik dit? na aanleiding van aso gedrag bij normale topics post ik het maar hier | |
Roonaan | woensdag 25 augustus 2004 @ 14:05 |
quote:al eens array_rand geprobeerd? Liever aso, dan lui, inspiratieloos en lame? | |
spydar | woensdag 25 augustus 2004 @ 14:09 |
cygnusx j kan eerst een array vullen met vragen dan met http://www.php.net/manual/en/function.array-rand.php een random vraag uit de array halen, daarna kan j bijvoorbeeld de vraag uit de array halen zodat je die niet meer kiest.. | |
Swetsenegger | woensdag 25 augustus 2004 @ 14:11 |
quote:ASC is dus de default waarde? Voor future reference is het wel makkelijk om het erbij te vermelden | |
Light | woensdag 25 augustus 2004 @ 14:14 |
quote:Yep, ORDER BY sorteert standaard oplopend. | |
Swetsenegger | woensdag 25 augustus 2004 @ 14:18 |
quote:Weer wat geleerd. Heb je misshcien nog een tip voor een goed nederlandstalig MySQL boek? | |
Light | woensdag 25 augustus 2004 @ 14:30 |
quote:Daar kan ik je helaas niet mee helpen. Ik moet nog wel ergens een SQL boek hebben, maar da's algemeen en dus niet specifiek MySQL en volgens mij ook in het engels. En de documentatie op www.mysql.com is ook niet in het nederlands. | |
Jump | woensdag 25 augustus 2004 @ 18:38 |
Vervolgje: [PHP] voor dummies - Deel 2 |