Je hebt het goed begrepenquote:Op vrijdag 24 oktober 2008 00:35 schreef Dzy het volgende:
Lapo:
Aangezien hij die constructie met [] ook niet kende zal hij het nog wel niet zo lang doen, dus ook een vrij grote kans dat hij nog maar net begonnen is met programmeren, dan is dat allemaal nog niet zo vanzelfsprekend.
Bedankt, zal er eens mee gaan spelen.quote:Op vrijdag 24 oktober 2008 00:50 schreef CraZaay het volgende:
Even in een notendop danDe [] zorgt ervoor dat de inputs (of meer: hun waarden) als elementen in een array terecht komen. Met print_r() kun je de inhoud van een array human-readable tonen. Zo, dat was de les voor vandaag
(tevens TVP)
Dan neem ik deze TVP even van je overquote:Op vrijdag 24 oktober 2008 00:50 schreef CraZaay het volgende:
Even in een notendop danDe [] zorgt ervoor dat de inputs (of meer: hun waarden) als elementen in een array terecht komen. Met print_r() kun je de inhoud van een array human-readable tonen. Zo, dat was de les voor vandaag
(tevens TVP)
Doe ik meequote:Op vrijdag 24 oktober 2008 08:55 schreef JortK het volgende:
[..]
Dan neem ik deze TVP even van je over
Memcache was daar voor geloof ikquote:Op vrijdag 24 oktober 2008 10:24 schreef PiRANiA het volgende:
Wie weet hoe je het beste resultaten van queries kan cachen?
De output is als volgt:quote:Op vrijdag 24 oktober 2008 00:50 schreef CraZaay het volgende:
Even in een notendop danDe [] zorgt ervoor dat de inputs (of meer: hun waarden) als elementen in een array terecht komen. Met print_r() kun je de inhoud van een array human-readable tonen. Zo, dat was de les voor vandaag
(tevens TVP)
1 2 3 4 5 6 7 | [specificatie] => 2 [afdeling] => 24 [uren] => Array ( [0] => 8 [1] => 4 [2] => 3 [3] => 1 [4] => 2 ) [callnr] => Array ( [0] => 1234 [1] => 4321 [2] => 1243 [3] => 1343 [4] => 1344 ) [omschrijving] => Array ( [0] => omschrijving1 [1] => omschrijving2 [2] => omschrijving3 [3] => omschrijving4 [4] => omschrijving5 ) [submit] => Submit ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $query2 = mysql_query( "SELECT `specid`, `specificatie` FROM `specificatie` ORDER BY `specificatie` ASC" ) or die (mysql_error()); echo "<select name='specificatie'>\n"; while ($data = mysql_fetch_assoc($query2)) { echo "<option value='".$data['specid']."'>".$data['specificatie']."</option>\n"; } echo "</select>\n"; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $query2 = mysql_query( "SELECT `afdelingid`, `afdeling` FROM `afdelingen` ORDER BY `afdeling` ASC" ) or die (mysql_error()); echo "<select name='afdeling'>\n"; while ($data = mysql_fetch_assoc($query2)) { echo "<option value='".$data['afdelingid']."'>".$data['afdeling']."</option>\n"; } echo "</select>\n"; ?> |
Ik gebruik altijd memcached (nu bezig met een project met 4 memcached servers, samen goed voor 16GB gereserveerd geheugen voor memcachedquote:Op vrijdag 24 oktober 2008 10:24 schreef PiRANiA het volgende:
Wie weet hoe je het beste resultaten van queries kan cachen?
Waarom wil je dat? Wil je meerdere afdelingen aan whatever-je-doet hangen? Zo ja, dan heb je iets nodig waarmee je meerdere waarden kunt selecteren (dus geen standaard <select>). Wil je gewoon één afdeling hebben, dan heb je ook geen array nodig toch?quote:Op vrijdag 24 oktober 2008 11:03 schreef TommyGun het volgende:
Alles klopt in principe, behalve specificatie en afdeling. Ik krijg het niet voor elkaar om die in een array te zetten.
Serializen, hoe werkt dat?quote:Op vrijdag 24 oktober 2008 11:11 schreef CraZaay het volgende:
[..]
Ik gebruik altijd memcached (nu bezig met een project met 4 memcached servers, samen goed voor 16GB gereserveerd geheugen voor memcached), maar je zou het ook op schijf op kunnen slaan (serialized).
Je hebt een array/object/whatever en gooit het door serialize(), waarna het een string is geworden. Deze kun je bijvoorbeeld opslaan in een bestand (of database, of wherever). Later kun je deze string met unserialize() weer omzetten naar het originele type & structuur. Zo doet memcached het bijvoorbeeld ook op de achtergrond: je gooit er een object en een key in, deze wordt serialized opgeslagen in het geheugen onder "key", en later wanneer je de waarde van "key" terug vraagt weer unserialized.\quote:
De entries komen zo in de DB te staan:quote:Op vrijdag 24 oktober 2008 11:13 schreef CraZaay het volgende:
[..]
Waarom wil je dat? Wil je meerdere afdelingen aan whatever-je-doet hangen? Zo ja, dan heb je iets nodig waarmee je meerdere waarden kunt selecteren (dus geen standaard <select>). Wil je gewoon één afdeling hebben, dan heb je ook geen array nodig toch?
Dan heb je dus geen array nodig voor afdeling (etc), want die is voor iedere entry gelijk. Je kunt daarvoor bij iedere insert dezelfde waarde gebruiken (en hebt dus geen array nodig).quote:
Nee, alles kan verschillen, op de afbeelding idd niet te zien maar de dropdown menu's geven meerdere keuzes.quote:Op vrijdag 24 oktober 2008 11:35 schreef CraZaay het volgende:
[..]
Dan heb je dus geen array nodig voor afdeling (etc), want die is voor iedere entry gelijk. Je kunt daarvoor bij iedere insert dezelfde waarde gebruiken (en hebt dus geen array nodig).
Ah, ok.quote:Op vrijdag 24 oktober 2008 11:56 schreef TommyGun het volgende:
[..]
Nee, alles kan verschillen, op de afbeelding idd niet te zien maar de dropdown menu's geven meerdere keuzes.
Dat werkt idd voor specificatie, maar niet voor afdeling vreemd genoeg.quote:Op vrijdag 24 oktober 2008 12:08 schreef CraZaay het volgende:
[..]
Ah, ok.
Ik zie in "echo "<select name='specificatie'>\n";" geen [] achter specificatie. Is dat het probleem
1 2 3 4 5 6 7 | [specificatie] => Array ( [0] => 1 [1] => 4 [2] => 2 [3] => 1 [4] => 2 ) [afdeling] => 22 [uren] => Array ( [0] => uur1 [1] => uur2 [2] => uur3 [3] => uur4 [4] => uur5 ) [callnr] => Array ( [0] => call1 [1] => call2 [2] => call3 [3] => call4 [4] => call5 ) [omschrijving] => Array ( [0] => test1 [1] => test2 [2] => test3 [3] => test4 [4] => test5 ) [submit] => Submit ) |
MySQL beweert `first_run` niet te kennen welke eerder in de query gedefineerd staat.quote:SELECT *,ADDTIME(last_action,"31:15:00") AS `first_run` FROM background_scheduler_timeout WHERE `first_run` <= NOW();
1 |
Kan gebeurenquote:Op zaterdag 25 oktober 2008 14:43 schreef Twisted_Logic het volgende:
Sorry de query was toch goed, de datum invoer gaat nog niet helemaal goed, hij pakt opeens de lokale datum en tijd ipv de ingevoerde![]()
Had ik niet eerder gezien
Maar goed het werkt, en ik had dus in de query niks fout gedaan
1 |
Niet op deze manier, omdat je variabelen binnen de "" staan.quote:Op zondag 26 oktober 2008 00:28 schreef Irix het volgende:
Even een korte vraag:
[ code verwijderd ]
Gaat dit werken? Het gaat mij om het gedeelte goals=goals+$goals. Ik weet dat games=games+1 werkt, maar of het ook op deze manier kan weet ik niet. Zo nee, hoe zou ik de query moeten veranderen?
Juist omdat de variabelen binnen "" staan, gaat het wel werken.quote:Op zondag 26 oktober 2008 00:46 schreef ursel het volgende:
[..]
Niet op deze manier, omdat je variabelen binnen de "" staan.
Heb je een ander voorstel voor "verhoog de huidige waarde met x"?quote:Maar waarom zou je de berekening zelf binnen je query willen doen?
Ik ben eigenlijk zelf nooit echt een voorstander van geweest om in de UPDATE/INSERT query zelf al te veel "functionaliteit" te zetten.
Voor zover ik kan zien, werkt het gewoon. Je moet uiteraard wel zorgen dat je variabelen vooraf worden gecontroleerd zodat ze geldige data bevatten.quote:Op zondag 26 oktober 2008 00:28 schreef Irix het volgende:
Even een korte vraag:
[ code verwijderd ]
Gaat dit werken? Het gaat mij om het gedeelte goals=goals+$goals. Ik weet dat games=games+1 werkt, maar of het ook op deze manier kan weet ik niet. Zo nee, hoe zou ik de query moeten veranderen?
Mja, zoals ik eigenlijk zei :quote:Op zondag 26 oktober 2008 08:27 schreef Light het volgende:
[..]
Voor zover ik kan zien, werkt het gewoon. Je moet uiteraard wel zorgen dat je variabelen vooraf worden gecontroleerd zodat ze geldige data bevatten.
Doormiddel van een kleine functie welke voor je de berekeningen doet. Hierin verwerk je gelijk een validatie op je variabele en return je de uitgerekende waarde welke je in je query kan zetten. Met vaste "verhoogwaarde" zou ik het nog wel doen, maar met een variabele eigenlijk niet.quote:Ik ben eigenlijk zelf nooit echt een voorstander van geweest om in de UPDATE/INSERT query zelf al te veel "functionaliteit" te zetten.
Dan moet je dus eerst alles uitlezen, vervolgens de nieuwe waardes berekenen en dan alles terugzetten. Het kan, maar je doet een onnodige query en je maakt een atomaire actie niet meer atomair. Dus kans op fouten.quote:Op zondag 26 oktober 2008 12:15 schreef ursel het volgende:
[..]
Mja, zoals ik eigenlijk zei :
[..]
Doormiddel van een kleine functioe welke voor je de berekeningen doet. Hierin verwerk je gelijk een validatie op je variabele en return je de uitgerekende waarde welke je in je query kan zetten.
Ik gebruik het zelf niet, geef de voorkeur aan ''. En bij '' werkt het niet om variabelen in de string te zetten, die worden dan niet geparsed. Iets als een \n voor een newline werkt ook alleen tussen "", als je dat tussen '' zet krijg je gewoon \n te zien.quote:Zal vast wel persoonlijke voorkeur zijn anders..
Dat van die variabele tusse "" gebruik ik eigenlijk nooit en dacht dat het niet werkte / dan wel not done was.
Maar blijkbaar heb ik dat dus mis.
Mja, 9 van de 10 keer heb ik nagenoeg alle waarde welke ik wil inserten/updaten al ter beschikking dus valt die extra query in het niets.quote:Op zondag 26 oktober 2008 12:21 schreef Light het volgende:
[..]
Dan moet je dus eerst alles uitlezen, vervolgens de nieuwe waardes berekenen en dan alles terugzetten. Het kan, maar je doet een onnodige query en je maakt een atomaire actie niet meer atomair. Dus kans op fouten.
[..]
quote:Ik gebruik het zelf niet, geef de voorkeur aan ''. En bij '' werkt het niet om variabelen in de string te zetten, die worden dan niet geparsed. Iets als een \n voor een newline werkt ook alleen tussen "", als je dat tussen '' zet krijg je gewoon \n te zien.
Ik ook. Daarbij zijn single quotes makkelijker om te typen :)quote:Op zondag 26 oktober 2008 13:08 schreef Xcalibur het volgende:
Strings tussen enkele quotes worden niet geparsed op variabelen / andere meuk die erin staan... Dat zou dus een snelheidswinstje op moeten leveren, omdat PHP er niet over na hoeft te denken :)
Ik zet altijd alles tussen single quotes, tenzij ik echt een linebreak moet hebben oid
1 2 3 | echo 'string voor line break'."\n"; ?> |
quote:Op zondag 26 oktober 2008 13:17 schreef Light het volgende:
[..]
Ik ook. Daarbij zijn single quotes makkelijker om te typen
Als ik een linebreak aan het eind wil hebben doe ik ook nog wel eens
[ code verwijderd ]
1 2 3 4 5 | return <<<TEMPLATE <title> {$news['title']}</title> TEMPLATE; ?> |
Parse snelheid. PHP gaat geen moeite doen om vars te parsen binnen enkele quotes, terwijl dat wel geprobeerd gaat worden binnen dubbele quotes. Het netste is imo om het gebruik hierop af te stemmen, dus echo('bla'); binnen enkele quotes en echo("$var"); binnen dubbele quotes (of echo("{$object->var}"); met accolades erbij).quote:Op zondag 26 oktober 2008 12:32 schreef ursel het volgende:Dat heb ik zelf eigenlijk ook nooit begrepen. Gebruik zelf namelijk ook altijd de enkele quote.
Weet je misschien ook waarom dat zo is eigenlijk?![]()
Een non-breaking-space in een <title>?quote:Op zondag 26 oktober 2008 17:13 schreef Chandler het volgende:
Klein vraagje,
Stel ik heb het volgende:
[ code verwijderd ]
Hoe is het mogelijk om binnen de template een functie aan te roepen? bv {strtolower($news['title']);} dit werkt namelijk niet
Nee, in een heredoc-notatie kun je geen functies aanroepen.quote:Op zondag 26 oktober 2008 17:13 schreef Chandler het volgende:
Klein vraagje,
Stel ik heb het volgende:
[ code verwijderd ]
Hoe is het mogelijk om binnen de template een functie aan te roepen? bv {strtolower($news['title']);} dit werkt namelijk niet
dat hele heredoc gebeuren ontgaat me een beetje eerlijk gezegd...quote:Op zondag 26 oktober 2008 18:26 schreef CraZaay het volgende:
Waarom gebruik je überhaupt heredoc, en niet gewoon quotes rond je string (die in PHP gewoon linebreaks mag hebben)? Scheelt weer wat code en is volgens mij net zo duidelijk?
Als het over MySQL gaat kun je altijd met EXPLAIN kijken wat er ongeveer gebeurd.quote:Op maandag 27 oktober 2008 11:16 schreef Xcalibur het volgende:
Pff, wat een gezeik met MATCH AGAINST![]()
Als ik een query doe op een aantal kolommen (MATCH(col1, col2, col3, etc.) duurt ie 1,6 seconden.
Als ik een query doe op MATCH(col1) AND MATCH(col2), etc. duurt ie maar 0,02 seconden, maar kan ik niet op meer dan 1 woord zoeken.
Een query op MATCH(col1) OR MATCH(col2) levert weer de juiste resultaten, maar duur ook 1,6 seconden
Nu doe ik 8 losse queries, die ieder 0,02 seconden duren, en daarvan voeg ik de resultaten samen![]()
Dat moet toch anders kunnen zou je denken...
Het probleem 1,5+ seconden van de 1,6 zit in de "copying to tmp table" actie, maar hoe ik dat kan voorkomen / versnellen wordt me niet duidelijk
Teveel indexen? Of misschien ergens FORCE INDEX gebruiken?quote:Op maandag 27 oktober 2008 11:50 schreef Xcalibur het volgende:
Ja, heb ik gedaan... indexen lijken allemaal goed te staan enzo![]()
Ik heb ergens de oplossing gevonden.quote:Op vrijdag 24 oktober 2008 17:51 schreef Xcalibur het volgende:
De waarde voor first_run moet voor ieder record nog bepaald worden, terwijl je hetzelfde record hier wel op probeert te selecteren, dat gaat niet
Je zou wel "WHERE last_action + 31:15 <= NOW()" (pseudocode) kunnen doen, dan heb je een harde waarde
Iemand?quote:Op vrijdag 24 oktober 2008 12:22 schreef TommyGun het volgende:
[..]
Dat werkt idd voor specificatie, maar niet voor afdeling vreemd genoeg.
[ code verwijderd ]
echo "<select name='afdeling[]'>\n";
1 2 3 4 5 6 | foreach(array(116, 118, 112) as $v) { print chr($v); } print "\n"; ?> |
Bijzonder handig voor grote lappen tekst.quote:Op zondag 26 oktober 2008 18:57 schreef Xcalibur het volgende:
[..]
dat hele heredoc gebeuren ontgaat me een beetje eerlijk gezegd...
Het print tvp, en het was niet voor jou bedoeldquote:Op dinsdag 28 oktober 2008 10:54 schreef TommyGun het volgende:
[..]
Was dit voor mij bedoeld? En zoja; waar dient dit voor?
B.v.d
Hoe bedoel je dat?quote:Op dinsdag 28 oktober 2008 10:57 schreef slacker_nl het volgende:
[..]
Het print tvp, en het was niet voor jou bedoeld
Overigens werkt je code niet omdat afdeling geen array is, maar een scalar value..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $current_time = date("Y-m-d"); $con = mysql_connect("localhost","root","password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("urendatabase", $con); print_r($_POST); for ($i = 0; $i < 5; ++$i){ $sql="INSERT INTO uren (userid, specid, afdelingid, uren, omschrijving, callnr, datum) VALUES ('$_POST[werknemer]','$_POST[specificatie][$i]','$_POST[afdeling][$i]','$_POST[uren][$i]','$_POST[omschrijving][$i]','$_POST[callnr][$i]','$current_time')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } } echo "Werkzaamheden toegevoegd"; echo "<br><br>"; echo("<form><input type=\"button\" value=\"Vorige pagina\" onclick=\"parent.location='index.php'\" /></form>"); echo("<form><input type=\"button\" value=\"Terug naar Home\" onclick=\"parent.location='../index.php'\" /></form>"); mysql_close($con) ?> |
1 2 3 4 5 6 7 | [specificatie] => Array ( [0] => 3 [1] => 1 [2] => 4 [3] => 2 [4] => 3 ) [afdeling] => Array ( [0] => 10 [1] => 16 [2] => 14 [3] => 17 [4] => 14 ) [uren] => Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 6 [4] => 7 ) [callnr] => Array ( [0] => 2342 [1] => 4234 [2] => 4234 [3] => 5456 [4] => 7657 ) [omschrijving] => Array ( [0] => test1 [1] => test2 [2] => ttest3 [3] => test4 [4] => test5 ) [submit] => Submit ) |
Daarmee wilde ik zeggen dat je een string/int whatever behandeld alsof het een array is, wat het niet is (in je voorgaande voorbeeld). Iets is een scalar als het maar een (1) waarde kan bevatten, een string, integer, float, double, etc. Arrays zijn geen scalar values.quote:
Kennelijk heeft die user uren verspreid over meerdere afdelingen?!quote:Vreemd genoeg laat "afdeling" nu wel de array zijn terwijl ik niks heb aangepast.
Kloppen die waardes wel met Array[3] enzo?quote:In de DB:
[ afbeelding ]
Hoe kan je weten wat Array[1] is? Is het niet veel handiger om je uren gewoon als int op te slaan, je omschrijving als tekst, en je callnummer als int?quote:Op dinsdag 28 oktober 2008 11:56 schreef TommyGun het volgende:
Ja, de waardes kloppen. Het is juist de bedoeling dat je per afdeling en specificatie verschillende uren e.d. op kunt geven. Of begrijp ik je nu verkeerd?
Bedankt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | $current_time = date("Y-m-d"); $con = mysql_connect("localhost","root","password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("urendatabase", $con); $werknemer = $_POST['werknemer']; $afdeling = $_POST['afdeling']; $uren = $_POST['uren']; $specificatie = $_POST['specificatie']; $omschrijving = $_POST['omschrijving']; $callnr = $_POST['callnr']; for ($i = 0; $i < 5; ++$i){ $sql="INSERT INTO uren (userid, specid, afdelingid, uren, omschrijving, callnr, datum) VALUES ('$werknemer', '$specificatie[$i]', '$afdeling[$i]', '$uren[$i]', '$omschrijving[$i]', '$callnr[$i]', '$current_time')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } } echo "Werkzaamheden toegevoegd"; echo "<br><br>"; echo("<form><input type=\"button\" value=\"Vorige pagina\" onclick=\"parent.location='index.php'\" /></form>"); echo("<form><input type=\"button\" value=\"Terug naar Home\" onclick=\"parent.location='../index.php'\" /></form>"); mysql_close($con) ?> |
Tja, da's ook lekker te zeggen..quote:Op dinsdag 28 oktober 2008 13:55 schreef Arn0 het volgende:
Hoi, ben een absolute beginner met MySQL en ik vroeg me af hoe groot de MySQL database van een IPB forum met +100 000 leden en +75 000 berichten? (het is voor een prijsvraag van iets)
Ik heb wel eens begrepen dan heel FOK! (volgens mij incl. alle subsites) een GB of 60 was.quote:Op dinsdag 28 oktober 2008 @ 13:55 schreef Arn0 het volgende:
Hoi, ben een absolute beginner met MySQL en ik vroeg me af hoe groot de MySQL database van een IPB forum met +100 000 leden en +75 000 berichten? (het is voor een prijsvraag van iets)
Ik denk echt veel en veel meer.quote:Op dinsdag 28 oktober 2008 15:21 schreef mcDavid het volgende:
[..]
Ik heb wel eens begrepen dan heel FOK! (volgens mij incl. alle subsites) een GB of 60 was.
90GB volgens mij wat ik laatste gehoord hebquote:Op dinsdag 28 oktober 2008 15:28 schreef PiRANiA het volgende:
[..]
Ik denk echt veel en veel meer.
Misschien het 3-dubbele.. minimaal..
hm, okee.. valt me meequote:Op dinsdag 28 oktober 2008 15:31 schreef JortK het volgende:
[..]
90GB volgens mij wat ik laatste gehoord heb
zou best kunnen, is al weer een poosje geleden dat ik het hoordequote:Op dinsdag 28 oktober 2008 @ 15:31 schreef JortK het volgende:
[..]
90GB volgens mij wat ik laatste gehoord heb
Take in mind dat FOK! onder de grootste internetcommunity's ter wereld valt heh!quote:Op dinsdag 28 oktober 2008 @ 15:27 schreef Arn0 het volgende:
Hmm ok, dan weet ik genoeg. Bedankt!
quote:Op zondag 16 juli 2006 21:40 schreef Danny het volgende:
forum: 40.1Gb
frontpage: 2.7Gb
fotoboek: 1.0Gb
fokgames: 481.1Mb
sport: 397.9Mb
weblog: 198.5Mb
Ik weet het, maar er waren keuzemogelijkheden en ik twijfelde tussen 300 MB en 1,1 GB (heb dat laatste maar genomen)quote:Take in mind dat FOK! onder de grootste internetcommunity's ter wereld valt heh!
Uit mijn eigen ervaring zou ik dus B kiezenquote:Op dinsdag 28 oktober 2008 18:14 schreef Arn0 het volgende:
Er zijn wel wat lange berichten op dat forum , dat wel, en dit waren de keuzemogelijkheden(heb even teruggekeken):
A. 9,6 MB
B. 148 MB
C. 1,6 GigaByte
D. 23,8 TeraByte
Heb dus voor C gekozen.
1 2 3 4 5 6 7 8 9 10 | $memcache_obj = memcache_connect('127.0.0.1', 11211); $delay_requests = memcache_get($memcache_obj, 'site[delay_requests]['.$_SERVER['REMOTE_ADDR'].']'); if ($delay_requests > 5){ memcache_set($memcache_obj, 'site[delay_requests]['.$_SERVER['REMOTE_ADDR'].']', ($delay_requests+1), 0, 10); die('Er is een fout opgetreden. U dient 10 seconden te wachten alvorens u de pagina kan herladen.'); } memcache_set($memcache_obj, 'site[delay_requests]['.$_SERVER['REMOTE_ADDR'].']', ($delay_requests+1), 0, 1); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <script type="text/javascript"> // _w : ID // _h : 'h' (=hide(verbergen)), of 's' (=show(tonen)) function wisselen(_w,_h) { if (document.all) { if (_h=='s') eval("document.all."+_w+".style.visibility='visible';"); if (_h=='h') eval("document.all."+_w+".style.visibility='hidden';"); } else { if (_h=='s') eval("document.layers['"+_w+"'].visibility='show';"); if (_h=='h') eval("document.layers['"+_w+"'].visibility='hide';"); } } </script> </head><body> <!-- Invoegen van het script gebeurt door toevoegen van onClick: --> <form> Tonen <input name="r1" type="radio" checked value="" onClick="wisselen('deel1','s')"> Verbergen <input name="r1" type="radio" value="" onClick="wisselen('deel1','h')"> </form> <form> Jaar <input name="t1" type="text"> <label> <input type="submit" name="b1" id="b1" value="Invoeren"> </label> </form> <!-- Het formuliergedeelte dat je wil tonen/verbergen plaats je tussen <span>-tags: --> <span id="deel1" style="visibility:visible;position:relative;top:0;left:0"> <form> Hier een te verbergen of te tonen tekst. </form> </span> <span id="deel2"> <!-- en hier wil ik graag de tekst van t1 hebben --> </span> </body></html> |
euh, wat heeft dat precies met PHP te maken?quote:Op woensdag 29 oktober 2008 @ 01:17 schreef killko het volgende:
Ik zoek zoiets als het volgende, maar helaas werkt dit script alleen in Internet Explorer (niet in Chrome of Firefox iig). Weet iemand hoe het makkelijk in php kan of een betere javascript code?
[ code verwijderd ]
Ter aanvulling: en die eval() mag ook wel overal weg.quote:Op woensdag 29 oktober 2008 01:20 schreef mcDavid het volgende:
gewoon document.getElementById gebruiken ipv 'layers' of 'all' shizle. Weet niet waarom ze dat verzonnen hebt maar is nergens voor nodig in deze vorm.
Eeh, niks, maar ik dacht dat het misschien wel makkelijker in php kon.quote:Op woensdag 29 oktober 2008 01:20 schreef mcDavid het volgende:
[..]
euh, wat heeft dat precies met PHP te maken?
Zal't hier wel ff plaatsen.quote:
OK, zal het eens proberen.quote:-edit-
gewoon document.getElementById gebruiken ipv 'layers' of 'all' shizle. Weet niet waarom ze dat verzonnen hebt maar is nergens voor nodig in deze vorm.
1 2 3 4 5 6 7 8 9 10 | $memcache_obj = memcache_connect('127.0.0.1', 11211); $delay_requests = memcache_get($memcache_obj, 'site[delay_requests]['.$_SERVER['REMOTE_ADDR'].']'); if ($delay_requests > 5){ memcache_set($memcache_obj, 'site[delay_requests]['.$_SERVER['REMOTE_ADDR'].']', ($delay_requests+1), 0, 10); die('Er is een fout opgetreden. U dient 10 seconden te wachten alvorens u de pagina kan herladen.'); } memcache_set($memcache_obj, 'site[delay_requests]['.$_SERVER['REMOTE_ADDR'].']', ($delay_requests+1), 0, 1); ?> |
quote:Op woensdag 29 oktober 2008 22:35 schreef GlowMouse het volgende:
Ik neem aan dat je zelf weet wat die memcache-code doet. Of het afdoende beveiliging biedt, hangt van je site af. Zijn er pagina's die erg veel tijd kosten om te genereren, dan zal de beveiliging niet zo goed werken.
Daarnaast zit je al in PHP voordat deze code wordt uitgevoerd. Een mod voor Apache of wat firewall-regels kunnen dit efficiënter. Ook wil je wellicht een log bijhouden.
Voor de reguliere storage engines (MyISAM/InnoDB) is gemiddeld 35 rijen/seconde invoegen in een tabel geen enkel probleem. Probeer wel zoveel mogelijk rijen met één INSERT-query te behandelen.
Jaquote:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $bloginfo_link = get_bloginfo('template_directory'); $image_folder = $bloginfo_link . '/images/sidebar'; $page = get_the_title(); if (file_exists($image_folder . '/'.$page.'.png')) { echo "<img src=\"$image_folder/".$page.".png\">"; } else { echo "<img src=\"$image_folder/Nieuws.png\">"; } ?> |
Ja, ik heb de afbeeldingen met hoofdletters geupload. Als ik dus echo $image_folder .'/'.$page.'.png') invoer, dan geeft hij die afbeelding weer. Dat stukje werkt dus, maar de check niet.quote:Op dinsdag 4 november 2008 20:35 schreef mcDavid het volgende:
hoofletters/kleine letters zijn correct in de bestandsnamen?
doe anders ff echo ($image_folder . '/'.$page.'.png');, dan kun je zien welk bestand hij precies probeert te checken.
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $bloginfo_link = get_bloginfo('template_directory'); $image_folder = $bloginfo_link . '/images/sidebar'; $images = 'wp-content/themes/mijnthema/images/sidebar'; $page = get_the_title(); if (file_exists($images.'/'.$page.'.png')) { echo "<img src=\"$image_folder/".$page.".png\">"; } else { echo "<img src=\"$image_folder/Nieuws.png\">"; } ?> |
1 |
Ik denk dat het fout gaat met $image_folder. Met file_exists() kijk je op het file system en als je diezelfde directory in een <img> gebruikt dan is het waarschijnlijk niet de goede directory.quote:Op dinsdag 4 november 2008 20:32 schreef Jo0Lz het volgende:
Ehm, ik heb even een vraag.
Ik heb een scriptje, dat ik gebruik om een plaatje op te roepen op basis van de titel van die pagina.
[ code verwijderd ]
Hij laat alleen het plaatje "Nieuws.png" zien. Terwijl, als ik de check weghaal, bij alle pagina's correct de afbeelding wordt weergegeven.
Iemand een idee, wat ik fout doe? Is die "if file_exists" zo goed?
Blijkbaar, faalt hij op dat punt, en laat hij de afbeelding "Nieuws.png" zien, terwijl dat "Welkom.png" moet zijn.
Als ik "echo $page" in het script verwerk, krijg ik wel de juiste terugkoppeling, namelijk "Welkom".
Met javascript de lokale datum/tijd ophalen en die in je database stoppen?quote:Op woensdag 5 november 2008 09:42 schreef Chandler het volgende:
Ik heb een vraag, ik wil statistieken achterhalen per website en opslaan in een database (dit gaat erg goed) maar nu zit ik met het volgende probleem.
Een site in Nederland heeft GMT 0 maar een site in america heeft heel andere tijden, nu gebruik ik NOW() in mijn MySQL queries maar wil eingelijk de tijd opslaan van de gebruiker zijn website, hoe moet ik dit realiseren?
GMT +1quote:Op woensdag 5 november 2008 09:42 schreef Chandler het volgende:
Ik heb een vraag, ik wil statistieken achterhalen per website en opslaan in een database (dit gaat erg goed) maar nu zit ik met het volgende probleem.
Een site in Nederland heeft GMT 0 maar een site in america heeft heel andere tijden, nu gebruik ik NOW() in mijn MySQL queries maar wil eingelijk de tijd opslaan van de gebruiker zijn website, hoe moet ik dit realiseren?
Dus je wil server-side iets client-side uitlezen?quote:Op woensdag 5 november 2008 11:07 schreef Chandler het volgende:
maar met javascript is geen optie, want het gaat om dynamisch gegenereerde afbeeldingen die kan helaas geen javascript uitlezen
Kan je het niet per website alleen de tijdsinstelling opslaan?quote:Op woensdag 5 november 2008 11:20 schreef Chandler het volgende:
Als dat mogelijk ismaar zelf wil ik nu inbouwen dat een gebruiker een keuze kan maken middels een select welke timezone hun site zit en dat ik deze timezone dan ga gebruiken maar ben er dus nog niet achter hoe ik dit m.b.t NOW() moet verwerken.
BV ik heb +1 (1 uur) hoe kan ik dit dan inserten bij NOW() (oftewel in combinatie van NOW +1)
Ik hoop dat jullie het snappen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function randomCode($len = 8) { $rts = ''; $str = ''; $a = array(65=>90,97=>122,48=>57); foreach ($a AS $i=>$v) { for ($x = $i; $x <= $v; $x++) { $rts .= chr($x); } } for ($i = 1; $i <= $len; $i++) { $str .= $rts[rand(1, strlen($rts)-1)]; } return $str; } ?> |
1 2 3 | function randomCode($len=8){$rts='';$str='';$a=array(65=>90,97=>122,48=>57);foreach($a AS $i=>$v){for $x=$i;$x<=$v;$x++){$rts.=chr($x);}}for ($i=1;$i<=$len;$i++){$str.=$rts[rand(1,strlen($rts)-1)];}return $str;} ?> |
Even een gedachtenkronkel, weet niet zeker of het het juiste resultaat oplevert:quote:Op woensdag 5 november 2008 14:50 schreef Chandler het volgende:
Dat wil ik dus, echter heb ik dan +1 -1 -5.5 etc qua uren staan, en hoe kan ik deze aan NOW() toevoegen qua uren?
1 2 3 | $rts = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; ?> |
1 2 3 4 | $rts = array_merge( range('A', 'Z'), range('a', 'z'), range('0', '9')); $rts = implode('', $rts); ?> |
Je maakt wachtwoorden zonder hoofdletter A? Of heb je een andere reden om in het stukjequote:Op woensdag 5 november 2008 14:50 schreef Chandler het volgende:
Dat wil ik dus, echter heb ik dan +1 -1 -5.5 etc qua uren staan, en hoe kan ik deze aan NOW() toevoegen qua uren?
Verder wil ik wel eens weten of deze routine korter kan om random wachtwoorden te geneneren
[ code verwijderd ]
en op 1 regel :P
[ code verwijderd ]
:D
1 2 3 | $rts[rand(1, strlen($rts)-1)] ?> |
Eigenljik hoef je er niet eens een string van te maken. De code werkt ook met een array.quote:Op woensdag 5 november 2008 19:03 schreef GlowMouse het volgende:
Het aanmaken van $rts kan korter door
[ code verwijderd ]
of anders door:
[ code verwijderd ]
ja, maar wat is efficiënter als het gaat om processorsnelheid?quote:Op woensdag 5 november 2008 19:03 schreef GlowMouse het volgende:
Het aanmaken van $rts kan korter door
[ code verwijderd ]
of anders door:
[ code verwijderd ]
De eerste oplossing van GlowMouse.quote:Op woensdag 5 november 2008 20:15 schreef PiRANiA het volgende:
[..]
ja, maar wat is efficiënter als het gaat om processorsnelheid?
1 2 3 | public $sub = array(); ?> |
1 2 3 4 5 6 7 8 9 | function GetSub() { $matches = array(); preg_match_all('pregstring',$this->data,$this->sub); } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) |
1 2 3 4 5 6 7 8 9 10 11 12 | class JortK { public $sub = array(); function GetSub() { preg_match_all('/s/', 'asdfasdfasdf', $this->sub); } } $j = new JortK(); $j->GetSub(); print_r($j->sub); ?> |
1 2 3 4 5 6 7 8 9 10 | ( [0] => Array ( [0] => s [1] => s [2] => s ) ) |
Waarom niet gewoon dan SELECT veld1, veld2, veld3 FROM table doen?quote:Op donderdag 6 november 2008 15:18 schreef ursel het volgende:
Kan je een "SELECT * " SQL uitvoeren waarbij je 1 kolom exclude uit de resultaten?
Ik ben momenteel bezig om van ons archive-proces deze ook te gebruiken om producten te kunnen klonen.quote:Op donderdag 6 november 2008 15:28 schreef JortK het volgende:
[..]
Waarom niet gewoon dan SELECT veld1, veld2, veld3 FROM table doen?
Afhankelijk van je doel.quote:Op donderdag 6 november 2008 15:32 schreef Tijn het volgende:
Het is sowieso netter om geen "SELECT *" te gebruiken.
Want? Het is netter om 10 kolommen op te sommen wanneer je 10 kolommen hebt, i.p.v. *? Says who?quote:Op donderdag 6 november 2008 15:32 schreef Tijn het volgende:
Het is sowieso netter om geen "SELECT *" te gebruiken.
Tis eerder dat je de order kan garanderen als je niet * gebruikt, maar elk veld apart definieert. Anders kan het zijn dat iemand een table wijzigt en de order daarmee wijzigt, je app breekt omdat ie X verwacht daar waar hij Y krijgt.quote:Op donderdag 6 november 2008 16:11 schreef CraZaay het volgende:
[..]
Want? Het is netter om 10 kolommen op te sommen wanneer je 10 kolommen hebt, i.p.v. *? Says who?
Ik ken het hele concept van "breekbare order" niet, leg uit? Daarnaast lijkt het me niet eenvoudig om met een select iets te wijzigen in een tabelquote:Op donderdag 6 november 2008 17:10 schreef slacker_nl het volgende:
Tis eerder dat je de order kan garanderen als je niet * gebruikt, maar elk veld apart definieert. Anders kan het zijn dat iemand een table wijzigt en de order daarmee wijzigt, je app breekt omdat ie X verwacht daar waar hij Y krijgt.
De orde is de volgorde, bij * is de volgorde zoals de table is aangemaakt, als ik vervolgens twee alters op een table uitvoer waarbij de orde van de velden veranderd, bijv:quote:Op donderdag 6 november 2008 19:03 schreef CraZaay het volgende:
Ik ken het hele concept van "breekbare order" niet, leg uit? Daarnaast lijkt het me niet eenvoudig om met een select iets te wijzigen in een tabel
1 2 3 4 5 6 7 8 9 10 | if(!is_array($lines)) die("File kan niet worden geopend."); foreach($lines as $line) { list($id, $name,$x, $y, $player, $points, $rank) = explode(',', $line); $name = urldecode($name); $name = addslashes($name); mysql_query("INSERT INTO village SET id='$id', name='$name', x='$x', y='$y', player='$player', points='$points', rank='$rank'"); } |
wat doe ik verkeerd?quote:File kan niet worden geopend.
Waarschijnlijk ondersteunt gzfile() het http://-protocol niet.quote:Op donderdag 6 november 2008 21:05 schreef rulerofdeath het volgende:
hallo![]()
ik probeer de inhoud van een bestand in mijn database te krijgen en gebruik hiervoor deze code:
[ code verwijderd ]
ik krijg telkens
[..]
wat doe ik verkeerd?
Als je expliciet aangeeft dat je "SELECT val FROM ..." wilt, en deze kolom bevat opeens de data die voorheen bekend was als val2, dan heb je toch alsnog hetzelfde probleem, of begrijp ik je verkeerd?quote:Op donderdag 6 november 2008 20:01 schreef slacker_nl het volgende:
De volgorde is id, val, val2. Als ik nou val2 naar val rename en val naar val2 dan wordt de volgorde:
id, val2, val
Logisch, maar als ik dan een applicatie heb die select * from blaat uitvoert en bij val altijd koe of paard terugkrijgt (om maar een willekeurig iets te zeggen), maar nu omdat het val2 is, wordt dit boer of boerin. M'n applicatie verwacht dit niet, dan breek ik de applicatie (en niet de database uiteraard!). Als je checks op de data uitvoert zullen die checks failen, omdat je impliciet uitgaat van een bepaalde volgorde. Als je dit expliciet aangeeft in je query heb je dit hele probleem niet.
De melding zegt het al, je systeem/profiel heeft te weinig geheugen voor deze opdracht. Of je moet meer geheugen aanvragen of je moet je script op een andere manier gaan realiseren (bv via commandline de zip file extracten en dan rustig aan inlezen)quote:Op donderdag 6 november 2008 21:48 schreef rulerofdeath het volgende:
ik krijg nu een andere melding, ik zit nu ook bij een andere provider:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1048576 bytes) in /var/www/vhosts/biertafel.eu/httpdocs/index.php on line 1
(lijnnummer aangepast aan codefragment)
Je begrijpt me verkeerd, stel... iemand dumpt de database, maakt wijzigingen in de dump, dropped de originele table en creeert opnieuw de table, alleen zijn val en val2 van volgorde gewijzigd. Bij select * is de volgorde van val en val2 dus anders dan jij in eerste instantie verwacht.. Als je select val, val2 gebruikt veranderd er niks, en heb je dus ook geen problemen met deze wijziging..quote:Op donderdag 6 november 2008 21:53 schreef CraZaay het volgende:
[..]
Als je expliciet aangeeft dat je "SELECT val FROM ..." wilt, en deze kolom bevat opeens de data die voorheen bekend was als val2, dan heb je toch alsnog hetzelfde probleem, of begrijp ik je verkeerd?
Dan maakt het idd weinig uit, maar dat schreef Slacker ook al. Hij heeft het dan over hashes, maar da's gewoon hetzelfde.quote:Op donderdag 6 november 2008 23:27 schreef ursel het volgende:
Ik begrijp dus eigenlijk dat het niet mogelijk is om een kolom te excluden??
@slacker, Maar als je nou een associative array fetched?? Dan maakt dit toch ook niet uit? Of zie ik iets over het hoofd?
quote:Nu kan je natuurlijk ook de zooi dmv een hash terugkrijgen, waardoor het niet echt veel uitmaakt, maar dit is wel degelijk van belang bij een sequentiele array.
Ik snap je nu. Maar ik ging er eigenlijk ook vanuit dat iedereen die "SELECT *" doet alsnog gebruik maakt van een named/associatieve array, object, whatever, en $result['val'] gebruikt bijvoorbeeld. Ik vind het uitermate ranzig om in welke situatie dan ook maar klakkeloos uit te gaan van een volgorde, los van of je * gebruik of kolomnamen.quote:Op donderdag 6 november 2008 22:55 schreef slacker_nl het volgende:
Je begrijpt me verkeerd, stel... iemand dumpt de database, maakt wijzigingen in de dump, dropped de originele table en creeert opnieuw de table, alleen zijn val en val2 van volgorde gewijzigd. Bij select * is de volgorde van val en val2 dus anders dan jij in eerste instantie verwacht.. Als je select val, val2 gebruikt veranderd er niks, en heb je dus ook geen problemen met deze wijziging..
1 2 3 4 5 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg LEFT JOIN reg_branche branche ON reg.branche_code ON branche.code ?> |
1 2 3 4 5 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg LEFT JOIN reg_branche branche ON reg.branche_code LIKE '%,'branche.code',%' ?> |
1 2 3 4 5 6 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg, reg_branche branche WHERE reg.branche_code LIKE '%,'branche.code',%' ?> |
1 2 3 4 5 6 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg, reg_branche branche WHERE (reg.branche_code LIKE '%,'branche.code',%' OR reg.branche_code IS NULL) ?> |
Wat staat er in dat veld?quote:Op maandag 10 november 2008 19:41 schreef Likkende_Lassie het volgende:
Het moet namelijk een like zijn met een veld van de tabel
Onzinquote:Op maandag 10 november 2008 19:23 schreef JortK het volgende:
Die LIKE moet in je WHERE clause, je JOIN clause is om tabellen aan elkaar te koppelen, niet om criteria in aan te leggen
Ook onzin, maar dan met niet werkende voorbeelden.quote:Op maandag 10 november 2008 19:48 schreef Arjan321 het volgende:
JOINS zijn alleen maar syntax sugar, dus iets als dit zou ook moeten werken:
Voor een INNER JOIN:
[ code verwijderd ]
Of een LEFT JOIN
[ code verwijderd ]
1 2 3 | FROM reg_reg r LEFT JOIN reg_branche b ON r.branche_code LIKE Concat('%', b.code, '%') |
In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,quote:Op maandag 10 november 2008 20:33 schreef Light het volgende:
[..]
Wat staat er in dat veld?
Over het algemeen moet je LIKE met "%text%" zien te vermijden. Door de % vooraan kan er namelijk geen gebruik gemaakt worden van indexen, dus is je query per definitie inefficient.
1 2 3 4 5 | FROM register_register register LEFT JOIN register_branches branche ON branche.code = LIKE Concat('%', register.branche_code, '%') WHERE register.id IN (".$sphinx['result']." 0) AND total_in > 0 AND branche.in_small_overview > 0 GROUP BY `branche_code` ORDER BY total_in DESC LIMIT 10") |
Daar was ik al bang voor. Een koppeltabel is dan een veel betere oplossing. Gewoon een tabel met id's, kun je ook indexen op zetten. Is ook veel sneller met doorzoeken.quote:Op maandag 10 november 2008 20:44 schreef Likkende_Lassie het volgende:
[..]
In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,
Bedankt voor de reacties tot nu toe!
Zoek eens op databasenormalisatie. Je kunt wel proberen om dit werkend te krijgen (en het kan vast ook) maar je kunt veel beter je tijd investeren in uitzoeken hoe het beter kan.quote:Bovenstaande oplossingen werken overigens niet.
Hierbij de gehele query, zoals de laatst genoemde mogelijkheid, niet werkend.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 | FROM register_register r LEFT JOIN register_branches b ON b.code = LIKE Concat('%', r.branche_code, '%') WHERE r.id IN (". $sphinx['result']. " 0) AND b.total_in > 0 AND b.in_small_overview > 0 GROUP BY branche_code ORDER BY total_in DESC LIMIT 10" |
GAD-VER-DAM-MEquote:Op maandag 10 november 2008 20:44 schreef Likkende_Lassie het volgende:
In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,
Een koppeltabel, zou die er zou uit kunnen zien?quote:Op maandag 10 november 2008 21:01 schreef Light het volgende:
[..]
Daar was ik al bang voor. Een koppeltabel is dan een veel betere oplossing. Gewoon een tabel met id's, kun je ook indexen op zetten. Is ook veel sneller met doorzoeken.
[..]
Zoek eens op databasenormalisatie. Je kunt wel proberen om dit werkend te krijgen (en het kan vast ook) maar je kunt veel beter je tijd investeren in uitzoeken hoe het beter kan.
1 |
Yepquote:Op maandag 10 november 2008 21:06 schreef Likkende_Lassie het volgende:
[..]
Een koppeltabel, zou die er zou uit kunnen zien?
brancheID registerID
04200 123456
0915 123456
3116 654321
dus meerdere regels voor een registerid?
1 2 3 4 5 6 7 8 | `id` int(11) NOT NULL auto_increment, `brancheID` int(11) NOT NULL, `registerID` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `brancheID` (`brancheID`), KEY `registerID` (`registerID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; |
Dat veld ID is niet echt nuttig. Ik zou de tabel anders maken:quote:Op maandag 10 november 2008 21:32 schreef Likkende_Lassie het volgende:
Ok! Hij is nu bezig alles in te voeren, moet heel wat records inlezen en verwerken, duurt dus even.
De tabel ziet er zo uit:
[ code verwijderd ]
1 2 3 4 5 6 | `brancheID` int(11) NOT NULL, `registerID` int(11) NOT NULL, PRIMARY KEY (`brancheID`,`registerID`), KEY `registerID` (`registerID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $Month = "11"; $Year = "2008"; $DaysMonth = cal_days_in_month(CAL_GREGORIAN, $Month, $Year); for ($i = 1; $i <= $DaysMonth; $i++) { echo 'De datum ' .$i. '-' .$Month. '-' .$Year. ', valt op '; $day = date("l", mktime(0, 0, 0, $Month, $i, $Year)); if ($day == "Monday") { echo 'Maandag'; } if ($day == "Tuesday") { echo 'Dinsdag'; } if ($day == "Wednesday") { echo 'Woensdag'; } if ($day == "Thursday") { echo 'Donderdag'; } if ($day == "Friday") { echo 'Vrijdag'; } if ($day == "Saturday") { echo 'Zaterdag'; } if ($day == "Sunday") { echo 'Zondag'; } echo '<br />'; } ?> |
1 2 3 4 | $nlDagen=Array('','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag','Zondag'); $dagNaam=$nlDagen[time(N)]; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <ul> <li><a href="/">Home</a></li> <li><a href="http://www.biertafel.eu/index.php?submit">Over ons</a></li> <li><a href="/">Archief</a></li> <li><a href="http://forum.biertafel.eu">Forum</a></li> <li><a href="/">Winkel</a></li> <li><a href="/">Contact</a></li> </ul> </div> <div id="main"> <?php if(isSet($_GET['submit'])) { include('polladmin.php'); } else { include('poll.php'); } ?> <P> |
kijk maar naar de poll op de homepagequote:Op dinsdag 11 november 2008 17:26 schreef Xcalibur het volgende:
op zich een prima manier, maar ik zou het includen van de admin niet af laten hangen van het gezet zijn van een get-variabele... dat is nogal een security risk namelijk
De poll op zn homepage heeft totaal geen beveiliging, iedereen kan een nieuwe poll aanmaken..quote:Op dinsdag 11 november 2008 17:40 schreef Xcalibur het volgende:
uh, poll, homepage?
Ik geloof niet dat ik snap waar je het over hebt....
ik weet dat iedereen de admin-pagina kan bereiken. dit is ook alleen maar om te testen.quote:Op dinsdag 11 november 2008 17:26 schreef Xcalibur het volgende:
op zich een prima manier, maar ik zou het includen van de admin niet af laten hangen van het gezet zijn van een get-variabele... dat is nogal een security risk namelijk :)
1 2 | include('polladmin.php'); |
klopt, dat weet ik.quote:Op dinsdag 11 november 2008 17:42 schreef qu63 het volgende:
[..]
De poll op zn homepage heeft totaal geen beveiliging, iedereen kan een nieuwe poll aanmaken..
En een extra check op je polladmin kan ook geen kwaad..quote:Op dinsdag 11 november 2008 17:26 schreef Xcalibur het volgende:
op zich een prima manier, maar ik zou het includen van de admin niet af laten hangen van het gezet zijn van een get-variabele... dat is nogal een security risk namelijk
Zoiets bedoel je?quote:Op dinsdag 11 november 2008 17:44 schreef rulerofdeath het volgende:
[..]
ik weet dat iedereen de admin-pagina kan bereiken. dit is ook alleen maar om te testen.
ben een beetje aan het klooien met m'n webpagina.
is het ook mogelijk om onderstaande te vervangen door variabelen en dat ik niet alles hoef te hardcoden? (Dat ik dus de naam van de webpagina als variabele kan gebruiken)
[ code verwijderd ]
1 2 3 | include($_GET['page'].'.php'); ?> |
bedankt. zoiets bedoel ik.quote:Op dinsdag 11 november 2008 18:11 schreef Light het volgende:
[..]
Zoiets bedoel je?
/path/to/site/index.php?page=poll
[ code verwijderd ]
Dat werkt gewoon. Het is absoluut niet veilig, maar dat vroeg je ook niet.
Het probleem met variabelen uit de QueryString is dat ze zo makkelijk te beïnvloeden zijn en dus erg vatbaar zijn voor kwaadwillige injectie vanuit de gebruikerskant. Er kunnen op die manier dus allerlei onverwachte problemen opduiken.quote:Op dinsdag 11 november 2008 19:18 schreef rulerofdeath het volgende:
[..]
bedankt. zoiets bedoel ik.![]()
Qua veiligheid maakt het toch niets uit als ik op deze manier alleen pagina's wil weergeven en niet een pagina als die polladmin.php wil bereiken?
Laat ik je een geheimpje verklappen: Met het programmeerwerk voor expliciet hetgeen dat je wilt doen, ben je meestal zo klaar. Vaak ben je echter meer dan de helft van de tijd bezig met het 'hufterproof' maken van je script/programma.quote:Op dinsdag 11 november 2008 19:46 schreef rulerofdeath het volgende:
dus ietsjes meer typewerk scheelt wel in de veiligheid?
dan gaat dat voor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | function quote_smart($value, $type = false, $NULL = false) { $value = trim($value); if ($type != 'html'){ $value = strip_tags($value); } if (strlen($value)) { # We have something if ($type == 'num'){ if (is_numeric($value)){ return $value; }else{ trigger_error(sprintf("%s: '%s' is not a number!", __FUNCTION__, $value), E_USER_ERROR); return null; } }else{ if (get_magic_quotes_gpc()) { $value = stripslashes($value); } if(version_compare(phpversion(),"4.3.0") == "-1") { return mysql_escape_string($value); } else { return mysql_real_escape_string($value); } } }else{ if ($NULL) { return null; } } } ?> |
Ja, het is wanneer we het over data-opslag hebben natuurlijk logisch dat data opgeslagen wordt hoe het door de gebruiker ingevoerd wordt. Het beveiligen is nodig op het moment dat de invoer-query uitgevoerd wordt, op dat moment worden aanhalingstekens e.d. dusdanig onschadelijk gemaakt zodat de uitvoerende functie niet geïnjecteerd kan worden met bagger.quote:Op vrijdag 14 november 2008 09:28 schreef Likkende_Lassie het volgende:
Vraagje, als ik waardes door de volgende functie haal, om ze veilig te maken, komen ze alsnog met quotes en zonder slashes in de database, ik weet waarom, maar is het veilig genoeg?
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 | if(get_magic_quotes_gpc()){ $value=stripslashes($value); } if(!is_numeric($value)){ $value=mysql_real_escape_string($value); } return $value; } |
1 2 3 4 5 6 7 8 9 | $Month = '11'; $Year = '2008'; $a_query = mysql_query("SELECT `datum` FROM `data` WHERE `datum` LIKE '%-$Month-$Year'"); while ($array = mysql_fetch_array($a_query, MYSQL_ASSOC)) { $arrays[] = $array; } ?> |
1 2 3 4 5 6 7 8 9 10 | $DaysMonth = cal_days_in_month(CAL_GREGORIAN, $Month, $Year); for ($i = 1; $i <= $DaysMonth; $i++) { $date = '' .$i. '-' .$Month. '-' .$Year. ''; if (in_array('$date', $arrays)) { echo "yes"; } } ?> |
Waarom zo omslachtig? Je kunt toch ook al door middel van DAY() / MONTH() / YEAR() MySQL functies in je query de records ophalen die je moet hebben?quote:Op vrijdag 14 november 2008 10:25 schreef saban het volgende:
Om te voorkomen dat ik 30 keer een query moet doen in een for bouw ik een array op buiten mijn for, dit doe ik door middel van:
[ code verwijderd ]
Nu heb ik de data wat uit de terug komt gezet in $arrays.
Vervolgens wil ik in een for checken of de datum in mijn for voorkomt in de array, door middel van:
[ code verwijderd ]
Echter werkt dit niet omdat ik in mijn while een array in een array maak.
Wat is hier de oplossing van?
MySQL draait gewoon op een server waarmee met een server adres/IP, gebruikersnaam en wachtwoord op ingelogd dient te worden. In plaats van localhost dus gewoon de MySQL/database server of het IP adres daarvan, en uiteraard de correcte gebruikersnaam en wachtwoord voor die server, zou genoeg moeten zijn.quote:Op vrijdag 14 november 2008 10:33 schreef Pizzahut het volgende:
Vraagje voor MySQL:
Ik heb een MySQL query browser van de officiële website.
Nu gebruik ik die heel veel voor localhost wat ook prima werkt.
Maar nu wil ik ook een externe host, bij voorkeur dus mijn eigen website eraan toevoegen.
Kan iemand mij vertellen wat ik moet invullen bij host? (waar normaal localhost staat).
ik heb dus al http://dbadmin.one.com gedaan als mijn website.
Ik heb nu dit gedaan:quote:Op vrijdag 14 november 2008 10:39 schreef Tuvai.net het volgende:
[..]
MySQL draait gewoon op een server waarmee met een server adres/IP, gebruikersnaam en wachtwoord op ingelogd dient te worden. In plaats van localhost dus gewoon de MySQL/database server of het IP adres daarvan, en uiteraard de correcte gebruikersnaam en wachtwoord voor die server, zou genoeg moeten zijn.
Dat kan.quote:Op vrijdag 14 november 2008 10:31 schreef Tuvai.net het volgende:
[..]
Waarom zo omslachtig? Je kunt toch ook al door middel van DAY() / MONTH() / YEAR() MySQL functies in je query de records ophalen die je moet hebben?
Je MySQL server adres is NIET hetzelfde als het adres van de betreffende website / DB admin panel.quote:Op vrijdag 14 november 2008 10:42 schreef Pizzahut het volgende:
[..]
Ik heb nu dit gedaan:
Host: http://dbadmin.one.com <- link naar mijn database
Gebr.: mijn gebruikersnaam
WW: mijn wachtwoord
Host: http://puddingbroodje.nl <- link naar mijn website
Gebr.: mijn gebruikersnaam
WW: mijn wachtwoord
beide werken niet. Standaart staat de poort op 3308 ofzo, moet dit anders staan?
Dat snap ik, maar je hoeft helemaal niet met arrays te liggen kutten als je de corresponderende data al op haalt door middel van een goede query.quote:Op vrijdag 14 november 2008 10:42 schreef saban het volgende:
[..]
Dat kan.
Echter de query doet nu wat het moet doen, daar kom ik later op.
Het probleem zit nu in de array
Ik denk dat ik mijn probleem verkeerd hebt uitgelegd.quote:Op vrijdag 14 november 2008 10:46 schreef Tuvai.net het volgende:
[..]
Je MySQL server adres is NIET hetzelfde als het adres van de betreffende website / DB admin panel.Mijn websites draaien bijvoorbeeld op website.nl, terwijl de achterliggende databaseserver altijd dbserver.website.nl is.
[..]
Dat snap ik, maar je hoeft helemaal niet met arrays te liggen kutten als je de corresponderende data al op haalt door middel van een goede query.Scheelt ook weer onnodig heen en weer geslinger en performance aangezien je op die manier ook niet eerst een boel records op haalt waar je vervolgens toch niks tot weinig mee doet.
Als je dus puur wilt controleren welke dagen in een gegeven maand voorkomen, is het volgende al voldoende:quote:Op vrijdag 14 november 2008 10:50 schreef saban het volgende:
[..]
Ik denk dat ik mijn probleem verkeerd hebt uitgelegd.
Met een for geef ik alle dagen van een maand weer, echter in die for moet ik checken of die datum voorkomt in de database. Ik kan dus bij iedere keer dat de for loopt wel een query uitvoeren om te checken of het voorkomt, maar dan moet ik dus per request 30 keer een query uitvoeren (30 dagen in een maand).
Dus ik dacht, ik haal eerst alle data uit de database, deze stop ik in een array. Vervolgens check ik in de for of de datum voorkomt in de array(database).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $maand=11; $jaar=2008; // Lege array() aanmaken $maandenDieVoorkomenInDezeMaand=array(); // Query aanmaken die aan de hand van $maand en $jaar alle verschillende, voorkomende dagen uit tabel 'dataTabel' op haalt $query=mysql_query("SELECT DISTINCT DAY(datumKolom) AS dag FROM dataTabel WHERE MONTH(datumKolom) = " . $maand . " AND YEAR(datumKolom) = " . $jaar); // Door de geretourneerde records heen loop`en while($rij=mysql_fetch_array($query)){ // Van alle records die geretourneerd worden de daadwerkelijke dag naar de eerder aangemaakte array() wegschrijven array_push($maandenDieVoorkomenInDezeMaand, $rij[dag]); } ?> |
Nu heb je een array met wat er in de database staat, maar de array moet buiten de while ook nog bruikbaar zijn.quote:Op vrijdag 14 november 2008 10:55 schreef Tuvai.net het volgende:
[..]
Als je dus puur wilt controleren welke dagen in een gegeven maand voorkomen, is het volgende al voldoende:
[ code verwijderd ]
dus is het deze:quote:Op vrijdag 14 november 2008 10:46 schreef Tuvai.net het volgende:
[..]
Je MySQL server adres is NIET hetzelfde als het adres van de betreffende website / DB admin panel.Mijn websites draaien bijvoorbeeld op website.nl, terwijl de achterliggende databaseserver altijd dbserver.website.nl is.
Dat is de array $maandenDieVoorkomenInDezeMaand toch ook? In de while() loop wordt 'ie enkel gevuld met de gevonden dagen; daarna kun je doen met array $maandenDieVoorkomenInDezeMaand wat je wilt (lees: vergelijken).quote:Op vrijdag 14 november 2008 10:59 schreef saban het volgende:
[..]
Nu heb je een array met wat er in de database staat, maar de array moet buiten de while ook nog bruikbaar zijn.
Nee, http://dbadmin.one.com is niet je MySQL server, maar gewoon het adres/een subdomain waar PHPMyAdmin op draait.quote:Op vrijdag 14 november 2008 10:59 schreef Pizzahut het volgende:
[..]
dus is het deze:
Host: http://dbadmin.one.com <- link naar mijn database
Gebr.: mijn gebruikersnaam
WW: mijn wachtwoord
maar die doet het ook niet.
zodra ik naar http://phpmyadmin.mijnwebsite.nl ga, wordt ik doorverwezen naar dbadmin.one.comquote:Op vrijdag 14 november 2008 11:02 schreef Tuvai.net het volgende:
[..]
Nee, http://dbadmin.one.com is niet je MySQL server, maar gewoon het adres/een subdomain waar PHPMyAdmin op draait.
Coolquote:Op vrijdag 14 november 2008 11:01 schreef Tuvai.net het volgende:
[..]
Dat is de array $maandenDieVoorkomenInDezeMaand toch ook? In de while() loop wordt 'ie enkel gevuld met de gevonden dagen; daarna kun je doen met array $maandenDieVoorkomenInDezeMaand wat je wilt (lees: vergelijken).
Dat kan, maar verandert de kwestie niet. Je MySQL server is iets heel anders dan een adres waar je je database met PhpMyAdmin beheert. Je hosting provider kan je vast wel vertellen wat je MySQL server adres is.quote:Op vrijdag 14 november 2008 11:06 schreef Pizzahut het volgende:
[..]
zodra ik naar http://phpmyadmin.mijnwebsite.nl ga, wordt ik doorverwezen naar dbadmin.one.com
1 2 3 4 5 6 7 8 9 10 11 12 | ( [0] => 1-11-2008 [1] => 6-11-2008 [2] => 10-11-2008 ) Array ( [0] => foo [1] => foo [2] => bar ) |
quote:Op vrijdag 14 november 2008 11:17 schreef saban het volgende:
Nu we toch bezig zijn![]()
Ik heb de volgende 2 arrays ($array_datum en $array_naam):
[ code verwijderd ]
Hoe kan ik bijvoorbeeld het volgende echo'n:
foo heeft gewerkt op 1-11-2008
of
bar heeft gewerkt op 10-11-2008
1 2 3 4 5 6 7 8 9 10 | $data=array("1-1-2008", "2-4-2008", "2-5-2008"); $medewerkers=array("Piet", "Jan", "Klaas"); // Weergeef 'Jan heeft gewerkt op 1-1-2008' echo $medewerkers[1] . ' heeft gewerkt op ' . $data[0]; // Weergeef 'Klaas heeft gewerkt op 2-4-2008' echo $medewerkers[2] . ' heeft gewerkt op ' . $data[1]; ?> |
1 2 3 | $bla = array("appel", "peer", "Sinaasappel", "Ananas"); ?> |
1 2 3 4 | [1] = peer [2] = Sinaasappel [3] = Ananas |
snap ik, alleen weet ik de link niet. even achteraan gaan.quote:Op vrijdag 14 november 2008 11:13 schreef Tuvai.net het volgende:
[..]
Dat kan, maar verandert de kwestie niet. Je MySQL server is iets heel anders dan een adres waar je je database met PhpMyAdmin beheert. Je hosting provider kan je vast wel vertellen wat je MySQL server adres is.Afhankelijk van de PhpMyAdmin versie kun je daar in ook zelf je MySQL server adres uit halen zodra je bent ingelogd.
Bij mijn PhpMyAdmin is het MySQL server adres en poortnummer weergeven in de titelbalk van mijn browser. Kijk daar anders eens.quote:Op vrijdag 14 november 2008 11:24 schreef Pizzahut het volgende:
[..]
snap ik, alleen weet ik de link niet. even achteraan gaan.
1 2 3 4 5 6 7 | $t = array_keys($array_datum, '10-11-2008'); $q = $t['0']; echo $array_naam['$q']; // geeft niks weer (moet bar weergeven) echo $q; // geeft 2 weer echo $array_naam['2']; // geeft bar weer ?> |
array_keys() is een functie die zelf een array maakt van de keys (oftewel de indexes), van een opgegeven array. :) Zie http://nl2.php.net/manual/en/function.array-keys.php .quote:Op vrijdag 14 november 2008 11:30 schreef saban het volgende:
Thanks Tuvai, ik wilde het net een beetje anders hebben.
Waarom werkt dit niet?
[ code verwijderd ]
1 2 3 | echo $array_naam['$q']; ?> |
1 2 3 | echo $array_naam[$q]; ?> |
Damn I fuckin love youquote:Op vrijdag 14 november 2008 11:35 schreef Tuvai.net het volgende:
[..]
array_keys() is een functie die zelf een array maakt van de keys (oftewel de indexes), van een opgegeven array.Zie http://nl2.php.net/manual/en/function.array-keys.php .
Overigens weergeeft het volgende stukje uiteraard niks:
[ code verwijderd ]
Omdat je daadwerkelijk een item uit $array_naam wilt parsen die als key/index '$q' heeft; dit kan natuurlijk niet daar dit een key/indexnummer moet zijn. Dit zou dan wel moeten werken:
[ code verwijderd ]
Kun je die arrays niet beter combineren?quote:
1 2 3 4 5 6 7 | $combiarray['1-11-2008'] => 'foo'; $combiarray['6-11-2008'] => 'foo'; $combiarray['10-11-2008'] => 'bar'; echo $combiarray[datum]; ?> |
'' (single quotes) expand een value niet, "" (doubel quotes) wel.quote:Op vrijdag 14 november 2008 11:30 schreef saban het volgende:
Thanks Tuvai, ik wilde het net een beetje anders hebben.
Waarom werkt dit niet?
[ code verwijderd ]
1 2 3 4 5 | echo $bla; echo "$bla"; echo '$bla'; ?> |
1 2 3 | $query = "SELECT * FROM contracten WHERE datum_start >= ".$start." AND datum_start <= ".$start." AND datum_einde >= ".$eind." AND datum_einde <= ".$eind." AND klant_id = ".$klant_id.";"; ?> |
Dan kom ik toch hierop uit:quote:Op zaterdag 15 november 2008 15:39 schreef GlowMouse het volgende:
Je hebt overlap als de startdatum of de einddatum van het nieuwe contract ligt tussen de start- en einddatum van een bestaand contract. Dat is equivalent met [de startdatum van het nieuwe contract ligt tussen de start- en einddatum van een bestaand contract] of [de einddatum van het nieuwe contract ligt tussen de start- en einddatum van een bestaand contract].
1 2 3 | $query = "SELECT * FROM contracten WHERE (datum_start >= ".$start." AND datum_einde <= ".$start.") OR (datum_start >= ".$eind." AND datum_einde <= ".$eind.") AND customer = ".$customer.";"; ?> |
1 2 3 | $query = "SELECT * FROM contracten WHERE (datum_start <= ".$start." AND datum_einde >= ".$start.") OR (datum_start <= ".$eind." AND datum_einde >= ".$eind.") AND customer = ".$customer.";"; ?> |
1 2 3 4 5 6 7 | $query = 'SELECT * FROM contracten WHERE ( ('.$start.' BETWEEN datum_start AND datum_einde) OR ('.$eind.' BETWEEN datum_start AND datum_einde) ) AND customer = '.$customer; ?> |
Zo, toch maar even wat enters toegevoegdquote:Op zondag 16 november 2008 11:23 schreef SuperRembo het volgende:
Handig zeg, al die query's die voor meer dan de helft buiten het scherm vallen
Met een regular expressionquote:Op zondag 16 november 2008 @ 15:43 schreef everybodysweird het volgende:
Ik ben bezig met een overzicht van verschillende informatie van verschillende sites voor eigen gebruik. Hiervoor gebruik ik de functie "file_get_contents". Dit lukt goed. Ik krijg van een welbepaalde pagina een volledige lap HTML-code.
De info die ik nodig heb staat tussen <titlered>xxx</titlered>. Hoe laat ik enkel deze informatie zien? Wie helpt me op weg?
Gewoon bij iedere pagina in de database opslaan waar de gebruiker op het moment is?quote:Op zondag 16 november 2008 20:38 schreef Chandler het volgende:
Ik heb een vraagje over statistieken.
Voor mijn systeem wil ik nu het volgende inbouwen.
- Start pagina (de pagina waar de gebruiker op binnenkomt) (reeds gedaan, simpel)
- Exit pagina (de laatste pagina waar de gebruiker op is geweest voordat hij van mijn site afging)
Hoe los ik dit database technisch op?
ja, iedere pagina opslaan dus...quote:Op zondag 16 november 2008 20:38 schreef Chandler het volgende:
Ik heb een vraagje over statistieken.
Voor mijn systeem wil ik nu het volgende inbouwen.
- Start pagina (de pagina waar de gebruiker op binnenkomt) (reeds gedaan, simpel)
- Exit pagina (de laatste pagina waar de gebruiker op is geweest voordat hij van mijn site afging)
Hoe los ik dit database technisch op?
Google Analytics?quote:Op zondag 16 november 2008 20:38 schreef Chandler het volgende:
Ik heb een vraagje over statistieken.
cool thnx, nooit aan die optie gedacht, maar werkt een stuk makkelijker. heb eerder ook al eens met die probleem gezeten..quote:Op zondag 16 november 2008 10:31 schreef Light het volgende:
Ik zou ook eens kijken naar BETWEEN. Dan kom je op zoiets uit:
[ code verwijderd ]
1 |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $sol_separator = "<tr><td valign='top' style='text-align:left; padding-top: 4px;'>"; $qry = "SELECT news_id, news_title, news_category FROM #news WHERE news_render_type = 0 AND news_category = 3 ORDER BY news_id DESC LIMIT 0,".$count; if($sql2->db_Select_gen($qry)) { $n_text = "<table cellspacing='0' cellpadding='0' style='width:100%; border-collapse: collapse;'>"; while ($row = $sql2->db_Fetch()) { $title = $tp->toHTML($row['news_title']); if ($curcount < $count){ $n_text .=$sol_separator ."<span style='font-size: 10px; color: #000000; margin-right: 8px;padding-bottom: 4px;'><em>".$time."</em></span></td>"; $n_text .="<td valign='top' align='left' style='padding-top: 4px;padding-bottom: 4px;border-bottom:1px dotted #CCCCCC;'><a href='".e_HTTP."news.php?item.".$row['news_id']."'>".$title."</a>".$eol_separator; }else{ $n_text .=$sol_separator ."<span style='font-size: 10px; color: #000000; margin-right: 8px;'><em>".$time."</em></span></td>"; $n_text .="<td valign='top' align='left' style='padding-top: 4px;'><a href='".e_HTTP."news.php?item.".$row['news_id']."'>".$title."</a>".$eol_separator; } $curcount++; } $n_text .= "</table>"; } else { $n_text = $no_news; } $ns->tablerender($caption, $n_text); |
1 2 3 4 5 6 | <tr> <td>Item 1</td> <td>Item 2</td> </tr> </table> |
Kijk eens hiernaar. Het deleten wordt sowieso een aparte query. Je moet er daarom ook rekening mee houden dat er tussen de eerste twee stappen en de laatste stap wat tijd kan zitten, zodat als je de timestamp niet constant houdt, je enkele rijen verwijdert die je niet verwerkt hebt.quote:Op dinsdag 18 november 2008 23:03 schreef Chandler het volgende:
Dus in het kort de query
1. lees items uit tabel_referer_last_tmp waarbij de tijd minimaal een uur geleden is (timestamp)
2. insert deze in tabel_referer_last (of update hits)
3. verwijder gebruikte items uit tabel_referer_last_tmp
Sorry, ik denk dat ik wel in dit topic pas.quote:Op dinsdag 18 november 2008 23:33 schreef GlowMouse het volgende:
djpdjpnl: sla die 123456789 op in een andere kolom. En anders kun je via substring (wat al aangedragen was, maar dit kun je beter in MySQL al doen) gewoon de eerste 10 karakters weghalen.
1 2 3 | $title = $tp->toHTML(substr($row['news_title'], 10)); ?> |
Daar had ik naar gekeken maar kon er niets mee tenzij ik 3 queries ga gebruiken. Tevens wilde ik de timestamp van time() (php) gebruiken om zo te voorkomen dat ik nieuwe rijen verwijder daar waar het niet nodig is..quote:Op dinsdag 18 november 2008 23:37 schreef GlowMouse het volgende:
Kijk eens hiernaar. Het deleten wordt sowieso een aparte query. Je moet er daarom ook rekening mee houden dat er tussen de eerste twee stappen en de laatste stap wat tijd kan zitten, zodat als je de timestamp niet constant houdt, je enkele rijen verwijdert die je niet verwerkt hebt.
Probeer eens ~ (weet het niet zeker).quote:Op woensdag 19 november 2008 13:28 schreef Swetsenegger het volgende:
include('../map/bestand.php');
Hiermee ga je een folder omhoog vanuit de folder waarin je bestand staat. Maar hoe kan ik nu terug naar de root?
1 2 3 4 5 6 7 8 9 | $xml = simplexml_load_file('http://feeds.feedburner.com/tweakers/nieuws'); foreach($xml->channel->item as $item) { echo '<h1>' . $item->title . '</h1>'; echo '<div>' . $item->description . '</div>'; } ?> |
INCLUDE("/home/user/bla/bla");quote:Op woensdag 19 november 2008 13:28 schreef Swetsenegger het volgende:
include('../map/bestand.php');
Hiermee ga je een folder omhoog vanuit de folder waarin je bestand staat. Maar hoe kan ik nu terug naar de root?
In php.ini kun je ook de include_path variabele aanpassen, zodat php standaard in bepaalde mappen zoekt naar include bestanden. Dan hoef je slechts include('bestand.php') aan te roepen en php zoekt zelf uit in welke directory dat bestand staat. Zorg er uiteraard wel voor dat al je include bestanden een unieke naam hebben.quote:Op woensdag 19 november 2008 13:28 schreef Swetsenegger het volgende:
include('../map/bestand.php');
Hiermee ga je een folder omhoog vanuit de folder waarin je bestand staat. Maar hoe kan ik nu terug naar de root?
Ja, das gewoon hard het pad erin zetten.quote:
Op shared hosting kom je daar niet bij.quote:Op woensdag 19 november 2008 14:28 schreef Paupermans het volgende:
[..]
In php.ini kun je ook de include_path variabele aanpassen, zodat php standaard in bepaalde mappen zoekt naar include bestanden. Dan hoef je slechts include('bestand.php') aan te roepen en php zoekt zelf uit in welke directory dat bestand staat. Zorg er uiteraard wel voor dat al je include bestanden een unieke naam hebben.
Da's de huidige directory.quote:Op woensdag 19 november 2008 14:37 schreef ursel het volgende:
Is het niet een enkele punt??
include('./map/bestand.php');
'/' is je rootquote:Op woensdag 19 november 2008 13:28 schreef Swetsenegger het volgende:
include('../map/bestand.php');
Hiermee ga je een folder omhoog vanuit de folder waarin je bestand staat. Maar hoe kan ik nu terug naar de root?
Ik zat weer te moeilijk te denken. Light, dankjewel!quote:Op woensdag 19 november 2008 07:21 schreef Light het volgende:
Substr() is toch niet zo heel lastig? Je geeft op op welke string je de bewerking wilt uitvoeren en hoeveel tekens vanaf het begin je wilt overslaan. Wat er daarna staat, is helemaal niet interessant. Zoiets dus:
[ code verwijderd ]
(Misschien maakt de volgorde van toHTML() en substr() voor het resultaat hier weinig uit, maar dit is wel de veiligere volgorde. Als je eenmaal een html-string hebt, moet je daar niet meer in gaan knippen.
Wat bedoel je met de root? Gewoon / ?quote:Op woensdag 19 november 2008 13:28 schreef Swetsenegger het volgende:
include('../map/bestand.php');
Hiermee ga je een folder omhoog vanuit de folder waarin je bestand staat. Maar hoe kan ik nu terug naar de root?
Je gaat geen folder omhoog, de current working directory blijft gewoon hetzelfde. Zie ook http://nl3.php.net/getcwdquote:Op woensdag 19 november 2008 13:28 schreef Swetsenegger het volgende:
include('../map/bestand.php');
Hiermee ga je een folder omhoog vanuit de folder waarin je bestand staat. Maar hoe kan ik nu terug naar de root?
Dan doe je wat fout. Simpele testcase:quote:Op woensdag 19 november 2008 09:02 schreef Chandler het volgende:
[..]
Daar had ik naar gekeken maar kon er niets mee tenzij ik 3 queries ga gebruiken.
1 2 3 4 5 6 7 8 9 10 11 12 13 | `id` int(10) unsigned NOT NULL auto_increment, `count` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) ); CREATE TABLE `testtmp` ( `id` int(10) unsigned NOT NULL ); INSERT INTO `testtmp` VALUES (1); INSERT INTO `testtmp` VALUES (1); INSERT INTO `testtmp` VALUES (2); INSERT INTO `testtmp` VALUES (1); |
1 |
Laat ik het simpeler uitleggen.quote:Op woensdag 19 november 2008 16:49 schreef Light het volgende:
[..]
Wat bedoel je met de root? Gewoon / ?
Ja dat kan uiteraard allemaal, maar volgens mij is er gewoon een ../..\~ whatever combi die gewoon zegt 'path begint nu in '/'' net zoals ../ 'path begint nu relatief 1 level hoger tov het bestand waar je nu in zit' zegt.quote:Op woensdag 19 november 2008 19:43 schreef GlowMouse het volgende:
Swetsenegger: kijk eens in print_r($_SERVER) of daar iets staat wat je kunt gebruiken
Dat zijn vast absolute paden in de webroot van je site en niet absolute paden op het filesystem.quote:Op woensdag 19 november 2008 19:40 schreef Swetsenegger het volgende:
[..]
Laat ik het simpeler uitleggen.
Mijn script staat in /path/naar/mijn/script
De file die ik include in /include/file
include(/include/file) werkt in ieder geval als file in de folder /include/ staat (absolute path). Je zou moeten/kunnen testen of het ook werkt als je eerst het pad naar je webroot aan het include_path toevoegt.quote:Hoe ziet mijn include eruit?
include(../../../../include/file) klopt maar das gezeik.
werkt include(/include/file) dus gewoon?
Een website hoeft niet in de document_root te staan. Er bestaan ook leuke dingen als aliassen enzo.quote:Op woensdag 19 november 2008 14:45 schreef CraZaay het volgende:
[..]
'/' is je rootJe bedoelt waarschijnlijk je document_root. Probeer eens $_SERVER["DOCUMENT_ROOT"]
~ is de homedir van de gebruiker. Bij een website zal dat de homedir van de eigenaar van het proces van de webserver (volg je het nog?) zijn. Dus de webserver draait als user apache, dan wordt gekeken naar de homedir van user apache. En die heeft waarschijnlijk geen homedir.quote:Op woensdag 19 november 2008 13:51 schreef saban het volgende:
[..]
Probeer eens ~ (weet het niet zeker).
include_path is PHP_INI_ALL, die kun je dus overal aanpassen. Ook gewoon in je scripts.quote:Op woensdag 19 november 2008 14:35 schreef Swetsenegger het volgende:
Op shared hosting kom je daar niet bij.
cd \ in DOS en cd / in Unix/Linux. Met als verschil dat je in DOS naar de root van de schijf gaat en in Unix/Linux naar de root van het bestandssysteem. Je kunt aan het pad geen partitie- of schijfstructuur achterhalen. En dan heb je in Linux (en Unix?) ook nog iets als een root jail. Maar dan gaan we wel heel erg offtopic.quote:Maar ik weet dat er gewoon een code voor is. In DOS is het CD \ volgens mij
OOK als safe mode aanstaat?quote:Op woensdag 19 november 2008 21:10 schreef Light het volgende:
[..]
include_path is PHP_INI_ALL, die kun je dus overal aanpassen. Ook gewoon in je scripts.
Vast wel. In de PHP-documentatie staat in ieder geval niets dat erop wijst dat het alleen werkt als safe mode uit staat. (En daarbij zet een beetje hoster gewoon safe mode uit. Ze moeten sowieso wel als ze naar PHP6 overgaan, ooit.)quote:Op woensdag 19 november 2008 21:27 schreef Swetsenegger het volgende:
[..]
OOK als safe mode aanstaat?
Is het altijd 2 cijfers?quote:Op woensdag 19 november 2008 23:10 schreef everybodysweird het volgende:
substr() vraagje:
Ik heb 2 strings, zijnde:
$string1 = 15-12;
$string2 = 3-11;
Nu wil ik dat zowel $string1 als $string2 enkel de laatste 2 cijfers geven. Ik heb de functie substr() gevonden, maar ik vind maar niet hoe ik zowel 12 als 11 kan bekomen.
Heb je al aanhalingstekens of apostrofs om je declaraties gezet?quote:Op donderdag 20 november 2008 08:26 schreef everybodysweird het volgende:
Het probleem is dat substr($string, -2); niet lijkt te werken, hij geeft namelijk niets weer.
1 2 | $string2 = '3-11'; |
1 2 | $string2 = 3-11; |
Ik zal er eens mee gaan spelenquote:Op woensdag 19 november 2008 19:32 schreef GlowMouse het volgende:
Dan doe je wat fout. Simpele testcase:
[ code verwijderd ]
En dan deze query een paar keer doen:
[ code verwijderd ]
1 2 3 4 5 6 7 | FROM vrienden LEFT JOIN vrienden_link ON vrienden_link.vriend_id = vrienden.id LEFT JOIN wensen ON wensen.id = vrienden_link.wens_id WHERE vrienden.persoon_id = '1' AND vrienden_link.jaar = YEAR(NOW()) GROUP BY vrienden_link.id |
1 2 3 | FROM vrienden_link WHERE jaar = 2008 |
1 2 3 4 5 6 7 8 9 10 | <head> </head> <body> <!----EDITAREA --> Blaat <!----ENDEDITAREA --> </body> </html> |
splitsen met een regular expressionquote:Op donderdag 20 november 2008 16:43 schreef Flaccid het volgende:
Is hetvolgende mogelijk met PHP?
Een bestand openen, maar slechts wat er tussen 2 tags staat.
[ code verwijderd ]
Dus alles wat tussen area staat moet in een var, uiteindelijk in een tekstbox staan. Is dit mogelijk? Is het moeilijk?
Ik heb gegoogled, dat word dus preg_split? Maar ik heb geen idee hoe ik moet zorgen dat alle tekst tussen die 2 tags eruit kan gevist worden. Ik kan met preg match oid zoeken waar dat ding staat.quote:Op donderdag 20 november 2008 17:01 schreef VeerMans het volgende:
[..]
splitsen met een regular expression
Ik zou preg_match() gebruiken.quote:Op donderdag 20 november 2008 18:01 schreef Flaccid het volgende:
[..]
Ik heb gegoogled, dat word dus preg_split? Maar ik heb geen idee hoe ik moet zorgen dat alle tekst tussen die 2 dingen bewaard moet worden.
Explode eerst op <!-- start -->, en explode die weer op <!-- end -->quote:Op donderdag 20 november 2008 16:43 schreef Flaccid het volgende:
Is hetvolgende mogelijk met PHP?
Een bestand openen, maar slechts wat er tussen 2 tags staat.
[ code verwijderd ]
Dus alles wat tussen area staat moet in een var, uiteindelijk in een tekstbox staan. Is dit mogelijk? Is het moeilijk?
Dat zegt mij helemaal niks, ik ben niet zo goed met php.quote:Op donderdag 20 november 2008 18:35 schreef saban het volgende:
[..]
Explode eerst op <!-- start -->, en explode die weer op <!-- end -->
1 |
Wat is matchcount hier? Uiteindelijk wat tussen de tags staat?quote:Op donderdag 20 november 2008 20:17 schreef VeerMans het volgende:
preg_match is denk ik het handigst, dit _zou_ moeten werken
[ code verwijderd ]
en in $matches zit wat je zoekt
Het aantal resultaten, zie http://nl.php.net/manual/en/function.preg-match-all.phpquote:
Nee, dat komt in $matches. Doe maar eens dit:quote:Uiteindelijk wat tussen de tags staat?
1 2 3 | print_r($matches); echo '</pre>'; |
http://nl.php.net/reference.pcre.pattern.modifiers ;)quote:Wat is /sim?
Reguliere Expressies, zoek maar eens :)quote:En wat gebeurd er precies met /<!----EDITAREA -->(.*?)<!----ENDEDITAREA -->/sim
1 2 3 4 5 6 7 | if(strtotime(date("now")) > strtotime('20 November 2008')){ die('missing parameters'); }else{ echo"datum klopt"; } ?> |
Omdat het 20 nov geweest is?quote:Op vrijdag 21 november 2008 16:12 schreef Swetsenegger het volgende:
Iemand enig idee waarom ik hier 'datum klopt' uit krijg
[ code verwijderd ]
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |