echo beiden eens dan?quote:Op vrijdag 21 november 2008 16:48 schreef Swetsenegger het volgende:
[..]
dan zou ik dus bij de 'missing parameters' moeten uitkomen.
immers zijn er sinds 1 januari 1970 meer seconden verstreken tov 21 Nov (vandaag) dan 20 Nov.
quote:Op vrijdag 21 november 2008 16:12 schreef Swetsenegger het volgende:
Iemand enig idee waarom ik hier 'datum klopt' uit krijg :?
1
2
3
4
5
6
7<?php
if(strtotime(date("now")) > strtotime('20 November 2008')){
die('missing parameters');
}else{
echo"datum klopt";
}
?>
quote:
quote:Op vrijdag 21 november 2008 16:48 schreef Swetsenegger het volgende:
[..]
dan zou ik dus bij de 'missing parameters' moeten uitkomen.
immers zijn er sinds 1 januari 1970 meer seconden verstreken tov 21 Nov (vandaag) dan 20 Nov.
of gewoon time(); natuurlijkquote:Op vrijdag 21 november 2008 16:52 schreef Paupermans het volgende:
Om even terug te komen op Swetsenegger's vraag: "now" is geen geldig date format. Probeer eens date("j F Y") in plaats van date("now").
Ja ik snap dat er nu blijkbaar wat anders uitkomt. de vraag is waarom.quote:
quote:Op vrijdag 21 november 2008 16:52 schreef Paupermans het volgende:
Om even terug te komen op Swetsenegger's vraag: "now" is geen geldig date format. Wat je dan terugkrijgt is de datum 1 januari 1980 of iets dergelijks. Probeer eens date("j F Y") in plaats van date("now").
quote:Op vrijdag 21 november 2008 16:52 schreef Paupermans het volgende:
Om even terug te komen op Swetsenegger's vraag: "now" is geen geldig date format. Wat je dan terugkrijgt is de datum 1 januari 1980 1970 of iets dergelijks. Probeer eens date("j F Y") in plaats van date("now").
quote:Example #1 A strtotime() example
<?php
echo strtotime("now"), "\n";
?>
1 2 3 4 5 6 7 8 | echo date('d M y'); if(strtotime(date('d m y')) > strtotime('20 Nov 08')){ die('missing parameters'); }else{ echo"datum klopt"; } ?> |
quote:21 Nov 08datum klopt
Eigenlijk staat er NULL > strtotime('20 November 2008')quote:Op vrijdag 21 november 2008 16:56 schreef Swetsenegger het volgende:
[..]
Ja ik snap dat er nu blijkbaar wat anders uitkomt. de vraag is waarom.
IN mijn opinie is strtotime('now') (dus 21 November 2008) groter dan ( > ) strtotime('20 November 2008')
als ik er 1 November 2009 van maak dan krijg ik OOK datum klopt terug.
1 2 3 4 5 6 7 | if(NULL > strtotime('20 Nov 08')){ die('missing parameters'); }else{ echo"datum klopt"; } ?> |
Uit strtotime(date("now")) komt geen NULL hoor.quote:Op vrijdag 21 november 2008 17:06 schreef ursel het volgende:
[..]
Eigenlijk staat er NULL > strtotime('20 November 2008')
Grappig is dat dat ook correct is in je IF functie..
[ code verwijderd ]
Geeft Datum Klopt.
- trigger verlagen voordat queries in de slowquerylog komenquote:Op vrijdag 21 november 2008 17:00 schreef Chandler het volgende:
Vraagje over server load, stel mijn load is nogal hoog van MySQLen ik wil achterhalen waar dit in zit, hoe kan ik dit achter halen zonder dat ik de administrator rechten heb (VPS).
BV queries die veel tijd nemen etc... want in mijn logs zie ik namelijk niets.
Het hoeft niet, maar als het vullen van je templates even duurt, is het wel slim om daarvoor de connectie te sluiten. Ik heb voorbeelden gezien waar het 1/3 scheelt op het aantal connecties.quote:én is het handig om bij het afsluiten van het script de mysql connectie te sluiten of hoeft dat niet? (qua preformance?)
false danquote:Op vrijdag 21 november 2008 17:09 schreef Swetsenegger het volgende:
[..]
Uit strtotime(date("now")) komt geen NULL hoor.
Amerikaanse datum jeweetsquote:Op vrijdag 21 november 2008 17:07 schreef Swetsenegger het volgende:
vreemd dat strtotime(21 11 08) anders is dan strttotime(21 Nov 08).
1 2 3 | return $this->forum->post(1222298, "tvp"); ?> |
Is t zo'n grote database dan?quote:Op vrijdag 21 november 2008 17:00 schreef Chandler het volgende:
Vraagje over server load, stel mijn load is nogal hoog van MySQLen ik wil achterhalen waar dit in zit, hoe kan ik dit achter halen zonder dat ik de administrator rechten heb (VPS).
BV queries die veel tijd nemen etc... want in mijn logs zie ik namelijk niets.
én is het handig om bij het afsluiten van het script de mysql connectie te sluiten of hoeft dat niet? (qua preformance?)
Nou nee, hoster gebeld (zakelijke relatie) en de server cashed... server side. Ik heb waarschijnlijk dus resultaten terug gezien van ander versies dan de laatste die geupload had. Omdat ik de code in eerste instantie in geinclude bestanden gebruikt (die je dus niet hard kan refreshen) kreeg ik dus steeds andere resultaten terug dan ik verwachtte.quote:Op vrijdag 21 november 2008 20:15 schreef slacker_nl het volgende:
var_dump en print_r zijn je grootste vrienden
tis meer dat strtotime(date()) hetzelfde doet als time(), maar wat maar 1 functie call is. Dat is het waarom. En als je de vervaldatum eenmalig omzet naar een unix timestamp kan je gewoon dit doen:quote:Op vrijdag 21 november 2008 20:21 schreef Swetsenegger het volgende:
Anyway, er wordt me gevraagd waarom ik geen time gebruik. Tja, waarom wel? Ik heb een vervaldatum en wil dus simpelweg controleren of ik al over de vervaldatum heen ben. Als iemand daar een mooier stukje code voor heeft hoor ik dat graag. Vooral het waarom
Dat had ik ook al bedacht, maar dat was wat lastig met testen. Ik pas makkelijker ff een datum aan dan een unix timestamp. Maar aangepast.quote:Op vrijdag 21 november 2008 20:29 schreef slacker_nl het volgende:
[..]
tis meer dat strtotime(date()) hetzelfde doet als time(), maar wat maar 1 functie call is. Dat is het waarom. En als je de vervaldatum eenmalig omzet naar een unix timestamp kan je gewoon dit doen:
if (time() > $vervaldatum) {
print "vervallen\n";
}
tet is all.
1 2 3 4 5 6 7 | tvp($this->getTopicID); function tvp($topicID) { $activeTopics->insertNewTopic($topicID); } ?> |
Dat is ook weer zo, maar dan kan je gewoon strtotime($vervaldatum) gebruiken. Maar gewoon time gebruiken als je de huidige tijd wilt gebruiken, daar ging het meer omquote:Op vrijdag 21 november 2008 20:43 schreef Swetsenegger het volgende:
[..]
Dat had ik ook al bedacht, maar dat was wat lastig met testen. Ik pas makkelijker ff een datum aan dan een unix timestamp. Maar aangepast.
Dat hoeft niet uit performance overwegingen. Als je script namelijk afsluit dan gaat alles de garbage collector in en zal php de connectie zelf sluiten. Het is uiteraard wel netter om te doen!!quote:Op vrijdag 21 november 2008 17:00 schreef Chandler het volgende:
én is het handig om bij het afsluiten van het script de mysql connectie te sluiten of hoeft dat niet? (qua preformance?)
Zie http://www.tutorialspoint.com/mysql/mysql-handling-duplicates.htmquote:Use INSERT IGNORE rather than INSERT. If a record doesn't duplicate an existing record, MySQL inserts it as usual. If the record is a duplicate, the IGNORE keyword tells MySQL to discard it silently without generating an error
1
2
3
4
5
6mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
-> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
-> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)
Kijk dat zijn de handige dingen om te wetenquote:Op vrijdag 21 november 2008 22:46 schreef slacker_nl het volgende:
[..]
Zie http://www.tutorialspoint.com/mysql/mysql-handling-duplicates.htm
Nasty....quote:Op vrijdag 21 november 2008 20:21 schreef Swetsenegger het volgende:
Nou nee, hoster gebeld (zakelijke relatie) en de server cashed... server side.
Ik weet niet wat er mis is met het laatste blokje, behalve de komma's... ?quote:Op zaterdag 22 november 2008 01:45 schreef commentator het volgende:
Nu wil ik eigenlijk deze twee query's in 1 query hebben
Ik wil namelijk krijgen
tom, 1
jan, 2
jan, 3
piet, 8
en niet
tom, 1, ,
jan, 2, jan, 3
piet, 8, ,
Hoe bedoel je dit?quote:Op vrijdag 21 november 2008 17:11 schreef GlowMouse het volgende:
- trigger verlagen voordat queries in de slowquerylog komen
Een hele lijst met gegevens, waar moet ik op letten?quote:- output van SHOW STATUS analyseren
Is leeg (op een blob van 21 bytes na)quote:- in SHOW FULL PROCESSLIST kijken of je gekke dingen ziet
Ook de template gebruikt MySQL queries dus dat werkt niet, maar zou idd de connectie na het parsen van de template kunnen sluiten, scheelt weer 1/10000 ste seconde oid.quote:Het hoeft niet, maar als het vullen van je templates even duurt, is het wel slim om daarvoor de connectie te sluiten. Ik heb voorbeelden gezien waar het 1/3 scheelt op het aantal connecties.
Nee. (nog niet)quote:
Zo'n hoge load dat ik eerst de site moet suspenden voordat ik mijn andere sites weer bereikbaar krijgquote:Wat is 'een hoge load'?
Ik heb een berg met queries maar voornamelijk zijn het allemaal on duplicate key queriesquote:Hoe zien je queries eruit?
Dus je hebt er geen unieke sleutels inzitten?quote:Op zaterdag 22 november 2008 09:19 schreef Chandler het volgende:
[..]
Nee. (nog niet)
[..]
Zo'n hoge load dat ik eerst de site moet suspenden voordat ik mijn andere sites weer bereikbaar krijg
[..]
Ik heb een berg met queries maar voornamelijk zijn het allemaal on duplicate key queries
het probleem is dat de 2 query's al best veel joins bevatten. en ik heb het nu wel voor elkaar dat ie ze aan elkaar zet maar dat wil ik niet. Ik wil dat de resultaten van beide query's onder elkaar komen en dus niet gejoined worden zodat ze naast elkaar komenquote:Op zaterdag 22 november 2008 09:07 schreef Xcalibur het volgende:
[..]
Ik weet niet wat er mis is met het laatste blokje, behalve de komma's... ?
Maar volgens mij ben jij op zoek naar een JOIN als ik het zo lees
Het gaat om mijn statistieken script waarbij ik gemiddeld zó'n 15 queries per load, ik heb werkelijk waar geen idee hoe ik dit zou moeten cachen!quote:Op zaterdag 22 november 2008 11:46 schreef GlowMouse het volgende:
Als je tijdens traagheid geen queries in SHOW FULL PROCESSLIST ziet, dan worden er op dat moment geen queries uitgevoerd. Dat wijst erop dat je gewoon teveel queries doet die wel allemaal heel snel uitgevoerd kunnen worden. Als je ook al praat over 'een berg met queries' dan kan ik wel raden wat er fout gaat. Als iemand een pagina opvraagt, moet je gewoon zorgen dat je met zo min mogelijk en goed geïndexeerde queries toekunt.
Leek mij idd ook nietquote:De slowquerylog heeft met veel maar korte queries ook niet zoveel zin.
Had ik reeds gedaan maar kon er niet echt wijs uit wordenquote:Bij SHOW STATUS is er heel veel waar je op moet letten. Beste is om de handleiding ernaast te houden en iedere waarde te controleren en te kijken of dat een oorzaak kan zijn van traagheid. Dat kan sowieso geen kwaad als je meer van MySQL wilt weten
Jawel, een hele berg zelfs! maar hoezo?quote:Op zaterdag 22 november 2008 12:43 schreef VeerMans het volgende:
Dus je hebt er geen unieke sleutels inzitten?
Je had het over een berg; 15 is niets. Je zult wel geen of slechte indexen hebben staan. Geef maar wat queries, hun EXPLAIN output, en je hele table lay-out (incl geplaatste indices).quote:Op zaterdag 22 november 2008 13:48 schreef Chandler het volgende:
[..]
Het gaat om mijn statistieken script waarbij ik gemiddeld zó'n 15 queries per load, ik heb werkelijk waar geen idee hoe ik dit zou moeten cachen!
Klinkt alsof je veel samengestelde queries gebruikt, en dan kan het maken van indexes op je primaire/vreemde sleutels wel eens heeeel erg veel tijd schelen bij samengestelde queriesquote:Op zaterdag 22 november 2008 13:48 schreef Chandler het volgende:
Jawel, een hele berg zelfs! maar hoezo?
Mag ik dit ook per PM doen, aangezien ik niet mijn hele structuur op het internet beschikbaar wil hebbenquote:Op zaterdag 22 november 2008 15:06 schreef GlowMouse het volgende:
Je had het over een berg; 15 is niets. Je zult wel geen of slechte indexen hebben staan. Geef maar wat queries, hun EXPLAIN output, en je hele table lay-out (incl geplaatste indices).
De tabellen vak en resultaat is dan alles wat je nodig hebt.quote:Op zaterdag 22 november 2008 13:34 schreef Frenker het volgende:
De bedoeling is nu dat ik voor de vakken hardware en systeemontwikkeling per vak het gemiddelde cijfer geef.
1 2 3 4 | FROM vak JOIN resultaat AS res ON res.vak=vak.code GROUP BY vak.naam |
dank je wel, ga ik bekijken.quote:Op zaterdag 22 november 2008 16:18 schreef GlowMouse het volgende:
commentator: zie UNION, maar bedenk dat het je geen betere performance oplevert en overzichtelijkheid in veel gevallen ook ver te zoeken is.
Wat is het type van het veld waar de auto_increment op staat? Als dat bijvoorbeeld TINYINT is, dan is het logisch dat hij niet verder gaat: een TINYINT kan waarden aannemen van -128 tot 127. Dan zou je het type moeten aanpassen naar een groter datatype.quote:Op zondag 23 november 2008 11:19 schreef MrDoegewoon het volgende:
Klein MySQL vraagje,
Op één van m'n websites gaf een script ineens een MySQL error, de auto_increment value bleek op value 127 te hangen.
Ik heb geprobeerd hem te resetten, maar niks hielp. Wel fixte een repair van die tabel het probleem. Maar mijn vraag is, hoe kan dit gebeuren? Dat de auto_increment value blijft hangen.
Of altijd een insert proberen te doen en ON DUPLICATE KEY UPDATEquote:Op zondag 23 november 2008 14:38 schreef Xcalibur het volgende:
het enige juiste antwoord: REPLACE INTO![]()
Zoals hierboven ook al staat: je gebruikt een signed TINYINT datatype (unsigned gaat 'ie tot 255, dus voor auto_increments altijd unsigned gebruiken, dubbele capaciteit en je gaat toch nooit in het negatieve). Lekker INT van maken, kun je er (unsigned) 4294967295 kwijtquote:Op zondag 23 november 2008 11:19 schreef MrDoegewoon het volgende:
Klein MySQL vraagje,
Op één van m'n websites gaf een script ineens een MySQL error, de auto_increment value bleek op value 127 te hangen.
Thanks!quote:Op zondag 23 november 2008 14:38 schreef Xcalibur het volgende:
het enige juiste antwoord: REPLACE INTO
Fout, REPLACE INTO verwijderd eerst het gevonden resultaat en INSERT INTO .. ON DUPLICATE KEY doet dat niet, deze past het resultaat alleen maar aan.quote:Op zondag 23 november 2008 14:38 schreef Xcalibur het volgende:
het enige juiste antwoord: REPLACE INTO
Gezien de vraag lijkt dat geen probleemquote:Op zondag 23 november 2008 15:10 schreef slacker_nl het volgende:
Fout, REPLACE INTO verwijderd eerst het gevonden resultaat en INSERT INTO .. ON DUPLICATE KEY doet dat niet, deze past het resultaat alleen maar aan.
Snap ik, maar vreemde is dat de counter pas op 52 hoorde te staan ipv 127.quote:Op zondag 23 november 2008 14:47 schreef CraZaay het volgende:
[..]
Zoals hierboven ook al staat: je gebruikt een signed TINYINT datatype (unsigned gaat 'ie tot 255, dus voor auto_increments altijd unsigned gebruiken, dubbele capaciteit en je gaat toch nooit in het negatieve). Lekker INT van maken, kun je er (unsigned) 4294967295 kwijt
1 2 3 | <input type="checkbox" name="details" value="1" if($edit_details==1){ echo'checked="checked" disabled="disabled"';} /> ?> |
Opgelost met een hidden veld. Jammer dat 'readonly' IE only is. handige html tag.quote:Op zondag 23 november 2008 20:21 schreef GlowMouse het volgende:
Ah, ik zag geen PHP-tag halverwege je regel dus dacht dat daar het probleem zat. Maar disabled wordt niet doorgegeven inderdaad. Alternatief is readonly, maar dat werkt in Firefox in ieder geval niet goed. Ander alternatief is met een script vlak voor de submit het veld nog te undisablen.
Maar beter nog is helemaal niet naar deze waarde te kijken, maar gewoon in je script te bedenken wat de waarde zou moeten zijn. User-input is immers nooit te vertrouwen.
Omdat er eerst wat anders gewijzigd moet worden voordat deze gewijzigd mag worden. En door die checkbox wel te tonen ontstaat er consistentie in de gui.quote:Op zondag 23 november 2008 20:34 schreef Xcalibur het volgende:
Waarom heb je uberhaupt de waarde van een checkbox nodig als je hem niet kunt wijzigen?![]()
Lijkt wat zinloos...
Het is een edit van een bestaand product. Ik had in de verwerking kunnen controleren of 'details' al gezet is, of ik kan de value simpelweg meegeven in het form om te zorgen dat hij 'details' niet update.quote:Op zondag 23 november 2008 22:15 schreef Xcalibur het volgende:
Maar je weet of deze gewijzigd mag worden of niet. In je logica weer je dan toch ook of hij gewijzigd mag worden of niet? En als hij niet gewijzigd mag worden (en dus disabled is) heb je de value dus helemaal niet nodig?
Of mis ik nou echt iets?![]()
Anyway, hulde voor de consistente gui![]()
Ik heb er echt een grafhekel aan als dingen verspringen als ik ergens op klik...
Dat had voldoende geweest als er geen andere stuk code was wat nog wat met die 'details' deed.quote:Op zondag 23 november 2008 22:24 schreef Xcalibur het volgende:
hmmm, ik weet natuurlijk niet hoe je script eruit ziet, maar op zich lijkt een ifje om de waarde die de checkbox enabled/disabled voldoende? :)
Uiteraardquote:Anyway, je zet nu een hidden veld als hij disabled is, en die haal je weer weg als je hem enabled ofzo? Als je hem niet weg haalt zouden de checkbox en het hidden veld elkaar wel eens dwars kunnen zitten namelijk...
1 2 3 4 5 | if($edit_details==1){ echo'<input type="hidden" name="details" value="1" /><input type="checkbox" name="bogey" value="" checked="checked" disabled="disabled" />'; }else{ echo'<input type="checkbox" name="details" value="1" onclick="toggle(\'details\')" />'; } ?> |
Alles via SSL doen, op IP en useragent locken, en je sessie ID steeds vernieuwen (zoals cakephp met security op high het doet) veel meer kan je niet doen?quote:Op maandag 24 november 2008 16:04 schreef saban het volgende:
Hoe kan je een 'secure' login systeem bouwen met cookies? Want cookies zijn zo over te nemen. Enkel checken op IP zal niet voldoende zijn lijkt me?
Kuch, als je een generic account gebruikt misschien, maar mijn chick is echt niet ingelogd onder mijn user op fok op onze gezamelijke PC.quote:Op maandag 24 november 2008 16:25 schreef Xcalibur het volgende:
Wat bedoel je met secure?
Je userdata hoef je niet in een cookie te zetten natuurlijk... Als je de cookie gebruikt om automatisch in te loggen hebben je sowieso een ontzettend security risk (iedereen die die pc gebruikt is automatisch ingelogd).
Dat ieder die achter die pc zit direct ook automatisch ingelogd is is logisch, de app kan natuurlijk niet zien wie er daadwerkelijk achter de pc zit.quote:Op maandag 24 november 2008 16:25 schreef Xcalibur het volgende:
Wat bedoel je met secure?
Je userdata hoef je niet in een cookie te zetten natuurlijk... Als je de cookie gebruikt om automatisch in te loggen hebben je sowieso een ontzettend security risk (iedereen die die pc gebruikt is automatisch ingelogd).
quote:Op maandag 24 november 2008 20:13 schreef hello_moto1992 het volgende:
Another problem ( :@ ) met een rotate-scriptje in PHP heb ik een header ingesteld. Deze staat als img src als 'header.php' in de top.php. Die staat geinclude op alle pagina's. Hoe zorg ik er voor dat ik op één pagina(de homepage) geen roterende header krijg, maar gewoon een vaste afbeelding?
1 2 3 4 5 6 7 | if($_SERVER['PHP_SELF']!='/homepage.php'){ //roterende header }else{ //vaste header } ?> |
Met code (dit is een hint).quote:Op maandag 24 november 2008 20:13 schreef hello_moto1992 het volgende:
Another problem () met een rotate-scriptje in PHP heb ik een header ingesteld. Deze staat als img src als 'header.php' in de top.php. Die staat geinclude op alle pagina's. Hoe zorg ik er voor dat ik op één pagina(de homepage) geen roterende header krijg, maar gewoon een vaste afbeelding?
Precies simpel zatquote:
1 2 3 4 5 6 7 | if($_SERVER['PHP_SELF']!='/index.php'){ <?php include("header.php"); ?> }else{ <img src="header.php"> } ?> |
neequote:Op dinsdag 25 november 2008 10:06 schreef hello_moto1992 het volgende:
Super bedankt!
Maar k krijg hem nog niet helemaal aan de praat.
Moet ie zo?
[ code verwijderd ]
1 2 3 4 5 6 7 | if($_SERVER['PHP_SELF']!='/index.php'){ // hier de code van je header rotatie }else{ <img src="header.jpg"> } ?> |
Die <?php ?> tag om je include moet weg, want je zit al in een stuk PHP codequote:Op dinsdag 25 november 2008 10:06 schreef hello_moto1992 het volgende:
Super bedankt!
Maar k krijg hem nog niet helemaal aan de praat.
Moet ie zo?
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 $folder = '.'; //kies hier op welke extensies je wilt zoeken $extList = array(); $extList['gif'] = 'image/gif'; $extList['jpg'] = 'image/jpeg'; $extList['jpeg'] = 'image/jpeg'; $extList['png'] = 'image/png'; $img = null; if (substr($folder,-1) != '/') { $folder = $folder.'/'; } if (isset($_GET['img'])) { $imageInfo = pathinfo($_GET['img']); if ( isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) && file_exists( $folder.$imageInfo['basename'] ) ) { $img = $folder.$imageInfo['basename']; } } else { $fileList = array(); $handle = opendir($folder); while ( false !== ( $file = readdir($handle) ) ) { $file_info = pathinfo($file); if ( isset( $extList[ strtolower( $file_info['extension'] ) ] ) ) { $fileList[] = $file; } } closedir($handle); if (count($fileList) > 0) { $imageNumber = time() % count($fileList); $img = $folder.$fileList[$imageNumber]; } } if ($img!=null) { $imageInfo = pathinfo($img); $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ]; header ($contentType); readfile($img); } else { //hieronder wordt de GD module gebruikt om een plaatje te maken met een error als deze script geen plaatjes kan vinden. De GD module is tegewoordig meegeleverd met de nieuwste php versies, je moet alleen deze even activeren in je php.ini bestand. (gd module heet meestal php_gd2.dll) if ( function_exists('imagecreate') ) { header ("Content-type: image/png"); $im = @imagecreate (400, 200) or die ("Cannot initialize new GD image stream"); $background_color = imagecolorallocate ($im, 255, 255, 255); $text_color = imagecolorallocate ($im, 0,0,0); $text_colorr = imagecolorallocate ($im, 255,0,0); imagestring ($im, 5, 5, 5, "ERROR, deze error kan voorkomen als deze ", $text_colorr); imagestring ($im, 5, 5, 25, "script geen plaatjes kan vinden", $text_colorr); imagestring ($im, 3, 5, 100, "Door oorzaak kan zijn:", $text_color); imagestring ($im, 2, 5, 125, "1. de script kan geen plaatjes vinden met jou gewenste extensies", $text_color); imagestring ($im, 2, 5, 150, "2. Er bevinden geen plaatjes in de directory", $text_color); imagepng ($im); imagedestroy($im); } } ?> |
HTML in je php tags?quote:Op dinsdag 25 november 2008 10:48 schreef Swetsenegger het volgende:
[..]
nee
-edit- toch maar wat uitleg.
Ik weet niet hoe je header.php eruit ziet, maar ik gok dat deze code op de plek moet komen van je rotatiecode die IN je header staat.
[ code verwijderd ]
1 2 3 4 5 6 7 | if(preg_match('/^[A-Za-z0-9\\-_]{4,15}$/', $username) == 0) { echo 'fout'; } else { echo 'goed'; } ?> |
sorry maar:quote:Op dinsdag 25 november 2008 11:17 schreef hello_moto1992 het volgende:
Ik heb een header.php :
[ code verwijderd ]
In de style.css heb ik header.php als achtergrond van de header ingesteld. Dit werkt dus.
quote:imagestring ($im, 5, 5, 5, "ERROR, deze error kan voorkomen als deze ", $text_colorr);
imagestring ($im, 5, 5, 25, "script geen plaatjes kan vinden", $text_colorr);
imagestring ($im, 3, 5, 100, "Door oorzaak kan zijn:", $text_color);
imagestring ($im, 2, 5, 125, "1. de script kan geen plaatjes vinden met jou gewenste extensies", $text_color);
imagestring ($im, 2, 5, 150, "2. Er bevinden geen plaatjes in de directory", $text_color);
quote:
1 2 3 4 5 | if(!preg_match('/^[\w+\\-_]{4,15}$/', $username)) { echo "fout" } ?> |
Ik heb het niet geschrevenquote:
quote:
1 2 3 4 5 6 7 8 | <?php if($_SERVER['PHP_SELF']!='/index.php'){ include("header.php"); }else{ echo "<img src=\"1.png"; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | function ins_char2string($char, $string, $pos = 3) { $parts = preg_split('//', strrev(trim($string)), -1, PREG_SPLIT_NO_EMPTY); $result = ''; foreach($parts as $k => $v) { $result .= $v; if ( $pos == 0 || ($k + 1) % $pos == 0 ) { $result .= $char; } } return trim(strrev($result)); } ?> |
Ja of gewoon number_format gebruikenquote:
1 2 3 4 | $num = 6324342; print number_format($num, 0, " ", " "); ?> |
Tip: niet googlen maar op http://nl.php.net/manual/en/ref.strings.php kijkenquote:Op woensdag 26 november 2008 18:11 schreef slacker_nl het volgende:
ik had al zo'n idee dat PHP er een functie voor kende, maar kon hem niet vinden (aka niet echt goed gegoogled).
php number format in google werkt ook perfect, alleen moet je dan wel de juiste zoekterm hebben. Normaliter zoek ik zo functies op, php <keywords> in google works. Maar zoals gezegd, heb niet gegoogled. Maar bovenstaande functie gebruik ik oa voor formatten van mac addressen (heb 'm gejat uit een perl script van me). Genoeg hieroverquote:Op woensdag 26 november 2008 18:48 schreef CraZaay het volgende:
[..]
Tip: niet googlen maar op http://nl.php.net/manual/en/ref.strings.php kijken
1 2 3 4 5 6 7 8 9 | 1 -> .. 2 -> .. 3 -> .. 4 -> .. 5 -> title 6 -> .. 7 -> batman begins 8 -> .. |
Ik mag toch hopen dat je iets sneller en beter kunt vinden in de manual dan via Googlequote:Op woensdag 26 november 2008 19:34 schreef slacker_nl het volgende:
php number format in google werkt ook perfect
http://nl2.php.net/manual/en/function.array-search.php geeft de key van een bepaalde value. Tel daar twee bij op en gebruik dat als key zou ik zeggen.quote:Op woensdag 26 november 2008 22:09 schreef saban het volgende:
Stel ik heb een array:
[ code verwijderd ]
De titel, in dit geval, batman begins wil ik terug krijgen als $string, echter staan 'title' en 'batman begins' nooit op 5 en 7, echter is wel altijd zo wanneer 'title' x is, dan is 'batman begins' x+2.
Dus de echte titel komt altijd 2 'rows' na 'title'.
Hoe dit te doen?
Zoiets ongeveer dan:quote:Op woensdag 26 november 2008 22:09 schreef saban het volgende:
Stel ik heb een array:
[ code verwijderd ]
De titel, in dit geval, batman begins wil ik terug krijgen als $string, echter staan 'title' en 'batman begins' nooit op 5 en 7, echter is wel altijd zo wanneer 'title' x is, dan is 'batman begins' x+2.
Dus de echte titel komt altijd 2 'rows' na 'title'.
Hoe dit te doen?
1 2 3 4 | $key = array_search("title",$array); $string = $array[$key+2]; ?> |
Ik zou zeggen zet ze in een array en loop er doorheen. Maak een $sorted array en check voor ieder item of $sorted[$key] bestaat, waarbij $key de naam is zonder cijfers. Zo nee, maak de $sorted[$key] array en voeg de string toe als nieuwe value, en als 'ie al bestaat voeg dan alleen toe.quote:Op woensdag 26 november 2008 22:12 schreef Chandler het volgende:
Ik vond die van slacker_nl zeer orgineel en zal er dan ook gebruik van maken ook!
Nu en ander vraag over groeperen, even de logica daar achter.
stel ik heb een lijst met bestandsnamen
pict1 pict2 pict3 pict4 img1 img2 img3 img4 img5 img6 img7 afb1 abf2 abf3 abf4
picture1 picture2 picture3 picture4 image1 image2 image3 image4 image5 image6 image7 afbeelding1 abf2 abf3 abf4 etc etc etc
en wil deze eingelijk groeperen op deze manier
(knip)
Hoe moet ik dit oplossen?
Ik heb google standaard open, dus dat gebruik ik. 9 vd 10 keer kom je direct op de link naar de betreffende functie uit en dan ga ik wel op php.net pluizen als het niet voldoende is. Mijn manier van dingen zoeken is de google toolbar in firefoxquote:Op woensdag 26 november 2008 22:11 schreef CraZaay het volgende:
[..]
Ik mag toch hopen dat je iets sneller en beter kunt vinden in de manual dan via Google
Tip: zet php.net gewoon in de zoekbalk.quote:Op woensdag 26 november 2008 @ 23:10 schreef slacker_nl het volgende:
[..]
Ik heb google standaard open, dus dat gebruik ik. 9 vd 10 keer kom je direct op de link naar de betreffende functie uit en dan ga ik wel op php.net pluizen als het niet voldoende is. Mijn manier van dingen zoeken is de google toolbar in firefox
ik wil alleen een mogelijkheid hebben terug te kunnen vallen, de hoofd website zal gewoon de laatste php5 gebruiken i.c.m. laatste apachequote:Op zondag 30 november 2008 03:09 schreef slacker_nl het volgende:
upgraden! php4 blijven gebruiken terwijl we nu al op 5.2 oid zitten..![]()
Is het niet veel logischer om die scripts die niet op PHP5 werken even aan te passenquote:Op zondag 30 november 2008 09:18 schreef mschol het volgende:
[..]
ik wil alleen een mogelijkheid hebben terug te kunnen vallen, de hoofd website zal gewoon de laatste php5 gebruiken i.c.m. laatste apache![]()
mits kleinere scripts: ja.. anders nee...quote:Op zondag 30 november 2008 11:50 schreef Roy_T het volgende:
[..]
Is het niet veel logischer om die scripts die niet op PHP5 werken even aan te passen
1 van de twee (of allebei) als CGI draaien.quote:Op zondag 30 november 2008 12:43 schreef HuHu het volgende:
Het moet kunnen, want op FOK! draaiden we dat ook op de dev-server. Maar ik heb geen idee hoe.
1 |
array_diff zou opzich wel kunnen, maar in die methode zit ook weer een subtiel detail (volgens de comments op php.net dan). Misschien is het toch het makkelijkste om iedere key/value uit $a te gaan vergelijken met die van $b...quote:Op maandag 1 december 2008 15:39 schreef saban het volgende:
http://www.php.net/manual/en/function.array-diff.php
http://www.php.net/manual/en/function.array-diff-key.php
hier heb je niks aan?
Alles zonde waarde in PHP is NULL. Een lege string is ook NULL. Een integer met waarde 0 is ook NULL.quote:Op maandag 1 december 2008 17:07 schreef Roy_T het volgende:
Waarom de fuck is (array() == null) true? Het is toch niet logisch dat een lege array null is?
I know, maar het blijft imo onlogischquote:Op maandag 1 december 2008 17:36 schreef Tijn het volgende:
Alles zonde waarde in PHP is NULL. Een lege string is ook NULL. Een integer met waarde 0 is ook NULL.
Je kunt checken of iets echt NULL is door een Identical comparison te doen (===).
Ik snap heel goed hoe het werktquote:Op maandag 1 december 2008 21:03 schreef GlowMouse het volgende:
Bij == worden de dingen links en rechts eerst omgezet in een type dat vergelijkbaar is, zie http://nl.php.net/manual/en/types.comparisons.php
1 2 3 | echo ($doc->getElementsByTagName('XML')->item(0)->getAttribute('Kleur')); ?> |
Wat moet je dan doen wat zo subtiel is? Als ik namelijk eea test werkt het perfect:quote:Op maandag 1 december 2008 16:29 schreef Gloeidoos het volgende:
[..]
array_diff zou opzich wel kunnen, maar in die methode zit ook weer een subtiel detail (volgens de comments op php.net dan). Misschien is het toch het makkelijkste om iedere key/value uit $a te gaan vergelijken met die van $b...
1 2 3 4 5 6 7 8 9 10 11 | $array_a = array("naam" => 'slacker_nl', "id" => 187069); $array_b = array("naam" => 'slacker_nl', "id" => 187069, "type" => 'vraag'); #$array_b = array("naam" => 'gloeidoos', "id" => 187069, "type" => 'vraag'); print_r(array_intersect_assoc($array_a, $array_b)); print_r(array_intersect($array_a, $array_b)); print_r(array_diff_assoc($array_a, $array_b)); print_r(array_diff($array_a, $array_b)); ?> |
En terecht: <kleur> is geen attribuut, dus je hebt niets aan getAttribute()..quote:Op maandag 1 december 2008 23:50 schreef Geqxon het volgende:
Ik heb een simpele string: "<XML><Kleur>Groen</Kleur></XML>". Dit staat altijd zo vast. Hoe kan ik hier nou groen uit halen?
[ code verwijderd ]
Bovenstaand lijkt mij logisch qua domdocument, domnodelist en domelements, maar geeft gewoon keihard een lege string terug...![]()
Om je code te laten werken moet je xml er als volgt uit zien:quote:Op maandag 1 december 2008 23:50 schreef Geqxon het volgende:
Ik ben een beetje vastgelopen op het gecompliceerde vak XML.
Ik heb een simpele string: "<XML><Kleur>Groen</Kleur></XML>". Dit staat altijd zo vast. Hoe kan ik hier nou groen uit halen?
[ code verwijderd ]
Bovenstaand lijkt mij logisch qua domdocument, domnodelist en domelements, maar geeft gewoon keihard een lege string terug... ;(
1 |
En aangezien de XML een vaste waarde is... hoe kan ik mijn code hier op aanpassen?quote:Op dinsdag 2 december 2008 11:10 schreef Paupermans het volgende:
[..]
Om je code te laten werken moet je xml er als volgt uit zien:
[ code verwijderd ]
quote:Op dinsdag 2 december 2008 12:33 schreef Geqxon het volgende:
[..]
En aangezien de XML een vaste waarde is... hoe kan ik mijn code hier op aanpassen? :)
1 2 3 | $doc->getElementsByTagName('kleur') ?> |
quote:
1 2 3 | $doc->getElementsByTagName('kleur')->item(0)->nodeValue ?> |
Wat voor optimalisatie voert zo'n class dan uitquote:Op dinsdag 2 december 2008 20:02 schreef Chandler het volgende:
GlowMouse melde mij dat het in mijn geval voor het optimaliseren van een database zeer handig is om te werken met database classes!
Caching?quote:Op dinsdag 2 december 2008 21:40 schreef Roy_T het volgende:
[..]
Wat voor optimalisatie voert zo'n class dan uit
Een databaseklasse maakt het bijvoorbeeld makkelijk om dmv transacties een aantal queries te verzamelen en gezamelijk uit te voeren, waardoor je je database efficiënter kunt gebruiken. Dat is althans wat er in de documentatie van PDO staat:quote:Op dinsdag 2 december 2008 21:40 schreef Roy_T het volgende:
[..]
Wat voor optimalisatie voert zo'n class dan uit
quote:Transactions are typically implemented by "saving-up" your batch of changes to be applied all at once; this has the nice side effect of drastically improving the efficiency of those updates. In other words, transactions can make your scripts faster and potentially more robust (you still need to use them correctly to reap that benefit).
Dat kan ja. En transacties zou ook kunnen (indien i.c.m. MySQL: niet op MyISAM tabellen). Maar er is geen gouden regel die zegt dat database classes dat "dus" kunnen en voor enige optimalisatie zorgen. Dat was eigenlijk ook het punt van mijn retorische vraag: het is maar net wat je erin bakt.quote:
Zelfs als ik niet in cakephp bezig ben gebruik ik classes om me databases aan te roepenquote:Op dinsdag 2 december 2008 22:58 schreef Roy_T het volgende:
Chandler, dan moet je dus wel specifiek zoeken naar een class die goede benchmarking info biedt. Niet iedere class is hier even sterk in. "Wie kent een database class?" komt neer op het zoeken naar een rode auto die binnen 8 seconden aan de 100 km/uur zit, en vervolgens bij een autohandelaar vragen of 'ie "een auto" te koop heeft staan
mysql_query() direct aanroepen, zijn er nog mensen die dat doen? Gebruikt nog niet iedereen (MVC-)frameworks en (ActiveRecord-achtige) database classes?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | error_reporting(E_ALL); class MySQL { // variables var $db; var $query; var $queryres; var $data; // statistics var $query_cnt; var $fetch_cnt; var $insert_cnt; var $result_cnt; var $num_rows_cnt; var $affected_rows_cnt; function connect($user, $pass, $database, $host = 'localhost', $error = 'Site kan geen verbinding maken met MySQL database in functie :: connect()') { // Connectie leggen $this->db = mysql_connect($host, $user, $pass ); // Kijken of de connectie gelukt is, en of de database geselecteerd kon worden if(!$this->db || !mysql_select_db($database, $this->db)) { $this->m_error("DB Connect", mysql_error()); die($error); } } function disconnect() { // $res legen if(!@mysql_free_result($this->queryres)) { unset($this->queryres); } // Verbinding sluiten mysql_close($this->db); } function run_query($sql, $noCache = false) { if ($noCache == true) { mysql_query($sql, $this->db); $this->query_cnt++; } else { $this->query = $sql; $this->queryres = mysql_query($sql, $this->db); $this->query_cnt++; } if (!$this->queryres && $noCache != true) { $this->m_error($this->query, mysql_error()); die('Error in query: <br /><strong>Query:</strong> <hr>' . $this->query . '<hr><strong>MySQL error:</strong> ' . mysql_error() . '<hr>'); } } function num_rows($sql = NULL) { if ($sql != NULL) { $this->query = $sql; $this->run_query($sql); $this->num_rows_cnt++; return mysql_num_rows($this->queryres); } elseif ($this->queryres && $this->query == $sql) { $this->num_rows_cnt++; return mysql_num_rows($this->queryres); } elseif ($this->query != $sql) { $this->query = $sql; $this->run_query($sql); $this->num_rows_cnt++; return mysql_num_rows($this->queryres); } else { $this->m_error($this->query, mysql_error()); die('Geen query uitgevoerd voor functie :: num_rows()'); } } function fetch_object($sql = NULL) { if ($this->queryres && $sql == NULL) { $this->fetch_cnt++; return mysql_fetch_object($this->queryres); } elseif($sql != NULL) { $this->query = $sql; $this->run_query($sql); $this->fetch_cnt++; return mysql_fetch_object($this->queryres); } else { $this->m_error($this->query, mysql_error()); die('geen query uitgevoerd voor functie :: fetch_object()'); } } function insert_id($sql = NULL) { // Kijken of er een query meegegeven is, zo ja uitvoeren if ($sql != NULL) { $this->run_query($sql); } elseif ($sql == NULL && !$this->queryres) { $this->m_error($sql, mysql_error()); die('Geen query uitgevoerd voor functie :: insert_id()'); } $this->insert_cnt++; // Mysql_insert_id uitspugen return mysql_insert_id($this->db); } function affected_rows($sql = NULL) { // Kijken of er een query meegegeven is, zo ja uitvoeren if ($sql != NULL) { $this->run_query($sql); } elseif ($sql == NULL && !$this->queryres) { die('Geen query uitgevoerd voor functie :: affected_rows()'); } $this->affected_rows_cnt++; // Mysql_insert_id uitspugen return mysql_affected_rows($this->db); } function result($row = 0, $sql = NULL, $noCache = false) { // Kijken of er een query meegegeven is, zo ja uitvoeren if ($sql != NULL) { if ($noCache != false) { $tmpres = mysql_query($sql, $this->db); $this->query_cnt++; } else { $this->run_query($sql); } } elseif ($sql == NULL && !$this->queryres) { $this->m_error($sql, mysql_error()); die('Geen query uitgevoerd voor functie :: result()'); } $this->result_cnt++; // Mysql_insert_id uitspugen if ($noCache != false) { $res = @mysql_result($tmpres, $row); } else { $res = @mysql_result($this->queryres, $row); } if ($res == null) { return "0"; } else { return $res; } } function m_error($string, $error) { $buf = "Error in MySQL\r\n -----------------------\r\n Query: -----------------------\r\n" . $string . "\r\n -----------------------\r\n Error: -----------------------\r\n" . $error . "\r\n -----------------------\r\n"; $fd = fopen("mysql_error.txt", "w+"); fputs($fd, $buf); fclose($fd); } function stats() { return array("queries" => (($this->query_cnt == 0) ? "0" : $this->query_cnt), "fetch" => (($this->fetch_cnt == 0) ? "0" : $this->fetch_cnt), "insert" => (($this->insert_cnt == 0) ? "0" : $this->insert_cnt), "result" => (($this->result_cnt == 0) ? "0" : $this->result_cnt), "num_rows" => (($this->num_rows_cnt == 0) ? "0" : $this->num_rows_cnt), "affected_rows" => (($this->affected_rows_cnt == 0) ? "0" : $this->affected_rows_cnt)); } } ?> |
Zelfde geld voor de functiesquote:Op woensdag 3 december 2008 11:52 schreef Spike1506 het volgende:
@Chandler Gebruik ipv var $var eens, private/proteced/public $var's enz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function customexplode($invoer) { $uitnr=0; $startpos=0; do { preg_match('/[^\',][^,\']*|\'([^\'\\\\]|\\\\.)*\'/', substr($invoer, $startpos), $matches, PREG_OFFSET_CAPTURE); if (count($matches)>0) { $t = $matches[0][0]; if (substr($t,0,1)=="'") $t=substr($t,1,strlen($t)-2); $uitvoer[$uitnr]=$t; $startpos += $matches[0][1] + strlen($matches[0][0]); $uitnr++; } } while (count($matches)>0); return $uitvoer; } ?> |
Mag ik vragen waarom? scheelt dit in preformance?quote:Op woensdag 3 december 2008 11:52 schreef Spike1506 het volgende:
@Chandler Gebruik ipv var $var eens, private/proteced/public $var's enz.
Zelfde vraag ;)quote:
1 2 3 4 5 6 7 8 | `stat_id` int(10) unsigned NOT NULL, `ip_id` int(10) unsigned NOT NULL, `referer_id` int(10) unsigned NOT NULL, `hits` int(10) unsigned NOT NULL, `lastdate` timestamp NULL default NULL, UNIQUE KEY `stat_id_2` (`stat_id`,`ip_id`,`referer_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
Het heeft o.a te maken met de toegankelijkheid van deze variablen/functies. Zie ook: Visibility @ PHP.net.quote:Op woensdag 3 december 2008 14:37 schreef Chandler het volgende:
[..]
Mag ik vragen waarom? scheelt dit in preformance?
[..]
Zelfde vraag
dit zou ik niet met regex doenquote:Op woensdag 3 december 2008 14:08 schreef Igen het volgende:
Stel, ik heb een aantal waarden die met komma's gescheiden zijn. Er kunnen ook strings bij zitten, die hebben dan aanhalingstekens eromheen. Bijvoorbeeld:
1,87932,'hoi, dit is een test','It\'s backslash (\\)',328,0
Nu wil ik die waarden van elkaar scheiden. Daarvoor heb ik de volgende functie gemaakt:
[ code verwijderd ]
Maar als ik die nu loslaat op een regel waarin een van de stukjes tekst tientallen kb's groot is, dan crasht PHP. Ik heb inmiddels begrepen dat dat met recursie in PCRE te maken heeft. Ik zit dus met de volgende vragen:
- Kan ik de maximale recursiediepte nu beperken naar een veilige waarde, of werkt de reguliere expressie dan niet meer goed?
- Kan je de reguliere expressie ook beter formuleren?
1 2 3 4 5 6 7 8 | function customexplode($invoer) { $return = array(); eval('$return = array(' . $invoer . ');'); return $return; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function customexplode($invoer) { $currentstring=''; $result = array(); foreach( explode(',', $invoer) as $token) { if ($token{0} == '\'' || $currentstring != '') { $currentstring .= ',' . $token; if (substr($currentstring, -1) == '\'' && substr($currentstring,-2) !='\\\'' ) { $result[] = substr($currentstring, 2, -1); $currentstring=''; } } else $result[]=$token; } if ($currentstring !='') $result[]=substr($currentstring,2,-1); return $result; } ?> |
Waarom gebruik je niet de native CSV parse functies in PHP? fgetcsv() bijvoorbeeld.quote:Op woensdag 3 december 2008 14:08 schreef Igen het volgende:
Stel, ik heb een aantal waarden die met komma's gescheiden zijn. Er kunnen ook strings bij zitten, die hebben dan aanhalingstekens eromheen. Bijvoorbeeld:
1,87932,'hoi, dit is een test','It\'s backslash (\\)',328,0
Nu wil ik die waarden van elkaar scheiden.
Ik gok dat die functie zich verslikt in iets als 123,'hoi\\',456.quote:Op woensdag 3 december 2008 17:38 schreef ralfie het volgende:
[..]
Mooiere oplossing (ook zonder regex)
[ code verwijderd ]
(niet getest overigens, maar zou zo volgens mij wel moeten werken)
Omdat fgetcsv() alleen op bestanden werkt, en str_getcsv() nog niet in een stabiele versie van PHP beschikbaar is.quote:Op woensdag 3 december 2008 21:42 schreef Roy_T het volgende:
[..]
Waarom gebruik je niet de native CSV parse functies in PHP? fgetcsv() bijvoorbeeld.
als het alleen om een paar bullets in een sidebar gaat zou ik het gewoon met de hand doen...quote:Op donderdag 4 december 2008 13:11 schreef hello_moto1992 het volgende:
Ik heb een sidebarretje gemaakt waarin agendapunten komen te staan. Nou wil ik daar steeds de tekst van aan passen, maar dan moet ik steeds weer in de broncode gaan prutsen. Is hier niet een andere oplossing voor? Dat ik in een formuliertje alles kan invullen ofzo?
Iemand aanbevelingen?
En wat staat er precies in document.php?quote:Op vrijdag 5 december 2008 23:46 schreef immortals het volgende:
Dit is m'n error ik heb een bestandje: document.php en slaag het op onder htdocs en dan ga ik naar m'n browser en vul in : localhost/document.php en krijg dit!!
Warning: Unexpected character in input: '' (ASCII=92) state=1 in C:\xampp\htdocs\Document.php on line 2
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\Document.php on line 2
quote:Op vrijdag 5 december 2008 23:57 schreef Kerol het volgende:
Je moet " en niet '
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
quote:Op zaterdag 6 december 2008 00:01 schreef mschol het volgende:
[..](maar mag wel)
@TS: lees de php.net echo() functie eens doorecho is geen functie maar een language construct. Je hoeft dus geen () te gebruiken.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Dat ziet er gewoon goed uit, dus ik snap die foutmelding niet.quote:Op vrijdag 5 december 2008 23:52 schreef immortals het volgende:
dit om precies te zijn
<?php
echo 'Hallo wereld!';
?>
1 2 3 | echo 'Hallo wereld!'; ?> |
het hoeft niet, het mag wel (wiskunde...)quote:Op zaterdag 6 december 2008 00:08 schreef Light het volgende:
[..]
echo is geen functie maar een language construct. Je hoeft dus geen () te gebruiken.
Ik heb ook niet gezegd dat het fout is om () te gebruiken. Het is net als met '' en "", beide zijn goed (hoewel er wel een verschil is tussen '' en ""). Mijn punt is gewoon dat je niet moet zeuren over '' en "" of over wel of geen () als het niet relevant is. En dat is het in dit geval niet.quote:Op zaterdag 6 december 2008 07:54 schreef MCootje het volgende:
[..]
het hoeft niet, het mag wel (wiskunde...)
omdat het dus wel mag/kan, is het netter om het wel te doen (omdat het veel weg heeft van een functie)
ook als je opeens de echo wilt veranderen door een functie, is het handig want dan staan de haakjes er alvast
denk hierbij aan een echo die je wilt (tijdelijk) even als var_dump wilt hebben
daarnaast is het in de meeste gevallen overzichtelijker als je ze wel gebruikt
het is maar wat je gewend bent, ik doe het wel om deze redenen
mvg
Marco
1 2 3 4 5 6 7 8 9 | $som=0; for ( $getal =2; $getal <= 2048; $getal*2) { $som = $som + $getal; echo "Getal:$getal"; } echo "De som is $som"; ?> |
quote:Op zaterdag 6 december 2008 11:56 schreef Kerol het volgende:
Ik wil graag mijn FOR loop elke keer een stap van *2 laten nemen. Het lukt nu nog niet echt. Hoe kan ik dit het beste doen?
Tot nu toe heb ik dit;
[ code verwijderd ]
Als ik dit in mijn localhost bekijk krijg ik een pagina die tot in het oneindige $Getal: 2 echo'ed.
1 2 3 4 5 6 7 8 9 | $som=0; for ( $getal =2; $getal <= 2048; $getal*=2) { $som = $som + $getal; echo "Getal:$getal"; } echo "De som is $som"; ?> |
Je kunt beginnen met php leren. Als je met je knie op een of ander boek gaat liggen dan heb je dat wel onder de knie, maar je hebt nog steeds geen idee wat erin staat enzo.quote:Op zaterdag 6 december 2008 13:20 schreef immortals het volgende:
Ik heb php nu onder de knie maar hoe kan ik nu beginnen ?
tips pls!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | // By product code $result = $db->query('SELECT id, product_code, product_code2 FROM product_feed_items WHERE (LENGTH(product_code) > 4 OR LENGTH(product_code2) > 4)'); while($item = $result->fetchRow()) { // by product codes $s = array(' ','-','/'); $search_q = ''; if ($this->realstrlen($item->product_code) > 4) { if (is_numeric(trim($item->product_code))) { $code = trim($item->product_code); $search_q .= 'product_code = "'.$code.'" OR product_code2 = "'.$code.'" '; } else { $code = str_replace($s,'*',$item->product_code).'*'; $search_q .= 'MATCH(product_code, product_code2) AGAINST("'.$code.'")'; } } if ($this->realstrlen($item->product_code2) > 4) { if ($search_q != '') $search_q .= ' OR '; if (is_numeric($item->product_code2)) { $code2 = $item->product_code2; $search_q .= 'product_code = "'.$code2.'" OR product_code2 = "'.$code2.'" '; } else { $code2 = str_replace($s,'*',$item->product_code2).'*'; $search_q .= 'MATCH(product_code, product_code2) AGAINST("'.$code2.'")'; } } $r = $db->query('UPDATE product_feed_items SET parent_product = "'.$item->id.'" WHERE ('.trim($search_q).') AND id != "'.$item->id.'"'); if ($r->numRows() > 0) { $db->query('UPDATE product_feed_items SET parent_product = 0 WHERE id = ?', $item->id); } } ?> |
De extra ruimte die een index inneemt, weegt niet op tegen de voordelen van een goedgeplaatste index. Als je 1.000.000 ongesorteerde dingen wilt doorzoeken, kost dat gemiddeld 500.000 pogingen bij iets dat er wel in staat, en altijd 1.000.000 als de zoekterm niet gevonden kan worden. Een goede index kan dat terugbrengen tot maximaal 20 zoekacties (bij 1.000.000 elementen) om aan te geven of de zoekterm voorkomt (en zo ja waar).quote:Op zaterdag 6 december 2008 17:28 schreef kloontje_de_reuzekloon het volgende:
zou kunnen schelen bij je queries, maar met 1.000.000 records vreet dat ook ruimte
Da's lastig te zeggen. Probeer eens een explain van de queries te doen (in PHPMyAdmin)quote:Op zaterdag 6 december 2008 17:59 schreef wipes66 het volgende:
Ik een index genaamd 'product_code' op product_code en product_code2. Dit moet toch voldoende zijn? (dit is overigens sowieso noodzakelijk voor fulltext search)
15 seconden voor het doorzoeken van 100 producten is wel traag ja.quote:Ik heb het eff gemeten en het duurt 15 seconden om 100 producten te doorzoeken. Dus dat ongeveer 6 per seconden![]()
doe gewoon ditquote:Op zondag 7 december 2008 11:20 schreef MrDoegewoon het volgende:
Oke. Iemand heeft me ooit verteld dat die twee met elkaar te maken hadden, dus zat weer is in de totaal verkeerde hoek te zoeken voor een oplossing
.
Maar ik weet denk wel een andere oplossing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | If (isset($_POST['login'])){ //controleer login met de database //indien ok header("location:path/naar/waar/je/naartoe/wil"); } ?> <html> <head> <title>de html</title> </head> <body> <form action="<?=$_SERVER['PHP_SELF'];?>"> <input type="text" id="login"> </form> </body> </html> |
1 2 3 4 | //fok geeft de symbolen hier niet goed weer, is allemaal extended ascii $bbcode = str_replace(array('’','“','â€',':','.','⤽','⤝','⤙'),array('\'','"','"',':','.','"','"','\''),$bbcode); ?> |
ok, dank je, dat werkt (wel eerder geprobeerd, maar nooit met "utf-8" als derde parameter) alleen nu doet ie het iets te goed; hij converteerd namelijk ook wat html (> wordt >) wat dan weer net niet moet. Mis ik een optie?quote:
Je denkt toch niet dat wij het gaan maken voor je?quote:Op zondag 7 december 2008 18:23 schreef immortals het volgende:
HET MOET VAN SCHOOL!!
Ik moet een dynamische pagina namaken!!
Er zijn vrienden van mij een nieuwe rs aan het maken!!
Ik denk dat ik een 9 haal als ik mw namaak!
Minder is niet goed want op m'nvorig werk was ik gebuisd!!
Iemand die hier een idee over heeft?quote:Op woensdag 3 december 2008 14:37 schreef Chandler het volgende:
Ik heb een tabel waar ik referers van gebruikers in opsla
1
2
3
4
5
6
7
8CREATE TABLE `stats_ip_referers` (
`stat_id` int(10) unsigned NOT NULL,
`ip_id` int(10) unsigned NOT NULL,
`referer_id` int(10) unsigned NOT NULL,
`hits` int(10) unsigned NOT NULL,
`lastdate` timestamp NULL default NULL,
UNIQUE KEY `stat_id_2` (`stat_id`,`ip_id`,`referer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Nu heb ik reeds 115K aan referers in deze tabel staan maar wil graag filteren wat de EXIT pagina's zijn (dus de laatste pagina waarop de gebruiker heeft gezeten). Hoe kan ik dit het beste aanpakken? heb er zelf al 2 uur mee zitten spelen maar het wil gewoon domweg niet lukken
Je slaat de pagina op die de gebruiker bezoekt. Iedere keer update je die als de tijd sinds het laatste bezoek <1 uur is.quote:Op maandag 8 december 2008 10:42 schreef Chandler het volgende:
[..]
Iemand die hier een idee over heeft?
multiviews of modrewritequote:Op maandag 8 december 2008 21:04 schreef markiemark het volgende:
ok, nu komt er misschien wel een hele domme vraag... ik wil op mijn apache server met php instellen dat ik geen index.php?article_id=123 meer doe maar domein.nl/articles/123
ik heb geen idee waar ik naar moet zoeken op google.. wie helpt me verder?
heb volgens mij al een goede tutorial gevonden na je post, thanks!quote:
Ok, ik snap het idee, dus moet ik hiervoor een cronjob schrijven!quote:Op maandag 8 december 2008 11:15 schreef PiRANiA het volgende:
[..]
Je slaat de pagina op die de gebruiker bezoekt. Iedere keer update je die als de tijd sinds het laatste bezoek <1 uur is.
De records die dan in je database een uur of ouder zijn zijn de exitpagina's
no problemo. En over je andere vraag:quote:Op dinsdag 9 december 2008 09:35 schreef Chandler het volgende:
[..]
Ok, ik snap het idee, dus moet ik hiervoor een cronjob schrijven!
Tnx!
Een andere vraag, is het mogelijk om middels MySQL een unieke code te genereren? met karakters a-zA-Z0-9?
Gebruik dit eens:quote:Op dinsdag 9 december 2008 09:35 schreef Chandler het volgende:
[..]
Ok, ik snap het idee, dus moet ik hiervoor een cronjob schrijven! :)
Tnx!
Een andere vraag, is het mogelijk om middels MySQL een unieke code te genereren? met karakters a-zA-Z0-9?
1 |
Met MySQL ga je niet verder komen dan een auto_increment op een kolom met type INT. In andere databases heb je de mogelijkheid tot het maken van eigen SEQUENCEs, zodat je dit soort dingen kunt toepassen.quote:Op dinsdag 9 december 2008 09:35 schreef Chandler het volgende:
[..]
Ok, ik snap het idee, dus moet ik hiervoor een cronjob schrijven!
Tnx!
Een andere vraag, is het mogelijk om middels MySQL een unieke code te genereren? met karakters a-zA-Z0-9?
Een md5(microtime()) zou nog unieker moeten zijn, aangezien een microtime() iedere 1000ste van een seconde anders is. Of in MySQL: http://dev.mysql.com/doc/(...)s.html#function_uuidquote:Op dinsdag 9 december 2008 11:33 schreef JortK het volgende:
Wanneer je van een random een md5() trekt is de kans dat die uniek is toch 99,99% ?
Zowel random als MD5 zijn niet uniek, al is de kans op dubbelen wel erg klein. Maar MD5 is niet a-zA-Z0-9 zoals Chandler vroeg, maar a-f0-9.quote:Op dinsdag 9 december 2008 11:33 schreef JortK het volgende:
Wanneer je van een random een md5() trekt is de kans dat die uniek is toch 99,99% ?
Een MD5 van de microtime() is juist minder uniek. De microtime is niet uniek en de MD5 is zelf ook niet uniek: het samenvoegen van 2 niet unieke dingen maakt het dus nog minder uniek en een grotere kans op dubbele waarden.quote:Op dinsdag 9 december 2008 11:37 schreef Roy_T het volgende:
[..]
Een md5(microtime()) zou nog unieker moeten zijn, aangezien een microtime() iedere 1000ste van een seconde anders is. Of in MySQL: http://dev.mysql.com/doc/(...)s.html#function_uuid
Met die 99.99 ben je er niet. Als je 1000 getallen maakt heb je al 10% kans op tenminste één duplicaat. Uuid is wat je nodig hebt (of althans kunt gebruiken voor wat je net beschreef).quote:Op dinsdag 9 december 2008 11:33 schreef JortK het volgende:
Wanneer je van een random een md5() trekt is de kans dat die uniek is toch 99,99% ?
UUID is net zoiets als new_id() in MSSQL?quote:Op dinsdag 9 december 2008 12:08 schreef GlowMouse het volgende:
[..]
Met die 99.99 ben je er niet. Als je 1000 getallen maakt heb je al 10% kans op tenminste één duplicaat. Uuid is wat je nodig hebt (of althans kunt gebruiken voor wat je net beschreef).
interessant.. ik wist niet eens dat het kon.. Kun je die dmv ajax/js aanroepen een daarmee een progress bar vullen oid?quote:Op dinsdag 9 december 2008 14:31 schreef Tuvai.net het volgende:
Hmm, me is confused. Zojuist PHP 5.2.6 (meest recente distributie waar PECL in zit) voor Windows gedownload, de php_uploadprogress.dll geladen die daar bij zat en ook die is volgens phpinfo() versie 0.3.1-dev.
Wil dit zeggen dat de meest recente versie van uploadprogress niet beschikbaar is voor Windows?
Die is er wel, echter werkt het alleen met PHP 5.2 of hogerquote:Op dinsdag 9 december 2008 14:49 schreef HuHu het volgende:
Een progressbar functionaliteit voor uploads heb je niet in PHP
quote:Op dinsdag 9 december 2008 14:43 schreef markiemark het volgende:
[..]
interessant.. ik wist niet eens dat het kon.. Kun je die dmv ajax/js aanroepen een daarmee een progress bar vullen oid?
Het is meestal een combinatie van PHP, AJAX / jQuery / JSON. Wat de uploadprogress extensie doet is puur naar een bestand kijken dat momenteel geupload wordt, en checken hoe veel packages reeds al verzonden zijn naar de server. Draai daar constant een AJAX / jQuery verzoekje naar dat deze aantallen ophaalt en vergelijkt met totalen en je bent al heel snel en eenvoudig in staat om een progress bar te maken.quote:Op dinsdag 9 december 2008 14:49 schreef HuHu het volgende:
Een progressbar functionaliteit voor uploads heb je niet in PHP, dat is alleen goed beschikbaar met CGI scripts in bijvoorbeeld Perl. Je zou eens kunnen kijken naar de uber uploader: http://uber-uploader.sourceforge.net/
Hoe is microtime() minder uniek dan rand()? Is er bij rand() niet immens veel meer kans op eenzelfde random nummer dan dat het aantal microseconden wat verstreken is sinds de epoch nog eens terugkeertquote:Op dinsdag 9 december 2008 11:42 schreef HuHu het volgende:
Een MD5 van de microtime() is juist minder uniek. De microtime is niet uniek en de MD5 is zelf ook niet uniek: het samenvoegen van 2 niet unieke dingen maakt het dus nog minder uniek en een grotere kans op dubbele waarden.
Ik heb de PECL extensie uploadprogress-beta op m'n Linux server staan en het lijkt allemaal wel te werken, maar het voelt vind ik ook een beetje brak aan allemaal. Er zijn genoeg andere scripts beschikbaar die niet afhangen van PHP 5.2+ en niet in beta zijn, die bovendien meerdere uploads tegelijk kunnen tracken (dat kan met deze methode niet als ik het goed begrijp).quote:Op dinsdag 9 december 2008 15:11 schreef Tuvai.net het volgende:
[..]
Iemand aanwezig met een Linux server die deze extensie eens wilt proberen?
Wat is dit dan?quote:Op dinsdag 9 december 2008 16:01 schreef Tuvai.net het volgende:
En Tijn, je kunt er dus wel degelijk meerdere bestanden tegenlijk mee monitoren; gewoon een kwestie om een unieke identifier aan elk bestand mee te geven.
bron: http://nl3.php.net/manual(...).php#ini.apc.rfc1867quote:Note that the file upload tracking is not threadsafe at this point, so new uploads that happen while a previous one is still going will disable the tracking for the previous.
Ik zeg niet dat microtime() minder uniek is dan rand(), ik heb het in z'n geheel niet over rand(). Je zegt alleen dat je het volgende doet: md5(microtime()). Daarop zeg ik: die twee functies samen maken het minder uniek [dan alleen microtime()]. Want zowel microtime() als md5() zijn niet uniek en door ze samen te voegen verhoog (in theorie) je de kans op een dubbele waarde.quote:Op dinsdag 9 december 2008 15:28 schreef Roy_T het volgende:
[..]
Hoe is microtime() minder uniek dan rand()? Is er bij rand() niet immens veel meer kans op eenzelfde random nummer dan dat het aantal microseconden wat verstreken is sinds de epoch nog eens terugkeertWat zie ik over het hoofd?
Je bent bij APC aan 't kijken, da's weer een heel andere package.quote:Op dinsdag 9 december 2008 16:04 schreef Tijn het volgende:
[..]
Wat is dit dan?
[..]
bron: http://nl3.php.net/manual(...).php#ini.apc.rfc1867
Gebruikt dat PECL package niet dezelfde hooks?quote:Op dinsdag 9 december 2008 16:20 schreef Tuvai.net het volgende:
[..]
Je bent bij APC aan 't kijken, da's weer een heel andere package.
Schijnbaar niet; ze worden immers als twee compleet andere packages aangeboden. De uploadprogress extensie vergt in feite een HTML formulier waar je een unieke identifier meestuurt, aan de hand van deze identifier maakt PHP een tekstbestandje aan in de tmp map en leest de functie uploadprogress_get_info() dit tekstbestandje als een array uit. Meerdere bestanden en zelfs meerdere gebruikers tegenlijk is dus geen probleem zo lang je maar zorgt dat je unieke identifiers gebruikt.quote:Op dinsdag 9 december 2008 16:24 schreef Tijn het volgende:
[..]
Gebruikt dat PECL package niet dezelfde hooks?
Apart dat de PECL-methode dan toch PHP 5.2 nodig heeft.quote:Op dinsdag 9 december 2008 16:28 schreef Tuvai.net het volgende:
[..]
Schijnbaar niet; ze worden immers als twee compleet andere packages aangeboden. De uploadprogress extensie vergt in feite een HTML formulier waar je een unieke identifier meestuurt, aan de hand van deze identifier maakt PHP een tekstbestandje aan in de tmp map en leest de functie uploadprogress_get_info() dit tekstbestandje als een array uit. Meerdere bestanden en zelfs meerdere gebruikers tegenlijk is dus geen probleem zo lang je maar zorgt dat je unieke identifiers gebruikt.
Nee, dat zei ik niet. Ik citeerde iemand die het over het hashen van een random string (d.m.v. rand() of anderszins) had, waarop ik aangaf dat ik dan liever microtime() zou hashen.quote:Op dinsdag 9 december 2008 16:14 schreef HuHu het volgende:
Ik zeg niet dat microtime() minder uniek is dan rand(), ik heb het in z'n geheel niet over rand(). Je zegt alleen dat je het volgende doet: md5(microtime()). Daarop zeg ik: die twee functies samen maken het minder uniek [dan alleen microtime()].
In theorie misschien, maar meestal gaat het mis bij wat er gehashed wordt (een niet te unieke string). microtime() zou dan, in theorie, meer random moeten zijn dan een random getal.quote:Want zowel microtime() als md5() zijn niet uniek en door ze samen te voegen verhoog (in theorie) je de kans op een dubbele waarde.
Hangt dat niet van de lengte van de string af? Het lijkt me dat hoe langer de string, hoe groter de kans, vanwege het Pigeonhole principle. Of begrijp ik het dan verkeerd?quote:Op dinsdag 9 december 2008 16:53 schreef Roy_T het volgende:
[..]
Hoe groot is de kans dat md5() voor verschillende strings een zelfde hash terug geeft?
Elk hokje is een mogelijke uitkomst, en aangezien de output een vaste lengte heeft, is de grootte van de input niet van belang voor het aantal hokjes. Wel weet je dat als je input altijd uit 20 bits bestaat, het aantal mogelijke uitkomsten beperkt is, dus in die zin hangt het wel van de lengte af.quote:Op dinsdag 9 december 2008 16:59 schreef Tijn het volgende:
[..]
Hangt dat niet van de lengte van de string af? Het lijkt me dat hoe langer de string, hoe groter de kans, vanwege het Pigeonhole principle. Of begrijp ik het dan verkeerd?
leg uitquote:Op dinsdag 9 december 2008 21:20 schreef GlowMouse het volgende:
Kijk maar eens of je via php.ini of .htaccess de error_reporting en display_errors kunt veranderen. Er zit namelijk wel een fout in je script.
Je zou kunnen proberen om dit bovenaan je script te zetten:quote:
1 2 3 | error_reporting(E_ALL); ?> |
1 2 3 | echo 'Bruto: '.$bruto.'<br>Netto: '.$netto.'<br>Aantal: '.$aantal'; ?> |
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 | <strong>Een klant toevoegen</strong> <br/> <form method="post" action="opdracht2.php"> Naam: <input type="text" name="Naam"/> <br/> Kamernr <input type="text" name="Kamernummer"/> <br/> Telefoon <input type="text" name="Telefoon"/> <br/> Vak <input type="text" name="Vak"/> <br/> <input type="submit" name="submit" value="Voeg Toe!"/> </form> echo "<table border=solid>"; echo "<th>Alle docenten</th>"; echo "<tr><td><strong>Naam</strong></td>"; echo "<td> <strong>Kamernummer</strong> </td>"; echo "<td> <strong>Telefoon</strong> </td>"; echo "<td> <strong>Vak</strong> </td></tr>"; function VoegToe() { echo '<tr><td>'.$_POST['naam'].'</td>'; echo '<td>'.$_POST['kamernummer'].'</td>'; echo '<td>'.$_POST['telefoon'].'</td>'; echo '<td>'.$_POST['vak'].'</td></tr>'; } if ($_POST['submit']); { VoegToe(); } ?> |
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 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>php opdracht 1</title> </head> <body> error_reporting(E_ALL); $aantal=25; $btw=0.89; $omzet=26000; $bruto=0; $netto=0; $prijs=4; if($omzet =< 25000) { $bruto = $omzet * $aantal; } elseif($omzet =<50000) { $bruto = 0.95 *($prijs * $aantal); }else{ 0.925*($prijs * $aantal); } $netto = ($bruto * 0.89); echo 'Bruto: '.$bruto.'<br>Netto: '.$netto.'<br>Aantal: '.$aantal'; </body> </html> ?> |
Dat helpt niet bij een parse errorquote:Op dinsdag 9 december 2008 21:29 schreef Tijn het volgende:
[..]
Je zou kunnen proberen om dit bovenaan je script te zetten:
[ code verwijderd ]
denk ik daar wel direct aan.quote:Resultaat:
Netto: '.$netto.'
Aantal: '.$aantal'; ?>
quote:Op dinsdag 9 december 2008 21:55 schreef GlowMouse het volgende:
Zie je nou PHP-code ertussen staan of niet? Want als ik dit zie:
[..]
denk ik daar wel direct aan.
Enig idee hoe ik dat zou kunnen doen?quote:Op dinsdag 9 december 2008 21:50 schreef GlowMouse het volgende:
Kerol: de tweede keer is geen verandering tov de eerste keer: hij toon weer exact wat je ingevoerd hebt voordat je op submit klikte. Wat je wilt is alle invoer (tijdelijk of permanent) opslaan, en wanneer de tweede keer ingevoerd wordt, eerst te tonen wat je had opgeslagen. En dan ook de tweede weer opslaan voor de derde keer, etc.
bruttoquote:Op dinsdag 9 december 2008 22:07 schreef GlowMouse het volgende:
Kijk eens goed welke strings je allemaal aan elkaar koppelt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // voeg nieuwe invoer toe aan $_SESSION['docenten'] if(isset($_SESSION['docenten'])) { $numsaved = count($_SESSION['docenten']); } else { $numsaved = 0; } $_SESSION['docenten'][$numsaved]['naam'] = $_POST['naam']; // etc // toon $_SESSION['docenten'] foreach($_SESSION['docenten'] as $docent) { echo $naam; // etc } ?> |
Ik zei strings, niet regels tekst. Jij pakt de string 'Bruto: ', koppelt die aan $bruto, koppelt dat weer aan '<br>Netto: ', koppelt dat weer aan $netto, koppelt dat weer aan '<br>Aantal: ' en koppelt dat weer aan $aantal'. En bij dat laatste gaat het fout: $aantal' is geen string.quote:Op dinsdag 9 december 2008 22:12 schreef cablegunmaster het volgende:
wat er staat : in mijn ogen : " geef bruto weer : $bruto display
(volgende regel) Geef netto weer : $netto display
(volgende regel) Geef Aantal weer: $aantal display
Op regel 27 van de code doe je een leuke berekening waar je vervolgens niets met het resultaat doet. Beetje zonde om processortijd op die manier te verspillenquote:Op dinsdag 9 december 2008 21:38 schreef cablegunmaster het volgende:
[ code verwijderd ]
Resultaat:
Netto: '.$netto.'
Aantal: '.$aantal'; ?>
Vind het nog een beetje dubieus. dat hij bruto niet pakt.
/* joh ik gebruik een quad hiervoorquote:Op dinsdag 9 december 2008 22:23 schreef Light het volgende:
[..]
Op regel 27 van de code doe je een leuke berekening waar je vervolgens niets met het resultaat doet. Beetje zonde om processortijd op die manier te verspillen
Ow, ik zie dat ik een verkeerd regelnummer opgaf. Ik bedoelde de regel metquote:Op dinsdag 9 december 2008 22:25 schreef cablegunmaster het volgende:
[..]
/* joh ik gebruik een quad hiervoor :D
daarnaast m'n opdracht af Dankje glowmouse */
:)
1 2 3 | }else{ 0.925*($prijs * $aantal); ?> |
die had ik verbeterdquote:Op dinsdag 9 december 2008 22:32 schreef Light het volgende:
[..]
Ow, ik zie dat ik een verkeerd regelnummer opgaf. Ik bedoelde de regel met
[ code verwijderd ]
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Redacted
quote:Op woensdag 10 december 2008 13:15 schreef slacker_nl het volgende:
/* grappig dat sommige hier forumposts als comments plaatsen */
1 2 3 4 5 6 | /*** * Best grappig, zou het nou een rage gaan worden? * Of is het gewoon een hype? **/ ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $getal1 = $_POST['getal1']; $getal2 = $_POST['getal2']; if (!is_numeric($getal1, $getal2)) { echo "Je hebt geen numerieke getallen ingevoerd."; } else { $uitkomst = $getal1 + $getal2; echo "$getal1 + $getal2 = $uitkomst"; } <br/> <a href="index.html">Nog eens optellen</a> ?> |
Omdat is_numeric() maar 1 parameter wil hebben, geen twee.quote:Op woensdag 10 december 2008 18:53 schreef Kerol het volgende:
[ code verwijderd ]
Waarom krijg ik deze error:
Warning: Wrong parameter count for is_numeric() in C:\xampp\htdocs\phpweek2\opdracht3\opdracht3.php on line 4?
Owja, en dat html binnen de PHP tags doet FOK! vanzelf ..![]()
Precies.quote:Op woensdag 10 december 2008 19:03 schreef Light het volgende:
[..]
Omdat is_numeric() maar 1 parameter wil hebben, geen twee.
1 2 3 4 5 6 7 | if (!is_numeric($getal1) || !is_numeric($getal2)) { echo "Je hebt geen numerieke getallen ingevoerd."; } else etc... ?> |
Je moet op regel 2 nog een ) toevoegen, anders krijg je een heel andere foutmelding op het schermquote:Op woensdag 10 december 2008 20:23 schreef Tijn het volgende:
[..]
Precies.
Kerol: om twee getallen te controleren, moet je er zoiets van maken:
[ code verwijderd ]
Als nu $getal1 niet numeriek is, of $getal2 niet numeriek (of allebei), komt de foutmelding op het scherm.
Het is dat Fok! zo traag is, anders had je dat niet eens kunnen zienquote:Op woensdag 10 december 2008 20:26 schreef Light het volgende:
[..]
Je moet op regel 2 nog een ) toevoegen, anders krijg je een heel andere foutmelding op het scherm
Had het zelf ook al gezien dus het leverde geen foutmeldingen opquote:Op woensdag 10 december 2008 20:26 schreef Light het volgende:
[..]
Je moet op regel 2 nog een ) toevoegen, anders krijg je een heel andere foutmelding op het scherm
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 | $getal1 = $_POST['getal1']; $getal2 = $_POST['getal2']; if (!is_numeric($getal1) || !is_numeric($getal2)) { echo "Je hebt geen numerieke getallen ingevoerd."; } else { if($_POST['reken1']=1) { $uitkomst = $getal1 + $getal2; echo "$getal1 + $getal2 = $uitkomst"; } if($_POST['reken2']=1) { $uitkomst= $getal1 - $getal2; echo "$getal1 - $getal2 = $uitkomst"; } if($_POST['reken3']=1) { $uitkomst = $getal1 / $getal2; echo "$getal1 / $getal2 = $uitkomst"; } if($_POST['reken4']=1); { $uitkomst = $getal1 * $getal2; echo "$getal * $getal = $uitkomst"; } } <br/> <a href="index.html">Nog eens de rekenmachine gebruiken!</a> ?> |
Omdat dit altijd waar is:quote:Op woensdag 10 december 2008 21:02 schreef Kerol het volgende:
[ code verwijderd ]
Waarom krijg ik nu ALLE antwoorden? (Dus */+ en -) Ik heb bijvoorbeeld alleen Optellen aangekruist bij mijn aankruisvakjes en nog drukt hij alles af.
1 2 3 | if($_POST['reken1']=1) ?> |
1 2 3 | if($_POST['reken1'] == 1) ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <head> </head> <body> <form method="post" action="opdracht4.php"> <input type="text" name="getal1"/> <br/> <input type="text" name="getal2"/> <br/> <input type="radio" name="reken1"/>Optellen (+) <input type="radio" name="reken2"/>Aftrekken (-) <input type="radio" name="reken3"/>Delen (/) <input type="radio" name="reken4"/>Vermenigvuldigen (*) <br/> <input type="reset" name="reset" value="Verwijder!"/> <input type="submit" name="submit" value="Bereken!"/> <br/> </form> </body> </html> |
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 | $getal1 = $_POST['getal1']; $getal2 = $_POST['getal2']; if (!is_numeric($getal1) || !is_numeric($getal2)) { echo "Je hebt geen numerieke getallen ingevoerd."; } else { if($_POST['reken1'] ==1) { $uitkomst = $getal1 + $getal2; echo "$getal1 + $getal2 = $uitkomst"; } if($_POST['reken2'] ==1) { $uitkomst= $getal1 - $getal2; echo "$getal1 - $getal2 = $uitkomst"; } if($_POST['reken3'] ==1) { $uitkomst = $getal1 / $getal2; echo "$getal1 / $getal2 = $uitkomst"; } if($_POST['reken4'] ==1) { $uitkomst = $getal1 * $getal2; echo "$getal * $getal = $uitkomst"; } } <br/> <a href="index.html">Nog eens de rekenmachine gebruiken!</a> ?> |
1 2 3 4 5 6 | <a href="index.html">Nog eens de rekenmachine gebruiken!</a> /* staat zonder echo tag */ <?php echo ('<br/><ahref="index.html">Nog eens de rekenmachiene gebruiken!</a>') ?> |
Je moet na die laatste curly bracket wel een ?> neer zetten. Dat sowieso.quote:Op woensdag 10 december 2008 21:21 schreef Kerol het volgende:
Waarom zou je in vredesnaam een echo voor een href gebruiken, cablegunmaster. Die tekst komt sowieso al in beeld omdat het een link is. En ja, het klopt dat je alleen 'Nog eens de rekenmachiene gebruiken!' ziet, maar het probleem is dat ik geen berekening en antwoord van de ingevoerde getallen krijg!
Done, roep een login functie aan als ISSET($_POST[slogin])quote:Op zondag 7 december 2008 11:25 schreef Swetsenegger het volgende:
[..]
doe gewoon dit
[ code verwijderd ]
Op die manier vind de verwerking van je login altijd plaats voordat er data naar de browser is gestuurd.
Simpele regel is eigenlijk dat header altijd VOOR <html> moet staan in je source
1 2 3 | $totosession[login] = 'ok'; $totosession[user] = stripslashes($username); |
Mja, dat heb ik maar om een of andere reden zet FOK! hem ergens anders neerquote:Op woensdag 10 december 2008 21:25 schreef Swetsenegger het volgende:
[..]
Je moet na die laatste curly bracket wel een ?> neer zetten. Dat sowieso.
ff tussen code tags zetten ipv phpquote:Op woensdag 10 december 2008 21:26 schreef Kerol het volgende:
[..]
Mja, dat heb ik maar om een of andere reden zet FOK! hem ergens anders neer
Is dit wat je bedoelt?quote:Op woensdag 10 december 2008 21:22 schreef Tijn het volgende:
Misschien is het handig als je in je formuliertje de radiobuttons niet alleen een naam maar ook een waarde geeft. Als je ze dan allevier dezelfde naam geeft, kun je maar 1 optie selecteren. In je PHP-code kun je dan de waarde van deze ene naam vergelijken en zo de juiste actie uitvoeren.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <head> </head> <body> <form method="post" action="opdracht4.php"> <input type="text" name="getal1"/> <br/> <input type="text" name="getal2"/> <br/> <input type="radio" name="reken" value="reken1"/>Optellen (+) <input type="radio" name="reken" value="reken2"/>Aftrekken (-) <input type="radio" name="reken" value="reken3"/>Delen (/) <input type="radio" name="reken" value="reken4"/>Vermenigvuldigen (*) <br/> <input type="reset" name="reset" value="Verwijder!"/> <input type="submit" name="submit" value="Bereken!"/> <br/> </form> </body> </html> |
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 | $getal1 = $_POST['getal1']; $getal2 = $_POST['getal2']; if (!is_numeric($getal1) || !is_numeric($getal2)) { echo "Je hebt geen numerieke getallen ingevoerd."; } else { if($_POST['reken1'] ==1) { $uitkomst = $getal1 + $getal2; echo "$getal1 + $getal2 = $uitkomst"; } if($_POST['reken2'] ==1) { $uitkomst= $getal1 - $getal2; echo "$getal1 - $getal2 = $uitkomst"; } if($_POST['reken3'] ==1) { $uitkomst = $getal1 / $getal2; echo "$getal1 / $getal2 = $uitkomst"; } if($_POST['reken4'] ==1) { $uitkomst = $getal1 * $getal2; echo "$getal * $getal = $uitkomst"; } } ?> |
1 2 | <a href="index.html">Nog eens de rekenmachine gebruiken!</a> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |