Maar ja... dat is op browser, en ik heb de OS info nodig uit HTTP_USER_AGENT.quote:<link rel="stylesheet" type="text/css"
href="<?php if(strstr($HTTP_USER_AGENT, 'Gecko')) echo style-m.css";
elseif(strstr($HTTP_USER_AGENT, 'Opera')) echo "style-o.css";
else echo "style.css";?>" media="all">
linux gevonden in $_SERVER['HTTP_USER_AGENT'] --> style-linux.cssquote:<link rel="stylesheet" type="text/css" href="<?=(strstr($_SERVER['HTTP_USER_AGENT'], 'linux') ? 'style-linux.css' : 'style-non-linux.css';)?>">
voorbeeld HTTP_USER_AGENT voor operaquote:Op zondag 4 juli 2004 23:35 schreef Swetsenegger het volgende:
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.
voorbeeld HTTP_USER_AGENT voor Mozillaquote:"Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera 7.51 [en]"
Zoeken naar de substring Linux lijkt me al voldoende dus. Alleen HTTP_USER_AGENT kan, net als referer, natuurlijk handmatig gewijzigd worden door de clientquote:"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040616"
In mijn geval:quote:Op zondag 4 juli 2004 23:44 schreef Lucille het volgende:
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.
Ah! $_SERVER als variabele (?) die zocht ikquote:Op zondag 4 juli 2004 23:42 schreef sylvesterrr het volgende:
[..]
linux gevonden in $_SERVER['HTTP_USER_AGENT'] --> style-linux.css
linux NIET gevonden in $_SERVER['HTTP_USER_AGENT'] --> style-non-linux.css
<? header('Content-type: text/plain'); var_dump($_SERVER); ?>quote:Op zondag 4 juli 2004 23:46 schreef Swetsenegger het volgende:
[..]
Ah! $_SERVER als variabele (?) die zocht ik
Thanks...morgen weer eens klooienquote:Op zondag 4 juli 2004 23:47 schreef sylvesterrr het volgende:
[..]
<? header('Content-type: text/plain'); var_dump($_SERVER); ?>
Zie je meteen de inhoud van de array $_SERVER
Andere fonts misschien?quote:Op zondag 4 juli 2004 23:55 schreef Berkery het volgende:
Ik ben wel benieuwd waarom je voor Linux een ander CSS wil hebben![]()
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.quote:Op zondag 4 juli 2004 23:58 schreef devzero het volgende:
[..]
Andere fonts misschien?
Want...?quote:Op maandag 5 juli 2004 00:13 schreef Berkery het volgende:
...en daar heb je geen andere style sheet voor nodig.
Die kan je wel zien. Waarom zou je die niet kunnen zien?quote:Op maandag 5 juli 2004 08:24 schreef Light het volgende:
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?
Je wekt de indruk andere fonts te willen gebruiken voor Linux-gebruikers.quote:Op maandag 5 juli 2004 08:26 schreef Swetsenegger het volgende:
[..]
Die kan je wel zien. Waarom zou je die niet kunnen zien?
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.quote:Het probleem is alleen de fontsize. Niet de fonts op zich
Nee, een andere fontsizequote:Op maandag 5 juli 2004 08:52 schreef Light het volgende:
[..]
Je wekt de indruk andere fonts te willen gebruiken voor Linux-gebruikers.
In wat ik zie is Sans 10px duidelijk groter dan verdana 10px.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.
Sans is een font family, Verdana een font van die family. Het hoeft niet hetzelfde te zijn, maar dat kan wel natuurlijk.quote:Op maandag 5 juli 2004 08:55 schreef Swetsenegger het volgende:
[..]
Nee, een andere fontsize
[..]
In wat ik zie is Sans 10px duidelijk groter dan verdana 10px.
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.quote:Ik maak dus gebruik van dezelfde stylesheet, alleen met kleinere fonts.
Ik ben me bewust dat ik alternatieve stylesheets kan gebruiken. Maar ik wil puur voor Linux een ander stylesheet.quote:Op maandag 5 juli 2004 09:10 schreef Light het volgende:
[..]
Sans is een font family, Verdana een font van die family. Het hoeft niet hetzelfde te zijn, maar dat kan wel natuurlijk.
[..]
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.
En weet je ook al waarom?quote:Op dinsdag 6 juli 2004 21:13 schreef Swetsenegger het volgende:
strstr($_SERVER['HTTP_USER_AGENT'], 'linux')
werkt trouwens niet...
stristr wel
http://nl2.php.net/manual/en/function.strstr.phpquote:Note: This function is case-sensitive. For case-insensitive searches, use stristr().
Geeft gewoon een output als:quote:Op maandag 5 juli 2004 09:26 schreef QuietGuy het volgende:
Zie http://nl.php.net/function.get-browser
Je kan het OS, etc. allemaal opvragen
quote:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)<hr />
<b>browser_name_pattern:</b> Mozilla/4\.5.*<br />
<b>parent:</b> Netscape 4.0<br />
<b>platform:</b> Linux<br />
<b>majorver:</b> 4<br />
<b>minorver:</b> 5<br />
<b>browser:</b> Netscape<br />
<b>version:</b> 4<br />
<b>frames:</b> 1<br />
<b>tables:</b> 1<br />
<b>cookies:</b> 1<br />
<b>backgroundsounds:</b> <br />
<b>vbscript:</b> <br />
<b>javascript:</b> 1<br />
<b>javaapplets:</b> 1<br />
<b>activexcontrols:</b> <br />
<b>beta:</b> <br />
<b>crawler:</b> <br />
<b>authenticodeupdate:</b> <br />
<b>msn:</b> <br />
ja... case sensitivequote:Op dinsdag 6 juli 2004 21:30 schreef sylvesterrr het volgende:
[..]
En weet je ook al waarom?
[..]
http://nl2.php.net/manual/en/function.strstr.php
En in sommige browsers kun je ook instellen hoe ze zichzelf noemen, en of het OS al dan niet moet worden meegestuurd.quote:Op maandag 5 juli 2004 09:26 schreef QuietGuy het volgende:
Zie http://nl.php.net/function.get-browser
Je kan het OS, etc. allemaal opvragen
"Standaard sans" kan bij elke gebruiker weer een ander font zijn. Ligt aan de instellingen.quote:Op maandag 5 juli 2004 08:20 schreef Swetsenegger het volgende:
Inderdaad andere fonts. Gewoon standaard sans, maar 10 px sans is stukken groter dan 10px tohama. of verdana.
Helemaal betrouwbaar is het nooit, maar als men dit zelf modificeert moeten ze ook niet zeiken als ze verkeerd herkend wordenquote:Op dinsdag 6 juli 2004 21:54 schreef Light het volgende:
[..]
En in sommige browsers kun je ook instellen hoe ze zichzelf noemen, en of het OS al dan niet moet worden meegestuurd.
Da's wel weer waar natuurlijk.quote:Op dinsdag 6 juli 2004 21:57 schreef QuietGuy het volgende:
[..]
Helemaal betrouwbaar is het nooit, maar als men dit zelf modificeert moeten ze ook niet zeiken als ze verkeerd herkend worden
Dat begrijp ik....quote:Op dinsdag 6 juli 2004 21:55 schreef Berkery het volgende:
[..]
"Standaard sans" kan bij elke gebruiker weer een ander font zijn. Ligt aan de instellingen.
Uit de PHP documentatie:quote:Op dinsdag 6 juli 2004 22:05 schreef robh het volgende:
Ah.
Ik probeer uit te vogelen of er ook zoiets als een destructor bestaat voor php classes..
Iemand die dat weet?
Lijkt me duidelijk.quote:Note: There are no destructors in PHP 3 or PHP 4. You may use register_shutdown_function() instead to simulate most effects of destructors.
Destructors are functions that are called automatically when an object is destroyed, either with unset() or by simply going out of scope. There are no destructors in PHP.
quote:<?php
$date=date('l j F Y G:i ');
setcookie('date',$date,time()+100000000);
?>
quote:<?php
$last_visit=$_COOKIE['date'];
if ($last_visit!=''){
print ("Uw laatste bezoek was $last_visit");
}
?>
En wat is dan het nut van die +100000000?quote:Op dinsdag 6 juli 2004 23:29 schreef Swetsenegger het volgende:
Cool!
Ik heb mijn eerste volledig zelf uitgevonden functionele PHP script geschreven:
setcookie('date',$date,time()+100000000);
experation.quote:Op dinsdag 6 juli 2004 23:36 schreef Light het volgende:
[..]
En wat is dan het nut van die +100000000?
Dat klinkt wel logischquote:Op dinsdag 6 juli 2004 23:37 schreef Swetsenegger het volgende:
[..]
experation.
Een last visit gaat natuurlijk niet werken als het cookie expired zodra je de browser sluit
quote:Op dinsdag 6 juli 2004 23:44 schreef Light het volgende:
[..]
Dat klinkt wel logischEn als ze na 10.000.000 seconden nog niet terug zijn geweest dan is het ook niet zo heel verwonderlijk dat die lastvisit niet goed onthouden wordt. En daarbij, na ruim 7 jaar boeit het toch niet meer
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)quote:Op woensdag 7 juli 2004 08:42 schreef Swetsenegger het volgende:
[..]
10000000/3600=2777 uur/24=115 dagen
Hoezo 7 jaar?
Gelukkig bevat een dag meer dan 1 uurquote:Op woensdag 7 juli 2004 09:24 schreef Light het volgende:
[..]
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.
Maar....quote:<?php
$_COOKIE['date'];
if ($_COOKIE['date']!=''){
print ("<p class=\"highlight2\">Uw laatste bezoek was {$_COOKIE['date']}</p>\n");
}
?>
Dat werkt...quote:<?php
$_COOKIE['date'];
if(stristr($_COOKIE['date'], 'monday'))
{
$day=Maandag;
}
elseif(stristr($_COOKIE['date'], 'tuesday'))
{
$day=Dinsdag;
}
elseif(stristr($_COOKIE['date'], 'wednesday'))
{
$day=Woensdag;
}
elseif(stristr($_COOKIE['date'], 'thursday'))
{
$day=Donderdag;
}
elseif(stristr($_COOKIE['date'], 'friday'))
{
$day=Vrijdag;
}
elseif(stristr($_COOKIE['date'], 'saturday'))
{
$day=Zaterdag;
}
elseif(stristr($_COOKIE['date'], 'sunday'))
{
$day=Zondag;
}
if ($_COOKIE['date']!=''){
print ("Uw laatste bezoek was $day");
}
?>
quote:Om data te formatteren in andere talen dan engels, moet je de setlocale() en strftime() functies gebruiken.
Wat doet dit?quote:Op woensdag 7 juli 2004 20:57 schreef sylvesterrr het volgende:
<? setlocale(LC_ALL, 'nl_NL'); ?>
even lezen.quote:Staat de datum in je cookie opgeslagen als "Wednesday 7 July 2004 20.32" ? Dan is strtotime de juiste functie die je nodig hebt.
http://nl2.php.net/manual/en/function.setlocale.phpquote:Wat doet dit?
"Uw laatste bezoek was Wednesday 07 July 2004, 21:29 "quote:<?php
setlocale(LC_ALL, 'nl_NL');
$date=strftime("%A %d %B %Y, %H:%M");
setcookie('date',$date,time()+100000000);
?>
Blijkbaar is het een windows server....quote:Niet zo pessimistisch, Windows 2000 kan nog wel wat hoor. wink Het volgende geeft op Windows 2000 hetzelfde resultaat als wat ik hierboven schreef:
setlocale(LC_ALL, 'dutch');
quote:Op woensdag 7 juli 2004 20:55 schreef Swetsenegger het volgende:
en kan iemand de titel aanpassen naar [PHP] voor dummies
Ik heb een fantastische hint voor je:quote:Op zondag 4 juli 2004 23:35 schreef Swetsenegger het volgende:
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:
[..]
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...
*hint* lees de reacties ook even door *hint*quote:Op vrijdag 9 juli 2004 13:17 schreef SwiffMeister het volgende:
[..]
Ik heb een fantastische hint voor je:
post dit op tweakers die wete alles over dit probleem
quote:Op vrijdag 9 juli 2004 13:15 schreef Murray het volgende:
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?
http://nl2.php.net/manual/en/function.ini-set.phpquote:Op vrijdag 9 juli 2004 17:21 schreef Murray het volgende:
[..]
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.quote:Op vrijdag 9 juli 2004 13:17 schreef SwiffMeister het volgende:
[..]
Ik heb een fantastische hint voor je:
post dit op tweakers die wete alles over dit probleem
Bedoel je zoiets?quote:Op vrijdag 9 juli 2004 13:15 schreef Murray het volgende:
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?
Misschien...quote:
quote:Op zaterdag 10 juli 2004 23:42 schreef Swetsenegger het volgende:
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
quote:Op zondag 11 juli 2004 00:03 schreef devzero het volgende:
[..]
[afbeelding]Yes Dan zal ik het domain fok?.nl snel aanvragen of is tjapfok.nl beter? Gouden bergen, the sky is the limit![]()
Welk boek is het Swets,en heb je evt een isbn nr?quote:Op zondag 11 juli 2004 00:09 schreef Swetsenegger het volgende:
[..]
Mjah, voor iemand die een week geleden niets van php afwist vind ik het toch best redelijk
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).quote:Op zondag 11 juli 2004 00:09 schreef Swetsenegger het volgende:
[..]
Mjah, voor iemand die een week geleden niets van php afwist vind ik het toch best redelijk
Snel op weg - PHP voor het world wide webquote:Op zondag 11 juli 2004 00:11 schreef fotoloog het volgende:
[..]
Welk boek is het Swets,en heb je evt een isbn nr?
M'n zoon heeft het ook te pakken!
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...quote:Op zondag 11 juli 2004 00:14 schreef devzero het volgende:
[..]
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).
Die kleine is redelijk slim(2 vwo)quote:Op zondag 11 juli 2004 00:15 schreef Swetsenegger het volgende:
[..]
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
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.quote:Op zondag 11 juli 2004 00:17 schreef Swetsenegger het volgende:
De basics dan
Output:quote:Op zondag 11 juli 2004 00:25 schreef devzero het volgende:
[..]
<?php
$variable = 10;
echo $variabele*2;
?>
I love error_reporting(E_ALL)quote:Notice: Undefined variable: variabele in d:\server\www\test.php on line 3
0
Bingo, die zocht ikquote:Op zondag 11 juli 2004 09:26 schreef sylvesterrr het volgende:
I love error_reporting(E_ALL)
Persoonlijk vind ik dat een lelijke constructie. Dan nog maar liever ${naam}quote:Op zondag 11 juli 2004 09:30 schreef Swetsenegger het volgende:
Gewoon $naam= value.
Moeten foutmeldingen wel aan staan in de php.iniquote:Op zondag 11 juli 2004 10:07 schreef devzero het volgende:
[..]
Bingo, die zocht ik
quote:Op zondag 11 juli 2004 10:42 schreef Swetsenegger het volgende:
[..]
Moeten foutmeldingen wel aan staan in de php.ini
Anders voeg je voor de error reporting het volgende toe:
ini_set('display_errors',1);
http://nl2.php.net/manual/en/function.preg-replace.phpquote:Op zondag 11 juli 2004 10:49 schreef Swetsenegger het volgende:
Toc 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?
$str = substr($str, 0, $van).$replace.substr($str, $tot);quote:Op zondag 11 juli 2004 10:49 schreef Swetsenegger het volgende:
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?
Performance gericht scripten is tegenwoordig geen onderdeel van de opleiding meer?quote:Op zondag 11 juli 2004 10:51 schreef sylvesterrr het volgende:
[..]
http://nl2.php.net/manual/en/function.preg-replace.php
http://nl2.php.net/manual/en/function.ereg-replace.php
1. Welke opleiding?quote:Op zondag 11 juli 2004 10:51 schreef Roönaän het volgende:
[..]
Performance gericht scripten is tegenwoordig geen onderdeel van de opleiding meer?
1. Zelfstudie. Tegenwoordig wil men niet meer goed scripten, alleen maar werkend.quote:Op zondag 11 juli 2004 10:54 schreef sylvesterrr het volgende:
[..]
1. Welke opleiding?
2. Eerlijk gezegd vind ik jouw methode niet om aan te zien.
ff kijken of ik het begrijp...quote:Op zondag 11 juli 2004 10:51 schreef Roönaän het volgende:
[..]
$str = substr($str, 0, $van).$replace.substr($str, $tot);
quote:Op zondag 11 juli 2004 10:58 schreef Swetsenegger het volgende:
[..]
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]);
quote:Op zondag 11 juli 2004 10:57 schreef Roönaän het volgende:
[..]
1. Zelfstudie. Tegenwoordig wil men niet meer goed scripten, alleen maar werkend.
Weegt dat op tegen de onduidelijkheid van 2x strpos + die regel?quote:2. Want? 2x strpos + die regel is gewoon sneller dan het opstarten van je regexp engine.
Eén woord: documenterenquote:Daarnaast levert het regexpen vaak een onduidelijkheid in je code op als je het later wilt teruglezen.
Als je lang genoeg met regexps bezig bent, kun je je regexp best makkelijk herkennen.quote: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
Met alle respect hoor, maar is dat niet de schuld van de scripter zelf?quote: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.
Even ontleden, want gewoon copy paste is niet voldoende....quote:Op zondag 11 juli 2004 11:01 schreef Roönaän het volgende:
[..]
$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);
jou oplossing ziet er simpeler uit. Alleen weet ik dus niet wat er tussen de [.quote] en [./quote] staat...quote:Op zondag 11 juli 2004 11:22 schreef sylvesterrr het volgende:
-laat maar-
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.quote:Op zondag 11 juli 2004 11:19 schreef Swetsenegger het volgende:
[..]
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
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)quote:[./quote] zou staan, dan zou je zonder die derde param de eerste [./quote] krijgen waardoor later je replace gedeelte krom loopt (je eindindex is lager dan je beginindex). Als je die derde param toevoegt kijkt die alleen naar het stuk na [.quote] en vind die dus de goede, tweede, [./quote]
[quote]
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...
aha, okquote:Op zondag 11 juli 2004 11:25 schreef Roönaän het volgende:
[..]
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.
Hmz, niet helemaal:quote:Op zondag 11 juli 2004 11:47 schreef Swetsenegger het volgende:
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]
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:Op zondag 11 juli 2004 11:25 schreef Roönaän het volgende:
Als er bijvoorbeeld [./quote]
[./quote] zou staan, dan zou je zonder die derde param de eerste [./quote] krijgen waardoor later je replace gedeelte krom loopt (je eindindex is lager dan je beginindex). Als je die derde param toevoegt kijkt die alleen naar het stuk na [.quote] en vind die dus de goede, tweede, [./quote]
0 == "" == false, da's allemaal waar. Maar 0 === "" is false. En 0 === false en "" === false ook.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)
Mjah, in principe voorkom ik nu dat er nooit meer dan 2 keer een [.quote] en [./quote] in de tabel komt te staan.quote:Op zondag 11 juli 2004 12:03 schreef Light het volgende:
[..]
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.
[..]
0 == "" == false, da's allemaal waar. Maar 0 === "" is false. En 0 === false en "" === false ook.
Tja, je weet natuurlijk nooit wat mensen invoerenquote:Op zondag 11 juli 2004 12:07 schreef Swetsenegger het volgende:
[..]
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) gaan toevoegen, gaat het uieraard mis.
Wanneer iemand gewoon 'quote' klikt en zijn aanvulling erbij zet niet.
$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.quote:Behalve dan dat ik met roonaans code een [./quote] extra overhou....
OE, die is mooier dan mijn verzonnen oplossing:quote:Op zondag 11 juli 2004 12:14 schreef Light het volgende:
[..]
Tja, je weet natuurlijk nooit wat mensen invoeren
[..]
$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.
strpos geeft de positie van het begin van die string.quote:Op zondag 11 juli 2004 12:20 schreef Swetsenegger het volgende:
Alleen begrijp ik niet dat quote_start WEL goed gaat (en niet tot en met [.quote]) en quote_einde niet
ja, maar in geval van quote_start toch ook tot en met [.quote]?quote:Op zondag 11 juli 2004 12:24 schreef sylvesterrr het volgende:
[..]
strpos geeft de positie van het begin van die string.
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 jequote:Op zondag 11 juli 2004 12:34 schreef Swetsenegger het volgende:
[..]
ja, maar in geval van quote_start toch ook tot en met [.quote]?
Dat begrijp ik tenminste uit de beschrijving op php.net
Yep, ik zie het nu.quote:Op zondag 11 juli 2004 13:00 schreef Light het volgende:
[..]
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
eh... snap ik niet.quote:Op maandag 12 juli 2004 13:44 schreef Roönaän het volgende:
Na het verzenden gewoon meteen redirecten.
header('Location: index.php');
Ah okee.quote:Op maandag 12 juli 2004 13:45 schreef Swetsenegger het volgende:
[..]
eh... snap ik niet.
Wat redirect ik? Ik wil die mensen wel op die pagina houden
Ik snappum wel... ff testen, want dit zou precies zijn wat ik nodig hebquote:Op maandag 12 juli 2004 13:49 schreef Roönaän het volgende:
[..]
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.
er mag voor een header helemaal geen output zijn wil je dat wel gebruik dan include()quote:Op maandag 12 juli 2004 14:26 schreef Swetsenegger het volgende:
Hmz, header werkt alleen voor alle HTML? Dus alleen zo...:
<?php
header("location: blabla");
?>
<html>
<head>
.......
</html>
waarom met een tijdsperiode??quote:Op maandag 12 juli 2004 16:22 schreef Ali Salami het volgende:
Controle of hetzelfde al in de db staat van die user, binnen een bepaalde tijdsperiode
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:quote:Op maandag 12 juli 2004 14:26 schreef Swetsenegger het volgende:
Hmz, header werkt alleen voor alle HTML? Dus alleen zo...:
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.quote:Op maandag 12 juli 2004 16:33 schreef mschol het volgende:
[..]
waarom met een tijdsperiode??
das niet nodig...
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.quote:Op maandag 12 juli 2004 22:18 schreef Lord_Of_Darkness het volgende:
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
Met deze extra regel:quote:Op zondag 11 juli 2004 11:01 schreef Roönaän het volgende:
[..]
$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);
Hmz, ja voor een 'halve' quote zeg maar.....quote:Op dinsdag 13 juli 2004 15:34 schreef Roönaän het volgende:
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
Hoe vind het onderscheid tussen url en info plaats? Neem aan een spatie of iets dergelijks?quote:Op woensdag 14 juli 2004 10:26 schreef Swetsenegger het volgende:
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?
Ik heb nu dit en dat werkt:quote:Op woensdag 14 juli 2004 10:41 schreef Roönaän het volgende:
[..]
Hoe vind het onderscheid tussen url en info plaats? Neem aan een spatie of iets dergelijks?
tenminste... zolang er maar 1 url in de string staat.quote:$url_start = strpos($invoer, 'www');
$url_einde = strpos($invoer, ' ', $url_start);
if($url_start !== false && $url_einde !== false){
$url = substr($invoer, $url_start, $url_einde);
$invoer=str_replace($url,'<a href="http://'.$url.'" rel="external">'.$url.'</a>',$invoer);
print("$invoer");}
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.quote:Op woensdag 14 juli 2004 10:54 schreef Roönaän het volgende:
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.
quote:$invoer=
Hoi, kijk ook eens op www.123swets.com geweldig mooie site.
wordt
$uitvoer=
Hoi, kijk ook eens op <a href="www.123swets.com" rel="external">www.123swets.com</a> geweldig mooie site.
Vind jij dit overzichtelijk?quote:Op woensdag 14 juli 2004 10:54 schreef Roönaän het volgende:
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.
Zeker weten.quote:Maar een reguliere expressie is denk ik makkelijker,
Ja dat begrijp ik ook nog niet ergquote:Op woensdag 14 juli 2004 10:56 schreef Da_Koen het volgende:
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......
Ja preciesquote:Op woensdag 14 juli 2004 11:03 schreef Roönaän het volgende:
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.
Dit geeft als outputquote:$preg_test = preg_replace("/(www*(.*?)[ ])[nr]*(.?)/is",'<a href="http://\1" rel="external">\1</a> ',$invoer);
print("<div class=\"response\">$preg_test</div>");
Ok, die extra spatie in de href snap ik... maar waar is de 'e' van 'er' geblevenquote:<div class="response">laten we <a href="http://www.sitecom.com " rel="external">www.sitecom.com </a> r eens uit vissen.</div>
Nu die laatste spatie er nog uit...quote:$preg_test = preg_replace("/(www*(.*?)\s)/i",'<a href="http://\1" rel="external">\1</a> ',$invoer);
print("<div class=\"response\">$preg_test</div>");
Geen moerquote:Op woensdag 14 juli 2004 13:57 schreef Roönaän het volgende:
en wat gebeurt er met de mogelijk voorafgaande http:// als mensen die intypen?
Dat ga je niet menenquote:Op woensdag 14 juli 2004 14:39 schreef Roönaän het volgende:
Waarom kan je geen or's gebruiken dan?
(\s|$)
Ik krijg al een mail wanneer iemand een bericht post. Die was ik vergetenquote:Op woensdag 14 juli 2004 15:58 schreef Roönaän het volgende:
Emailnotificatie?
xml/rss stream voor je newsreader
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?quote:Op woensdag 14 juli 2004 17:28 schreef woutabest het volgende:
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.
Die moet je wel bekijken in je PHP directory.quote:Op woensdag 14 juli 2004 17:39 schreef woutabest het volgende:
die ik zelf net gemaakt heb (tutorial start, 1 echootje)
als je em wilt bewerken moet je em eff openen met notepadquote:Op woensdag 14 juli 2004 17:39 schreef woutabest het volgende:
die ik zelf net gemaakt heb (tutorial start, 1 echootje)
quote:Op woensdag 14 juli 2004 17:45 schreef Swetsenegger het volgende:
[..]
blabla
Laat je html eens valideren op http://validator.w3.org/quote:Op woensdag 14 juli 2004 19:45 schreef Swetsenegger het volgende:
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?
XHTML1.1 strict validated. Zoals gezegd, mijn html is primaquote:Op woensdag 14 juli 2004 20:58 schreef robh het volgende:
[..]
Laat je html eens valideren op http://validator.w3.org/
Ik vond 'm net op php.netquote:Op woensdag 14 juli 2004 22:03 schreef robh het volgende:
Lege cookie sturen![]()
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 natuurlijkquote:Op donderdag 15 juli 2004 14:29 schreef Roönaän het volgende:
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?
dreamweaverquote:Op donderdag 15 juli 2004 17:48 schreef Swetsenegger het volgende:
Iemand trouwens een tip voor een goede php editor (text geen wysiwyg). In notepad wordt het wat onoverzichtelijk...
Precies, maar welke zijn dat?quote:Op donderdag 15 juli 2004 18:01 schreef Roönaän het volgende:
Maar alles met syntax highlighting en regelnummering is prima eik.
http://www.editpadpro.com/editpadlite.htmlquote:Op donderdag 15 juli 2004 18:47 schreef Swetsenegger het volgende:
[..]
Precies, maar welke zijn dat?
Precies wat ik zochtquote:Op donderdag 15 juli 2004 19:02 schreef ToBe het volgende:
Ik gebruik zelf Win Syntax, freeware en erg snel en simpel
http://www.winsyntax.com/
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 prettigquote:Op donderdag 15 juli 2004 19:39 schreef Da_Koen het volgende:
Ik vind notepad van XP toch nog altijd het lekkerst werken.....
Regelnummers heb je ook bij notepad! Beeld -> statusbalk, dat is wel handig iddquote:Op donderdag 15 juli 2004 19:48 schreef Swetsenegger het volgende:
[..]
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
die is greyed out bij mijquote:Op donderdag 15 juli 2004 19:50 schreef Da_Koen het volgende:
[..]
Regelnummers heb je ook bij notepad! Beeld -> statusbalk, dat is wel handig idd
* mschol kijkt er eff naar..quote:Op donderdag 15 juli 2004 19:56 schreef Swetsenegger het volgende:
[..]
die is greyed out bij mij
greyed watte?quote:Op donderdag 15 juli 2004 19:56 schreef Swetsenegger het volgende:
[..]
die is greyed out bij mij
Mooi en prachtigquote:$invoer = preg_replace("/(www*.*?)(\s|$|\[)/i",'<a href="http://\1" rel="external">\1</a> ',$invoer);
met die link ben ik aan deze regexp gekomenquote:Op donderdag 15 juli 2004 21:27 schreef Light het volgende:
$invoer = preg_replace("/(www*.*?)(\s|$|\[)/i",'<a href="http://\1" rel="external">\1</a>\2',$invoer);
En dit kan ook wel eens helpen
quote:Op donderdag 15 juli 2004 21:27 schreef Light het volgende:
$invoer = preg_replace("/(www*.*?)(\s|$|\[)/i",'<a href="http://\1" rel="external">\1</a>\2',$invoer);
In hoeverre is dat anders van wat ik doe? Het is wat.... duidelijker.quote:Op donderdag 15 juli 2004 21:33 schreef Light het volgende:
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.
Ik zit nog met twee probleempjes mbt de regexp's.quote:$invoer = preg_replace("/([a-z0-9._-]*@.*?)(\s|$|\[)/i",'<a href="mailto:\1">\1</a>\2',$invoer);
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.quote:Op donderdag 15 juli 2004 21:37 schreef Swetsenegger het volgende:
[..]
In hoeverre is dat anders van wat ik doe? Het is wat.... duidelijker.
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?
Ik heb enige ervaringquote:Op donderdag 15 juli 2004 21:49 schreef Swetsenegger het volgende:
Light, hoe lang PHP jij al?
dit ga ik nog even langzaam lezen.quote:Op donderdag 15 juli 2004 21:54 schreef Light het volgende:
[..]
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.
Ja, ik had ff verder nagedacht en begreep het alquote: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
Ik heb dit nuquote:Op donderdag 15 juli 2004 22:01 schreef Light het volgende:
Trouwens, aan die url parser kan nog wel het een en ander verbeterd worden. Maar ik stoe eerst even met dat mailadres ding
Ik vond al dat ik aardig ver gekomen wasquote:Op donderdag 15 juli 2004 21:57 schreef Light het volgende:
[..]
Ik heb enige ervaring
En reguliere expressies zijn leuk om mee te spelen
Kan je onderhand dat laatste stuk niet veranderen in een expressie die zegt:quote:Op donderdag 15 juli 2004 22:04 schreef Swetsenegger het volgende:
[..]
Ik heb dit nu
$uitvoer = preg_replace("/(www\..*)(\s|$|\[|\]|<|>|!|\?|&|\*|\(|\)|\")/Ui",'<a href="http://\1" rel="external">\1</a>\2',$uitvoer);
*denkt*quote:Op donderdag 15 juli 2004 22:14 schreef Roönaän het volgende:
[..]
Kan je onderhand dat laatste stuk niet veranderen in een expressie die zegt:
totdat ik een andere karakter tegenkom dan wat wel mag
*mompelt* wat was het verschil ook alweerquote:Voor ereg-replace zou dat laatste stuk ([^A-Za-z0-9~.\\/]zijn maar ik weet niet wat de pregversie daarvan is.
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 keerquote:Op donderdag 15 juli 2004 22:28 schreef Light het volgende:
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);
LEUK?!?!quote:Op donderdag 15 juli 2004 21:57 schreef Light het volgende:
[..]
Ik heb enige ervaring
En reguliere expressies zijn leuk om mee te spelen
Het is wel hoofdpijn code jaquote:Op donderdag 15 juli 2004 22:34 schreef mschol het volgende:
[..]
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???
Op een vergelijkbare manierquote:Op donderdag 15 juli 2004 22:14 schreef Roönaän het volgende:
Voor ereg-replace zou dat laatste stuk ([^A-Za-z0-9~.\\/]* ) zijn maar ik weet niet wat de pregversie daarvan is.
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:Op donderdag 15 juli 2004 22:32 schreef Swetsenegger het volgende:
[..]
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
Dat wordt dan ook vertaald naar een mailadres. Inclusief die 09, dus een werkend adres wordt het niet.quote:wat doet jeroen@123swets.com09 in dit geval?
Nee, ik moet me ook zien te redden met de engelse.quote:Op donderdag 15 juli 2004 22:34 schreef mschol het volgende:
heb jij toevallifg een goede nederlandse uitleg over rexexp in php???
Dat doet mijn code ook bedenk ik me nu.quote:Op donderdag 15 juli 2004 22:47 schreef Light het volgende:
]Dat wordt dan ook vertaald naar een mailadres. Inclusief die 09, dus een werkend adres wordt het niet.
Deze niet:quote:Op donderdag 15 juli 2004 22:52 schreef Swetsenegger het volgende:
[..]
Dat doet mijn code ook bedenk ik me nu.
Graag gedaanquote:Tis ondertussen te laat voor diepzinnige regexp overpeinzingen
Bedankt voor je hulp!
oe... dat vetgedrukte ontgaat me nu ff...quote:Op donderdag 15 juli 2004 22:55 schreef Light het volgende:
[..]
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);
Dan zou het misgaan als er na de apestaart iets staat als mail.123swets.comquote:Op donderdag 15 juli 2004 22:52 schreef Swetsenegger het volgende:
-edit- maar als je na die punt na de apestaart de cijfercombo weglaat klopt het wel
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.quote:Op donderdag 15 juli 2004 22:57 schreef Swetsenegger het volgende:
[..]
oe... dat vetgedrukte ontgaat me nu ff...
Morgen
Maar www.123swets.com/test gaat nog wel mis.quote:Op donderdag 15 juli 2004 23:03 schreef Swetsenegger het volgende:
$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?
Ja ik zie hetquote:Op donderdag 15 juli 2004 23:08 schreef Light het volgende:
[..]
Maar www.123swets.com/test gaat nog wel mis.
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 isquote:Op donderdag 15 juli 2004 23:13 schreef Swetsenegger het volgende:
[..]
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
LOL, dit is ongeveer de regexp welke ik zat te bedenken in mijn hoofd:quote:Op donderdag 15 juli 2004 23:27 schreef Light het volgende:
$invoer = preg_replace("/(www(\.[-A-Za-z0-9]+)+\.[A-Za-z]{2,4}(\/\~?[-A-Za-z0-9\.\/?%&=#]* )?)/i",'<a href="http://\1" rel="external">\1</a>',$invoer);
Volgens mij gaan we nu een beetje voorbij aan de topictitelquote:Op vrijdag 16 juli 2004 09:49 schreef Roönaän het volgende:
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....
mjah, hij negeert de http:// gewoon en zet de www erachter wel netjes naar een url. Niets aan de hand dusquote:Op vrijdag 16 juli 2004 09:23 schreef Light het volgende:
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.
Je kan er toch een eenvoudige (((http|https|ftp)://)?) tussenplakken aan het begin? Dan heb je dat ook afgevangen.quote:Op vrijdag 16 juli 2004 11:17 schreef Swetsenegger het volgende:
[..]
mjah, hij negeert de http:// gewoon en zet de www erachter wel netjes naar een url. Niets aan de hand dus
quote:Op vrijdag 16 juli 2004 12:06 schreef Roönaän het volgende:
[..]
Je kan er toch een eenvoudige (((http|https|ftp)://)?) tussenplakken aan het begin? Dan heb je dat ook afgevangen.
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..quote:Op donderdag 15 juli 2004 22:36 schreef Swetsenegger het volgende:
[..]
Het is wel hoofdpijn code ja
Maar wel krachtig!
^ begin stringquote:Op vrijdag 16 juli 2004 13:07 schreef mschol het volgende:
[..]
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
(((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.quote:Op vrijdag 16 juli 2004 12:06 schreef Roönaän het volgende:
[..]
Je kan er toch een eenvoudige (((http|https|ftp)://)?) tussenplakken aan het begin? Dan heb je dat ook afgevangen.
een CMS bouwen ???quote:Op vrijdag 16 juli 2004 20:09 schreef Swetsenegger het volgende:
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
Ja, dat idee had ik alquote:Op vrijdag 16 juli 2004 21:16 schreef mschol het volgende:
[..]
een CMS bouwen ???
quote:if(isset($_POST['submit'])){
if(($_POST['username']=='testnaam') AND ($_POST['password']=='testpass')){
session_start();
$_SESSION['username']='testnaam';
$_SESSION['password']='testpass';
header("Location: onderhoud.php");
ob_end_flush();
}else{
header("Location: login.php");
ob_end_flush();}
is wat netter.quote:if($_SERVER['REQUEST_METHOD'] == 'POST') {
if($_POST['username'] == 'testnaam' && $_POST['password'] == 'testpass') {
session_start();
$_SESSION['username'] = 'testnaam'];
$_SESSION['password'] = 'testpass';
header('Location: onderhoud.php');
}
else {
header('Location: login.php');
}
}
Ja...quote:Op zaterdag 17 juli 2004 19:01 schreef sylvesterrr het volgende:
[..]
is wat netter.
maar ehh...je weet zeker dat die invoervelden ook echt bestaan in dat formulier?
quote:<?php
if(isset($_POST['logout'])){
session_start();
unset($_SESSION);
session_destroy();
header("Location: login.php");
ob_end_flush();}// output buffering stoppen en alles doorsturen naar de client.
if(isset($_POST['submit'])){
if(($_POST['username']=='testnaam') AND ($_POST['password']=='testpass')){
session_start();
$_SESSION['username']='testnaam';
$_SESSION['password']='testpass';
header("Location: onderhoud.php");
ob_end_flush();// output buffering stoppen en alles doorsturen naar de client.
}else{
header("Location: login.php");
ob_end_flush();}// output buffering stoppen en alles doorsturen naar de client.
}
else{
print('<form action="login.php" method="post">
<p class="highlight2">Username:</p>
<input type="text" name="username" size="20" />
<p class="highlight2">Password:</p>
<input type="text" name"password" size="20" />
<input type="submit" name="submit" value="Log in" />
<input type="submit" name="logout" value="Log out" />
</form>');
}
?>
$_POST['password'] bestaat dus niet eens.quote:array(2) { ["username"]=> string(8) "testnaam" ["submit"]=> string(6) "Log in" }
En ik kom alleen op login.php terechtquote:<?php
ob_start(); //starten output buffering
if(($_SESSION['username']!='testnaam') AND ($_SESSION['password']!='testpass')){
header("Location: login.php");
exit();
ob_end_flush();}// output buffering stoppen en alles doorsturen naar de client.
?>
Voortaan wat beter slapen he.quote:Op zaterdag 17 juli 2004 20:14 schreef Swetsenegger het volgende:
AAAARGH,
session_start()
![]()
Ik zou dan gaan voor:quote:Op zaterdag 17 juli 2004 19:09 schreef sylvesterrr het volgende:
--> <input type="text" name="password" size="20" />
Inderdaad, maar daar ging het niet om.quote:Op zaterdag 17 juli 2004 20:33 schreef Light het volgende:
[..]
Ik zou dan gaan voor:
<input type="password" name="password" size="20" />
Dat had ik al aangepast, maar om te zien of je geen tikfouten in je password maakt...quote:Op zaterdag 17 juli 2004 20:33 schreef Light het volgende:
[..]
Ik zou dan gaan voor:
<input type="password" name="password" size="20" />
Om te zien of je je wachtwoord wel kunt tikken is type="text" wel handig, da's waarquote:Op zondag 18 juli 2004 00:17 schreef Swetsenegger het volgende:
[..]
Dat had ik al aangepast, maar om te zien of je geen tikfouten in je password maakt...
Wat trouwens wel erg lekker is bij winsyntax dat hij de corresponderende { en } aangeeft!quote:Op donderdag 15 juli 2004 19:23 schreef Swetsenegger het volgende:
[..]
Precies wat ik zocht
quote:Op maandag 19 juli 2004 12:31 schreef Swetsenegger het volgende:
[..]
Wat trouwens wel erg lekker is bij winsyntax dat hij de corresponderende { en } aangeeft!
In beide gevallen heb ik me de tering gezochtquote:Op maandag 19 juli 2004 12:48 schreef sylvesterrr het volgende:
[..]
[afbeelding]
Nu is dat wel handig ja.
[afbeelding]
Nu is dat ook wel handig, maar niet noodzakelijk.
Ja zo strak doe ik het nietquote:Op maandag 19 juli 2004 15:31 schreef slindenau het volgende:
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:
[afbeelding]
Dit is maar een voorbeeldje, hier kan je snel zien welke accolade bij welke statement hoort.
He, het inspringen doen we op dezelfde manier, maar het plaatsen van de accolades blijkbaar niet.quote:Op maandag 19 juli 2004 15:31 schreef slindenau het volgende:
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.
op die laatste manier deed ik het al standaard terwijl mij verteld werdt dat je juist de andere moest gebruiken..quote:Op maandag 19 juli 2004 16:41 schreef sylvesterrr het volgende:
[..]
He, het inspringen doen we op dezelfde manier, maar het plaatsen van de accolades blijkbaar niet.Ik moet toegeven dat jouw manier wel wat duidelijker is. Ik zal proberen mezelf aan te leren zo te scripten.
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.quote:Op woensdag 21 juli 2004 22:32 schreef Swetsenegger het volgende:
Is er ergens een site waar de snelheid per PHP functie te vinden is? In millesec of in clockcycli ofzo?
quote:for($i=0; $i<100000;$i++)
{
list($usec, $sec) = explode(" ", microtime());
$begin = ((float)$usec + (float)$sec);
//begin je functie
//eind je functie
list($usec, $sec) = explode(" ", microtime());
$eind = ((float)$usec + (float)$sec);
$parsetime[]=$eind-$begin;
}
echo "De gemiddelde parsetime: ".(array_sum($parsetime)/count($parsetime));
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_replacequote:Op woensdag 21 juli 2004 22:47 schreef slindenau het volgende:
[..]
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:
[..]
Die lijsten zullen niet bestaan, omdat de snelheid afhangt van de snelheid van de serverquote:Op woensdag 21 juli 2004 22:50 schreef Swetsenegger het volgende:
[..]
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
Dan kan je het toch in cycli aangeven ipv in harde waardes. bij een snelle server zal een cyclus sneller voorbij zijn.quote:Op woensdag 21 juli 2004 22:58 schreef slindenau het volgende:
[..]
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.
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 nietquote:Op donderdag 22 juli 2004 09:30 schreef Roönaän het volgende:
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]);
Voor unieke bezoekers heb ik nu ditquote:$query='SELECT * FROM stats WHERE pagina="/index.php"';
$result=mysql_query($query);
$index_hits=mysql_num_rows($result);
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....quote:$query='SELECT DISTINCT ip_address FROM stats WHERE pagina="/index.php"';
$result=mysql_query($query);
$index_visitor=mysql_num_rows($result);
Zoiets of ditissum?quote:Op zondag 1 augustus 2004 21:14 schreef Ali Salami het volgende:
SELECT date,count(ip) FROM ip_address ORDER BY date DESC
zoiets
En het resultaat hiervan is bv '6'?quote:Op zondag 1 augustus 2004 21:32 schreef Ali Salami het volgende:
SELECT date, count(DISTINCT ip) FROM ip_address` GROUP BY date
Die was het
Ja dat dacht ik al, maar dat zoek ik dus niet.quote:Op zondag 1 augustus 2004 21:34 schreef Ali Salami het volgende:
Per datum weergegeven
datum - aantal verschillende ip's
datum2 - aantal verschillende ip's
etc
ip_address bevat dus zoiets als 80.163.249.138 (per hit)quote:$query="INSERT INTO stats
(stats_id,ip_address,pagina,datum_geplaatst)
VALUES(0,'$ip_stats','$pagina', NOW())";
Ik zal het morgen pas wetenquote:$query='SELECT ip_address, datum_geplaatst FROM stats WHERE pagina="/index.php" GROUP BY datum_geplaatst, ip_address';
$result=mysql_query($query);
$index_visitor=mysql_num_rows($result);
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.quote:dag 1 - 2 hits
dag 2 - 3 hits
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:IP - DAG - PAGINA
1 - 2004-01-01 - index.php
2 - 2004-01-01 - index.php
2 - 2004-01-01 - index.php
2 - 2004-01-01 - index.php
1 - 2004-01-02 - index.php
2 - 2004-01-02 - index.php
3 - 2004-01-02 - index.php
3 - 2004-01-02 - index.php
en dan output en eventuele extra'squote:while(list($dag,$ip)==mysql_fetch_array($result))
{
$dagtotaal=$dagtotaal+$ip;
}
quote:$aantal_dagen=mysql_num_rows($result);
$gem=$dagtotaal/$aantal_dagen
print $dagtotaal;
print $gem;
Ik was alleen op zoek naar totalen, maar per dag is natuurlijk ook wel weer geil.quote:Op zondag 1 augustus 2004 22:56 schreef Ali Salami het volgende:
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:
[..]
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.
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..
Dat klopt ja. wanneer je per pagina unieke IP's telt, dan is het totaal van de pagina's anders dan website wide.quote:Op zondag 1 augustus 2004 23:12 schreef Ali Salami het volgende:
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
moet het dan niet:quote:Op dinsdag 24 augustus 2004 21:40 schreef Light het volgende:
Is dit dan wat je zoekt?
"SELECT * FROM database WHERE ID>=".$waarde." ORDER BY ID LIMIT 0,10
Neequote:Op dinsdag 24 augustus 2004 21:45 schreef mschol het volgende:
[..]
moet het dan niet:
"SELECT * FROM database WHERE ID>=".$waarde." ORDER BY ID LIMIT ".$waarde.",10"
zijn??![]()
Dat laatste is wel de bedoeling.quote:Op dinsdag 24 augustus 2004 21:59 schreef Light het volgende:
[..]
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.
En mijn querys worden danquote:$result=mysql_query('SELECT COUNT(id) AS aantal FROM database');
$row = mysql_fetch_assoc($result);
$total_reactions=$row['aantal'];
$total_pages=ceil("$total_reactions"/10);
$page_number=0;
while($total_pages){
$total_pages--;
$page_number++;
$page_offset_asc=($page_number*10)-9;
$page_offset_desc=$total_reactions-(($page_number-1)*10);
print('<a href="pagina.php?sort='.$sort.'&pageup='.$page_offset_asc.'&pagedown='.$page_offset_desc.'">'.$page_number.'</a> ');
}
en dan nog wat geneuzel....quote:if(!empty($_GET['pageup'])){
$offset_asc=($_GET['pageup']);
}else{
$offset_asc=1;
}
if(!empty($_GET['pagedown'])){
$offset_desc=($_GET['pageup']);
}else{
$offset_desc=$total_reactions;
}
if(!empty($_GET['sort'])){
if(($_GET['sort'])=='down'){
$arrow='../image/down.gif';
$sort='up';
$query='SELECT * FROM database WHERE id>='.$offset_asc.' ORDER BY id ASC LIMIT 10';
}elseif(($_GET['sort'])=='up'){
$arrow='../image/up.gif';
$sort='down';
$query='SELECT * FROM database WHERE id<='.$offset_desc.' ORDER BY id DESC LIMIT 10';}
Waarom wil je gedelete ID's zien ?quote:Op dinsdag 24 augustus 2004 22:30 schreef Swetsenegger het volgende:
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
Ik wil geen gedelete ID's zien. Ik wil de aanwezige ID's zien.quote:Op woensdag 25 augustus 2004 08:01 schreef _-rally-_ het volgende:
[..]
Waarom wil je gedelete ID's zien ?
Waarom doe je dat ? Waarom niet als je op pag 1 32 - 20 hebt, de query voor pag. 2: where id <20 ?quote:Op woensdag 25 augustus 2004 08:42 schreef Swetsenegger het volgende:
[..]
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)
Bij het maken van je link moet je dan één keer door je hele tabel heen lopen, in stappen van 10..
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.quote:Op woensdag 25 augustus 2004 10:48 schreef _-rally-_ het volgende:
[..]
Waarom doe je dat ? Waarom niet als je op pag 1 32 - 20 hebt, de query voor pag. 2: where id <20 ?
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.quote:Op woensdag 25 augustus 2004 11:19 schreef Swetsenegger het volgende:
[..]
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.
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.quote:Op woensdag 25 augustus 2004 11:32 schreef _-rally-_ het volgende:
[..]
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.
*kijkt*quote:Op woensdag 25 augustus 2004 11:49 schreef Light het volgende:
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.
quote:$page_offset_desc=$top_id-(($page_number-1)*10);
Ja ok, maar dan heb ik dus het probleem van ontbrekende ID's.quote:Op woensdag 25 augustus 2004 12:06 schreef Light het volgende:
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';
Maar wat is die 20 dan?quote:Op woensdag 25 augustus 2004 12:35 schreef Light het volgende:
Nee, het probleem van de ontbrekende ID's speelt alleen als je de ID-selectie dmv WHERE doet.
Mijn heldquote:Op woensdag 25 augustus 2004 12:47 schreef Light het volgende:
LIMIT 20,10 (of LIMIT 10 OFFSET 20) wil zeggen:
Sla de eerste 20 resultaten over en lever de volgende 10 op.
Dat ging niet helemaal goed, maar dat zal meer aan mijn implementatie liggen dan aan jou advies. Ik rommel nog ff verderquote:Op woensdag 25 augustus 2004 13:24 schreef Light het volgende:
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.
Ik wil wel een keer een uitzondering maken hoor.quote:Op woensdag 25 augustus 2004 13:43 schreef Swetsenegger het volgende:
Light, mag ik je kussen
En ik ben blij dat je wat hebt aan mijn uitlegquote:Bedankt voor het inzichtelijk maken van wat SQL voor me.
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.quote:Wat had ik fout gedaan aan de DESC kant. Ik wilde daar starten met het hoogste ID. Stom, dat doet DESC wel voor me.
al eens array_rand geprobeerd?quote:Op woensdag 25 augustus 2004 14:03 schreef cygnusx het volgende:
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
ASC is dus de default waarde?quote:Op woensdag 25 augustus 2004 13:54 schreef Light het volgende:
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.
Yep, ORDER BY sorteert standaard oplopend.quote:Op woensdag 25 augustus 2004 14:11 schreef Swetsenegger het volgende:
[..]
ASC is dus de default waarde?
Voor future reference is het wel makkelijk om het erbij te vermelden
Weer wat geleerd.quote:Op woensdag 25 augustus 2004 14:14 schreef Light het volgende:
[..]
Yep, ORDER BY sorteert standaard oplopend.
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.quote:Op woensdag 25 augustus 2004 14:18 schreef Swetsenegger het volgende:
[..]
Weer wat geleerd.
Heb je misshcien nog een tip voor een goed nederlandstalig MySQL boek?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |