1 | ALTER TABLE table MODIFY field bigint(20) unsigned NOT NULL default '0'; |
1 2 3 4 5 6 7 | use Some::Package; my $pkg = Some::Package->new(); ok($pkg, "Package created"); ok($pkg->can("do_something"), "Kan iets doen"); ok($pkg->do_something, "Deed iets"); |
PHP Unit?quote:Op zondag 9 februari 2014 14:16 schreef slacker_nl het volgende:
Heeft PHP een test framework? As in, psuedo code:
[ code verwijderd ]
PHP unit, werkt vrij goed met PHPStormquote:Op zondag 9 februari 2014 14:16 schreef slacker_nl het volgende:
Heeft PHP een test framework? As in, psuedo code:
[ code verwijderd ]
curl?quote:Op maandag 10 februari 2014 11:26 schreef Laser. het volgende:
Is er naast "file_get_contents" een andere (makkelijke) manier om data van een ander domein te krijgen in een PHP variabel?
Voorbeeld:
Ik heb domein A.nl en B.com. Dit zijn verschillende websites. Op A.nl staat ergens een versienummer. Deze versienummer kan ik op een lege HTML pagina zetten of in een tekstbestand. Deze versienummer wil ik dan op B.com gebruiken in een variabel, zodat ik de versienummer overal waar ik wil op B.com kan laten weergeven.
De reden van mijn vraag is omdat bij mij file_get_contents zo nu en dan zeer traag werkt. Zo kan ik soms een hele pagina niet laden, of in ieder geval met veel moeite. Mocht er geen alternatief zijn, is er dan een mogelijkheid om een soort van timer op de file_get_contents te zetten? Dus dat het script een x aantal seconden probeert en als het dan niet lukt een melding te laten weergeven?
Dat ligt niet aan de functie maar aan de verbinding, dan gaat een andere functie dus ook niet werken.quote:Op maandag 10 februari 2014 11:26 schreef Laser. het volgende:
De reden van mijn vraag is omdat bij mij file_get_contents zo nu en dan zeer traag werkt. Zo kan ik soms een hele pagina niet laden, of in ieder geval met veel moeite.
Ik zou requests naar een externe host sowieso altijd (indien mogelijk) asynchroon afhandelen. Gewoon in een cronjob aanroepen en de resultaten bufferen in je eigen database.quote:Op maandag 10 februari 2014 12:34 schreef Devolution het volgende:
Of als het niet per se server-side hoeft te zijn, met Javascript/Ajax? Javascript heeft verschillende mogelijkheden voor timeouts en dergelijke, PHP is daar wat beperkter in. Bovendien kun je, als je het via Javascript doet, ook asynchroon opvragen zodat de rest van de pagina ondertussen kan laden.
Dit dus.quote:Op maandag 10 februari 2014 12:51 schreef KomtTijd... het volgende:
[..]
Ik zou requests naar een externe host sowieso altijd (indien mogelijk) asynchroon afhandelen. Gewoon in een cronjob aanroepen en de resultaten bufferen in je eigen database.
Ik gebruik vimquote:Op zondag 9 februari 2014 17:28 schreef Crutch het volgende:
[..]
PHP unit, werkt vrij goed met PHPStorm
Ik kan me echt geen enkele reden voorstellen waarom je uit eigen keuze vim gebruikt?quote:Op dinsdag 11 februari 2014 07:59 schreef slacker_nl het volgende:
[..]
Ik gebruik vim
Maar bedankt voor de antwoorden, ik zal eens kijken of ik zin heb om m'n PHP meuk ook testbaar te maken.
Ik ook niet, maar ben wel benieuwd.quote:Op dinsdag 11 februari 2014 17:56 schreef TwenteFC het volgende:
[..]
Ik kan me echt geen enkele reden voorstellen waarom je uit eigen keuze vim gebruikt?
PHPUnit is ook gewoon command-line te gebruikenquote:Op dinsdag 11 februari 2014 07:59 schreef slacker_nl het volgende:
[..]
Ik gebruik vim
Maar bedankt voor de antwoorden, ik zal eens kijken of ik zin heb om m'n PHP meuk ook testbaar te maken.
Gaan we een editor war beginnen? Maar ik kan met vim overal hetzelfde doen, of ik nou remote werk of lokaal, het ziet er altijd hetzelfde uit en ik werk er al jaren mee en doe er vanalles mee, van code kloppen tot brieven schrijven. Ik ben er erg blij mee.quote:Op dinsdag 11 februari 2014 20:50 schreef henrivo het volgende:
[..]
Ik ook niet, maar ben wel benieuwd.
Heb er vorig jaar een start mee gemaakt, stijle leercurve maar als je erin zit werkt het als een tierelier. Hopelijk mag ik er binnenkort weer mee verderquote:Op woensdag 12 februari 2014 06:01 schreef henrivo het volgende:
Na ruim een half jaar ZF2 gebruikt te hebben overweeg ik nu dan tóch om Symfony2 eens te proberen. Iemand positieve ervaringen met Symfony2? Graag jullie mening
Ik heb 1 project met ZF2 gedaan en nu 1 project met Symfony2. Mijn voorkeur gaat uit naar Symfony2, maar nog te weinig mee gedaan om er echt een goed oordeel over te kunnen geven.quote:Op woensdag 12 februari 2014 06:01 schreef henrivo het volgende:
Na ruim een half jaar ZF2 gebruikt te hebben overweeg ik nu dan tóch om Symfony2 eens te proberen. Iemand positieve ervaringen met Symfony2? Graag jullie mening
Werkt erg prettig, maar voor kleine projecten is het vaak een dikke overkill. Voor kleine dingetjes gebruik ik toch liever iets als CodeIgniter.quote:Op woensdag 12 februari 2014 06:01 schreef henrivo het volgende:
Na ruim een half jaar ZF2 gebruikt te hebben overweeg ik nu dan tóch om Symfony2 eens te proberen. Iemand positieve ervaringen met Symfony2? Graag jullie mening
Hmm, wij gebruiken Netbeans op werk (vraag me niet waarom) zelf gebruik ik graag Notepad++ voor het kleine hobby werk, en omdat ik op werk veel in Netbeans doe doe ik dat thuis ook al snel bij projecten. Maar goed ik werk dan ook exclusief op Windows systemen atm.quote:Op woensdag 12 februari 2014 09:54 schreef slacker_nl het volgende:
[..]
Gaan we een editor war beginnen? Maar ik kan met vim overal hetzelfde doen, of ik nou remote werk of lokaal, het ziet er altijd hetzelfde uit en ik werk er al jaren mee en doe er vanalles mee, van code kloppen tot brieven schrijven. Ik ben er erg blij mee.
Editor war is nergens voor nodig, als jij er fijn en efficiënt mee werkt dan moet je het gewoon gebruiken natuurlijkquote:Op woensdag 12 februari 2014 09:54 schreef slacker_nl het volgende:
[..]
Gaan we een editor war beginnen? Maar ik kan met vim overal hetzelfde doen, of ik nou remote werk of lokaal, het ziet er altijd hetzelfde uit en ik werk er al jaren mee en doe er vanalles mee, van code kloppen tot brieven schrijven. Ik ben er erg blij mee.
Whut? Ik kon en kan me geen enkele reden bedenken waarom je vim prefereert boven een andere editor. Thats it, no big dealquote:Op woensdag 12 februari 2014 09:54 schreef slacker_nl het volgende:
[..]
Gaan we een editor war beginnen? Maar ik kan met vim overal hetzelfde doen, of ik nou remote werk of lokaal, het ziet er altijd hetzelfde uit en ik werk er al jaren mee en doe er vanalles mee, van code kloppen tot brieven schrijven. Ik ben er erg blij mee.
Wat zou een andere editor me moeten bieden? Overigens was mijn opmerking een grapje, want vim/emacs etc..quote:Op woensdag 12 februari 2014 19:44 schreef henrivo het volgende:
[..]
Whut? Ik kon en kan me geen enkele reden bedenken waarom je vim prefereert boven een andere editor. Thats it, no big deal
Probeer eens ctags te draaien, dat gebruik ik ook: in vim, op de functie staan, toets indrukken en hij wijst me naar de juiste functie (mits die in m'n huidige repo zit).quote:Op woensdag 12 februari 2014 17:39 schreef Devolution het volgende:
Ik gebruik altijd Sublime. Simpel, in een oogwenk opgestart (klikken en meteen verder werken waar je bezig was) en werkt lekker. Toch lijkt een groter pakket me ook wel fijn, zo zag ik bij een klasgenoot laatst hoe hij eenvoudig op een functie-aanroep kon klikken met een sneltoets om direct naar de functiedeclaratie te gaan en dat soort dingen zijn toch wel erg fijn. Misschien toch maar eens een ander pakket uit gaan proberen
PHPStorm heeft dat dus, control + click op de functienaam.quote:Op woensdag 12 februari 2014 17:39 schreef Devolution het volgende:
Ik gebruik altijd Sublime. Simpel, in een oogwenk opgestart (klikken en meteen verder werken waar je bezig was) en werkt lekker. Toch lijkt een groter pakket me ook wel fijn, zo zag ik bij een klasgenoot laatst hoe hij eenvoudig op een functie-aanroep kon klikken met een sneltoets om direct naar de functiedeclaratie te gaan en dat soort dingen zijn toch wel erg fijn. Misschien toch maar eens een ander pakket uit gaan proberen
1 2 3 4 5 6 7 8 9 10 | <?php include("scores/score1.html"); ?> <br> <?php include("scores/score2.html"); ?> |
ik bedoelde aanmaak datum van het bestand.. filesystem dus.quote:Op donderdag 13 februari 2014 16:04 schreef KomtTijd... het volgende:
datum van het filesystem of een datum ergens in het bestand?
Bedankt, ik zal er mee aan de slag, maar ik begrijp nog niet echt wat je bedoeld.quote:Op donderdag 13 februari 2014 16:19 schreef KomtTijd... het volgende:
Heb dat weleens gedaan met glob() en vervolgens array_multisort() op filemtime
Zoiets:quote:Op donderdag 13 februari 2014 16:38 schreef gerrit098 het volgende:
[..]
Bedankt, ik zal er mee aan de slag, maar ik begrijp nog niet echt wat je bedoeld.
1 2 3 4 5 6 7 8 9 | $files = array(); foreach(glob("*.html") as $filename) { $files[filemtime($filename)] = $filename; } ksort($files); foreach($files as $filename) { include($filename); echo '<br/>'; } |
1 2 3 | <?php fwrite(fopen('xml.txt', 'a'), "<message><id>". $u . "</id><name>". $nickname . "</name><body>" . $body . "</body></message>\n"); ?> |
Ik zou simplexml gebruiken. Gewoon standaard functies van phpquote:Op maandag 17 februari 2014 18:56 schreef Faux. het volgende:
ik kom er even niet uit
[ code verwijderd ]
Deze wordt dus geschreven in het bestand xml.txt, een XML-bestand. Deze wordt geopend met <xml>, maar wil ik ook laten eindigen met XML. Oftewel: hoe zorg ik ervoor dat de <message> niet aan het eind van het bestand wordt toegevoegd maar voor de </xml>?
quote:Op maandag 17 februari 2014 18:56 schreef Faux. het volgende:
ik kom er even niet uit
[ code verwijderd ]
Deze wordt dus geschreven in het bestand xml.txt, een XML-bestand. Deze wordt geopend met <xml>, maar wil ik ook laten eindigen met XML. Oftewel: hoe zorg ik ervoor dat de <message> niet aan het eind van het bestand wordt toegevoegd maar voor de </xml>?
1 2 3 | <?php file_put_contents(substr(file_get_contents('xml.txt'), 0, -6), "<message><id>". $u . "</id><name>". $nickname . "</name><body>" . $body . "</body></message>\n</xml>"); ?> |
Wat deze meneer zegt: gebruik een librayquote:Op maandag 17 februari 2014 19:00 schreef d4v1d het volgende:
[..]
Ik zou simplexml gebruiken. Gewoon standaard functies van php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php if ( !isset($form->data['radioboxes']) || count($form->data['radioboxes']) == 0 ) { return; } $files_array = array ( 1 => JPATH_SITE.'/images/pdf/form_1.pdf', 2 => JPATH_SITE.'/images/pdf/form_2.pdf', ); $attach_files = array(); foreach ( $files_array as $k => $v ) { if ( in_array($k, $form->data['radioboxes']) ) { $attach_files[] = $v; } } $form->data['file_array'] = $attach_files; ?> |
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 | <div class="ccms_form_element cfdiv_text" id="input_text_121_container_div" style=""> <label>Naam *</label> <input maxlength="150" size="30" class=" validate['required']" title="" type="text" value="" name="input_text_12" /> </div> <div class="ccms_form_element cfdiv_text" id="input_text_131_container_div" style=""> <label>Adres *</label> <input maxlength="150" size="30" class=" validate['required']" title="" type="text" value="" name="input_text_13" /> </div> <div class="ccms_form_element cfdiv_text" id="input_text_141_container_div" style=""> <label>PC & Woonplaats *</label> <input maxlength="150" size="30" class=" validate['required']" title="" type="text" value="" name="input_text_14" /> </div> <div class="ccms_form_element cfdiv_text" id="input_text_151_container_div" style=""> <label>Telefoon</label> <input maxlength="150" size="30" class=" validate['phone']" title="" type="text" value="" name="input_text_15" /> </div> <div class="ccms_form_element cfdiv_text" id="input_text_161_container_div" style=""> <label>E-mail *</label> <input maxlength="150" size="30" class=" validate['required','email']" title="" type="text" value="" name="input_text_16" /> </div> <div class="ccms_form_element cfdiv_radio radios_over" id="input_radio_171_container_div" style=""> <label>Ik wil *</label> <input type="hidden" name="input_radio_17" value="" alt="ghost" /> <div style="float:left; clear:none;"> <input type="radio" name="input_radio_17" id="input_radio_17_0" title="" value="Donateur worden" class="validate['required']" /> <label for="input_radio_17_0">optie A</label> <input type="radio" name="input_radio_17" id="input_radio_17_1" title="" value="gaan voetballen" class="validate['required']" /> <label for="input_radio_17_1">optie B</label> </div> </div> <div class="ccms_form_element cfdiv_text" id="chrono_verification1_container_div" style=""> <label>Vul de juiste code in *</label> <input maxlength="5" size="5" class="chrono_captcha_input validate['required']" title="" type="text" wf_key="19" value="" name="chrono_verification" /> {chronocaptcha_img} </div> <div class="ccms_form_element cfdiv_submit" id="input_submit_181_container_div" style="text-align:center"> <input name="input_submit_18" class="" value="Submit" type="submit" /> <input type='reset' name='reset' value='Reset' /> </div> |
doe eens een print_r($_POST) op de pagina om te kijken wat er gepost wordt.quote:Op dinsdag 18 februari 2014 16:38 schreef karton2 het volgende:
Ik heb op een joomlawebsite een contactformulier waarin de gebruiker kan kiezen tussen twee opties.
Optie A resulteert in een bevestigingsemail met optieA.pdf als bijlage.
Optie B zorgt voor een mail met optieB.pdf als bijlage.
Nu heb ik PHP code waarin ik heb beschreven welke .pdf bij welke optie hoort.
Het formulier verwerken doet het gewoon, maar er wordt geen mail naar de gebruiker gestuurd met een .pdf in de bijlage.
De code is een standaardcode die aangeleverd wordt in de FAQ van de ontwikkelaar.
Iemand die kan vertellen wat de fout is?
[ code verwijderd ]
[ code verwijderd ]
Wat ik heb gedaan is de php leeggehaald en dit er voor in de plaats gezet:quote:Op dinsdag 18 februari 2014 16:45 schreef totalvamp het volgende:
[..]
doe eens een print_r($_POST) op de pagina om te kijken wat er gepost wordt.
1 2 3 4 5 | <?php echo '<pre>'; print_r($_POST); echo '</pre>'; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php Array ( [input_text_12] => [input_text_13] => [input_text_14] => [input_text_15] => [input_text_16] => [input_radio_17] => [chrono_verification] => [input_submit_18] => Submit ) ?> |
quote:<?php
include ('html_kop.inc.php');
$hoofdstuk = 7;
echo "<h1>Hoofdstuk $hoofdstuk</h1>";
// INIT
$worp = 1;
$laatsteworp = 3;
$stenen = array (0, 0, 0, 0, 0);
// CONTROLLER
if( isset($_POST[ 'opnieuw' ]) ):
// OPNIEUW BEGINNEN
unset ($_POST);
elseif( isset($_POST[ 'dobbelen' ]) ):
// DOBBELEN
for( $i = 0; $i <= 4; $i ++ ):
$stenen[ $i ] = (int)$_POST[ 'steen_' .$i];
if( !isset($_POST[ 'vast_' .$i]) ):
//als stenen niet is vasgezet: dobbelen
$stenen[ $i ] = mt_rand(1, 6);
endif;
endfor;
//VOLGENDE WORP
$worp = $_POST['worp'] + 1;
endif;
// VIEW
$formulier = '<form name="stenen" method="POST" action=" ./yahze.php">';
for( $i = 0; $i <= 4; $i ++):
$formulier .= '<input type="hidden" name="steen_' .$i. ' " ' .
'value=" ' .$stenen[ $i ]. ' " />';
$formulier .= 'steen '. ($i+1). ' : <strong>' .$stenen[$i]. '</strong/>';
if( $worp > 1):
$formulier .=
'  '.
'<input type="checkbox" name="vast_' .$i. '"';
if( isset($_POST[ 'vast_' .$i]) ):
$formulier .= ' checked ';
endif;
$formulier .= ' /><small>vastzetten</small>';
endif;
$formulier .= '<br />';
endfor;
$formulier .= '<br />';
// KNOP NOGMAALS DOBBELEN
if( $worp <= $laatsteworp ):
$formulier .=
'<input type="submit" name="dobbelen" value="Nu werpen: ' .$worp.' " />';
else:
$formulier .= 'Bepaal de eindscore';
endif;
// FORMULIER AFSLUITEN
$formulier .=
'<br /><br />'.
'<input type="hidden" name="worp" value=" ' .$worp. '" />'.
'<input type="submit" name="opnieuw" value="opnieuw" />'.
'</form>';
echo $formulier;
include ('html_staart.inc.php');
?>
Ik kom er niet uitquote:Op woensdag 19 februari 2014 14:37 schreef ursel het volgende:
[ code verwijderd ]
Die zal wel niet bestaan. Ff check eromheen
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.
[ Bericht 6% gewijzigd door Darkomen op 19-02-2014 15:32:48 (Spoiler) ]
*zucht*quote:Op woensdag 19 februari 2014 15:30 schreef ManianMan het volgende:
[..]
Het script kan de dobbelstenen niet vastzetten wel het overige.
I.quote:Op woensdag 19 februari 2014 15:34 schreef KomtTijd... het volgende:
[..]
*zucht*
- Wat zou het script moeten doen?
- Wat gaat er verkeerd?
- Wat heb je zelf al geprobeerd om het probleem te isoleren?
Wel boek?quote:Op woensdag 19 februari 2014 16:38 schreef CrashO het volgende:
Gad-ver-damme.
Wat voor boek is dit?
Variablen binnen quotes, geen accolades. shorthand notaties. Onveilige code. Lappen html in echo's.. een cast naaar int..
De persoon die dit als "lesstof" aansmeert verdient een vuurpeleton
Die code van ManianMan, Hij heeft het over nazoeken in het boek...quote:
quote:Op woensdag 19 februari 2014 15:25 schreef Darkomen het volgende:
Gezien het school werk is, heb je al opgezocht wat een 'Undefined index' is?Gewoon de hele mikmak aangooien met error_reporting(-1) icm met ini_set('display_errors',1)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.![]()
Thanksquote:Op woensdag 19 februari 2014 16:42 schreef CrashO het volgende:
[..]
Die code van ManianMan, Hij heeft het over nazoeken in het boek...Nam dus aan dat het uit of aan de hand van een boek is. Die lap met pure code-aids.
Je probleem is trouwens dat je een spatie in de naam van je inputs hebt aan het eind..
name="steen_1 " in je formulier en dan uitlezen met $_POST['steen_1'] gaat niet werken. Haal die spatie eruit en hij werkt.
Ik ben pas begonnen met PHP, heb eerst een hele website gebouwd maar ben nu dus bezig met het echte werk. Ik ben dus nog in de leerfase. Als ik niet weet wat er fout kan zijn, dan kan ik uren de codes bewerken.quote:Op woensdag 19 februari 2014 15:45 schreef KomtTijd... het volgende:
"Hij doet het niet" is geen antwoord op de vraag "wat gaat er verkeerd"
En "de tekst controleren en een random functie veranderen" is geen antwoord op de vraag "wat heb je gedaan om het probleem te isoleren".
Ga eerst eens na WAT het niet doet. En dan WAAROM dat het niet doet. Kortom leer debuggen.
Het boek 'Academic Service basiscursus PHP 5.4' van Victor Peters, welk boek raden jullie mij dan aan?quote:Op woensdag 19 februari 2014 16:38 schreef CrashO het volgende:
Gad-ver-damme.
Wat voor boek is dit?
Variablen binnen quotes, geen accolades. shorthand notaties. Onveilige code. Lappen html in echo's.. een cast naar int..
De persoon die dit als "lesstof" aansmeert verdient een vuurpeletonVisualBasic docent die omgeschoolt is naar php?
Tip 1: Gebruik indenting zodat je code leesbaar en onderhoudbaar is!quote:Op woensdag 19 februari 2014 14:33 schreef ManianMan het volgende:
Weet iemand wat ik fout doe? Ik wil dus een Yahze spelletje maken zodat je geen dobbelstenen nodig hebt. Echter gaat er iets mis
( ! ) Notice: Undefined index: steen_0 in D:\wamp\www\hoofdstuk7\Yahze.php on line 30
( ! ) Notice: Undefined index: steen_1 in D:\wamp\www\hoofdstuk7\Yahze.php on line 30
( ! ) Notice: Undefined index: steen_2 in D:\wamp\www\hoofdstuk7\Yahze.php on line 30
( ! ) Notice: Undefined index: steen_3 in D:\wamp\www\hoofdstuk7\Yahze.php on line 30
( ! ) Notice: Undefined index: steen_4 in D:\wamp\www\hoofdstuk7\Yahze.php on line 30
[..]
...Daarom moet je leren debuggen. En niet bij de eerste de beste undefined index je complete code ergens op een forum dumpen en wachten tot iemand zich hard genoeg verveelt om een spatie voor je eruit te vissen.quote:Op woensdag 19 februari 2014 17:12 schreef ManianMan het volgende:
Ik ben pas begonnen met PHP, heb eerst een hele website gebouwd maar ben nu dus bezig met het echte werk. Ik ben dus nog in de leerfase. Als ik niet weet wat er fout kan zijn, dan kan ik uren de codes bewerken.
Dank je wel voor de tipsquote:Op woensdag 19 februari 2014 17:14 schreef zoem het volgende:
[..]
Tip 1: Gebruik indenting zodat je code leesbaar en onderhoudbaar is!
Tip 2: Gebruik var_dump() om te controleren wat de inhoud van een variabele is. Echo is daar niet geschikt voor.
Tip 3: Html-forms ondersteunen array data via name="naam[sleutel]", zodat je niet naam_nummer hoeft te doen.
Tip 4: Valideer de user data ($_POST), al kan ik me voorstellen dat dat voor nu niet je belangrijkste punt is.
Endif/endfor zou ik niet in pure php-code gebruiken, tenzij indenting onhandig wordt (o.a. templates). Is geheel persoonlijke voorkeur, maar wel common practice in php.
Als ik die andere testcode vervang door deze krijg ik:quote:
Het formulier wordt evengoed succesvol verzonden.quote:Array ( [chronoform] => keuze_form [event] => submit [Itemid] => 108 [option] => com_content [view] => article [id] => 4 [input_text_12] => Naam [input_text_13] => straat [input_text_14] => adres [input_text_15] => 0612345678 [input_text_16] => @hotmail.com [input_radio_17] => optieA [chrono_verification] => NSmDa [input_submit_18] => Submit [9bb14d3f9a07a586dbbbb6be7abe30e5] => 1 [IPADDRESS] => 77.164.90.163 )
Ik zie anders niks aan radioboxes wat een array moet zijn.quote:Op woensdag 19 februari 2014 19:01 schreef karton2 het volgende:
[..]
Als ik die andere testcode vervang door deze krijg ik:
[..]
Het formulier wordt evengoed succesvol verzonden.
1 2 3 4 5 | <?php if ( !isset($form->data['radioboxes']) || count($form->data['radioboxes']) == 0 ) { return; } ?> |
Vraagje, staat deze opdracht letterlijk zo in het boek beschreven?quote:Op woensdag 19 februari 2014 17:20 schreef ManianMan het volgende:
[..]
Dank je wel voor de tips, ik ga ze direct in gebruik nemen oftewel via trial & error maar het ging mij eigenlijk om dat mijn vriendin die opgenomen is in het ziekenhuis te Rotterdam en haar vader die bij haar is dit kunnen gebruiken om yahtzee te spelen.
Ik heb het overgetypt dus jaquote:Op woensdag 19 februari 2014 19:37 schreef totalvamp het volgende:
[..]
Vraagje, staat deze opdracht letterlijk zo in het boek beschreven?
Verbranden of terugbrengen. Dit is bagger zoals eerder verteld..quote:
Kan je dat uitleggen in wat begrijpelijker taal?quote:Op woensdag 19 februari 2014 19:36 schreef totalvamp het volgende:
[..]
Ik zie anders niks aan radioboxes wat een array moet zijn.
Waarschijnlijk knalt hij er al uit met
[ code verwijderd ]
aangezien die data niet bestaat.
1 2 3 4 | <?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?> |
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 woensdag 19 februari 2014 20:14 schreef karton2 het volgende:
[..]
Kan je dat uitleggen in wat begrijpelijker taal?
Hardop gedacht geschreven:
Wat ik begrijp is dat een array een soort map is waar je informatie in kan opslaan.
Als ik dit voorbeeld zie:
[ code verwijderd ]
Dan heet de array (de map dus) "$cars" en de informatie die in die array is opgeslagen: Volvo, BMW en Toyota.
Echo kan je op het scherm weergeven wat je in de array hebt staan.?
In mijn code zie ik die array weer terugkomen met de naam "$files_array", met daarin de link naar twee .pdf bestanden.
Paar regels verder bij "foreach" komt "$files_array" weer terug waarin de twee opties van de radioboxes staan beschreven: $k en $v.
Bij "if" staat dat als $k is gekozen dan moet hij de data uit de radiobox verwerken; hetzelfde geldt voor $v.
Hoe weet hij dan eigenlijk dat $k pdf01 is en en $v bij pdf02..?
Ik probeer het gewoon te begrijpen, maar het lukt niet echt
In ieder geval voor het gemak de php code toegevoegd.Ik heb deze gekregen van mijn broer maar welk boek raad je dan aan?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.
Ik lees zelf geen PHP boeken, vooral omdat als het boek uitkomt sommige technieken alweer verouderd zijn.quote:Op woensdag 19 februari 2014 20:16 schreef ManianMan het volgende:
[..]
Ik heb deze gekregen van mijn broer maar welk boek raad je dan aan?
quote:Op woensdag 19 februari 2014 20:14 schreef karton2 het volgende:
[..]
Kan je dat uitleggen in wat begrijpelijker taal?
Hardop gedacht geschreven:
Wat ik begrijp is dat een array een soort map is waar je informatie in kan opslaan.
Als ik dit voorbeeld zie:
[ code verwijderd ]
Dan heet de array (de map dus) "$cars" en de informatie die in die array is opgeslagen: Volvo, BMW en Toyota.
Echo kan je op het scherm weergeven wat je in de array hebt staan.?
In mijn code zie ik die array weer terugkomen met de naam "$files_array", met daarin de link naar twee .pdf bestanden.
Paar regels verder bij "foreach" komt "$files_array" weer terug waarin de twee opties van de radioboxes staan beschreven: $k en $v.
Bij "if" staat dat als $k is gekozen dan moet hij de data uit de radiobox verwerken; hetzelfde geldt voor $v.
Hoe weet hij dan eigenlijk dat $k pdf01 is en en $v bij pdf02..?
Ik probeer het gewoon te begrijpen, maar het lukt niet echt
In ieder geval voor het gemak de php code toegevoegd.Hoe kan ik dit makkelijk uitleggenSPOILEROm 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.
Zie een array als een lijst van dingen. Elk ding kan een naam hebben.
1
2
3
4
5
6
7
8
9
10<?php
// Deze array bevat geen keys
$cars = ['Audi', 'Opel'];
//Deze wel
$car = [
'merk' => 'Audi',
'model' => 'a8'
];
?>
In het onderste voorbeeld heb je dus een array waarbij je de keys zelf hebt neergezet.
Als je nu het volgende zou doen met deze arrays:
1
2
3
4
5
6
7
8
9
10
11<?php
foreach($cars as $key => $brand) {
echo $key; // Dit zal 0 en 1 zijn
echo $brand; // Audi, Opel
}
foreach($car as $k => $v) {
echo $k; // Merk, Model
echo $v; // Audi, a8
}
Wat foreach doet is dus over alle waarden in een array lopen en daarvan de key(ookwel index genoemd) en de waarde doorgeven.
Als je zelf geen keys meegeeft zal hij altijd bij 0 beginnen en dan optellend.
[ Bericht 0% gewijzigd door #ANONIEM op 19-02-2014 20:43:11 ]
Ik deel deze mening volledigquote:Op woensdag 19 februari 2014 20:20 schreef totalvamp het volgende:
Ik lees zelf geen PHP boeken, vooral omdat als het boek uitkomt sommige technieken alweer verouderd zijn.
Wat je moet gaan leren is denken in Classes en Objecten en op voorhand bepalen wat je nodig hebt.
Ik zou dus een tutorial opzoeken over hoe je een class maakt en deze gebruikt.
Een framework is handig inderdaad, ik zou het alleen niet bij 1 laten.quote:Op woensdag 19 februari 2014 21:12 schreef zoem het volgende:
Het werken met een degelijk framework (Zend Framework, Symfony, etc) helpt ook om grip te krijgen op de werking en gedachte achter OOP-structuren. Echter moet je dan wel al wat basiskennis bezitten. Iets maken is uiteindelijk de beste leerschool.
quote:Op woensdag 19 februari 2014 21:12 schreef zoem het volgende:
Het werken met een degelijk framework (Zend Framework, Symfony, etc) helpt ook om grip te krijgen op de werking en gedachte achter OOP-structuren. Echter moet je dan wel al wat basiskennis bezitten. Iets maken is uiteindelijk de beste leerschool.
quote:Op woensdag 19 februari 2014 21:15 schreef totalvamp het volgende:
[..]
Een framework is handig inderdaad, ik zou het alleen niet bij 1 laten.
Helemaal mee eens, maar als je nog niet weet wat een array is, heb je nog wel een héééééééle lange weg te gaan voordat je je in ditsoort dingen wilt gaan verdiepen.quote:Op woensdag 19 februari 2014 21:18 schreef ursel het volgende:
conferences, gebruikersgroepen bezoeken en webinars volgen om te zien waar technieken heen gaan vandaag de dag.
Dankzij jouw uitleg snap mijn code nu wat beter, dankjewel!quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Data Array: Array ( [option] => com_chronoforms [tmpl] => component [chronoform] => inschrijf_form [event] => submit [Itemid] => [input_text_12] => naam [input_text_13] => straat [input_text_14] => postcode / plaats [input_text_15] => tel [input_text_16] => email [input_radio_17] => radiobox keuze [chrono_verification] => AE3zY [input_submit_18] => Submit [a65f6c919aedc844149f022974440e8d] => 1 ) Validation Errors: Array ( ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php if ( !isset($inschrijf_form->data['input_radio_17']) || count($inschrijf_form->data['input_radio_17']) == 0 ) { return; } $files_array = array ( 1 => JPATH_SITE.'http://www.etcetera.pdf', 2 => JPATH_SITE.'http://www.etcetera.pdf', ); $attach_files = array(); foreach ( $files_array as $k => $v ) { if ( in_array($k, $inschrijf_form->data['input_radio_17']) ) { $attach_files[] = $v; } } $inschrijf_form->data['file_array'] = $attach_files; print_r($_POST) ?> |
Ja, de admin ontvangt een email met daarin de ingevulde gegevens.quote:Op donderdag 20 februari 2014 00:38 schreef zoem het volgende:
Even los van de bijlage, wordt er uberhaupt wel een mail gestuurd na het submitten van het formulier? Als dat al niet werkt ligt het probleem niet bij de bijlage.
Probeer eerst eens terug begrijpen wat je code precies doet voordat je random dingen gaat aanpassen. wat je nu hebt staan slaat namelijk helemaal nergens op.quote:Op donderdag 20 februari 2014 00:18 schreef karton2 het volgende:
De PHP mét inschrijf_form en input_radio_17:
[ code verwijderd ]
Het formulier verstuurt nog steeds geen PDF naar de gebruiker.
Mijn vraag is echter of het formulier en de PHP in theorie zou moeten werken.
Zo ja; dan weet ik dat de code klopt en dat ik verder zoeken naar een instelling die ik over het hoofd zie.
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 | <?php /** * Bouw generieke generator op met eventuele extra data uit child classes * * Voorbeeld voor de options * $options = array( * 'allTpls' => 'getAllFormTpls', * 'listTpl' => '/generator/listTemplates', * 'elementTpl' => '/generator/element', * 'generatorTpl' => '/generator/generator', * 'modifyTpl' => '/generator/modify', * 'configurationTpl' => '/generator/configuration', * ); * * @param string $type Generator type, bijv. report, form. Zal bijv. worden gebruikt in de benanimg van id's in html etc * @param array $options array met opties, zie hierboven voor alle mogelijk onderdelen * @throws \library\generator\Exception Rethrows alle exceptions * @return void */ public function __construct($type, $options) { parent::__construct($this->dbOptions); //bouw db in de OMS parent class op try { $this->setOptions($options); //set $this->options } catch (Exception $exc) { throw $exc; //rethrow } $this->setObjects($this->dbOptions); //haal alle toegankelijke objecteninformatie op dmv een functie in de ixPlanta class $this->secure = new Secure(); //instantieer de secure class try { $this->setType($type); //set $this->type } catch (Exception $exc) { throw $exc; //rethrow } try { //set $this->company $this->setCompany(true); //@TODO ondersteuning voor meerdere companies inbouwen? } catch (Exception $exc) { throw $exc; //rethrow } $this->setProject(); //set project en projectDbName gebaseerd op de IXPLATTFORM constante $this->setDesign(); //set design doc gebaseerd op de IXPLATTFORM constante try { $this->setViews(); //set $this->views met alle views uit $this->options } catch (Exception $exc) { throw $exc; //rethrow } try { $this->setTemplates(); //set $this->templates met alle templates uit $this->options } catch (Exception $exc) { throw $exc; //rethrow } try { $this->setChunkTplChunks(); //set $this->chunktpl met alle templates uit $this->templates } catch (Exception $exc) { throw $exc; //rethrow } try { $this->setUserGroupNames(); //set $this->userGroupNames } catch (Exception $exc) { throw $exc; //rethrow } } public function setType($type){ if (isset($type) && is_string($type)) { $this->type = $type; //set type } else { throw new \Exception('Invalid type'); } }?> |
En dat is nu niet het geval.quote:You should not be catching the exception unless you intend to do something meaningful.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php try { ga_dood(); } catch (Exception $e) { # Ik weet dat ik doodga, maar het boeit niet, tenzij ik foutmelding X krijg if ($e->getMessage() == "Nu moet je wel doodgaan") { throw($e); } } # life is like a box of chocolates ?> |
Ik las heel jouw post en dacht ik ga posten erop, tot ik deze post lasquote:Op donderdag 20 februari 2014 10:07 schreef Sitethief het volgende:
Hmm, ik heb ze nu gewoon verwijderd, las net ergens dit:
[..]
En dat is nu niet het geval.
De belangrijkste regels voor het werken met excepties zijn:quote:Op donderdag 20 februari 2014 10:07 schreef Sitethief het volgende:
Hmm, ik heb ze nu gewoon verwijderd, las net ergens dit:
[..]
En dat is nu niet het geval.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php /** * @param string $type * * @throws \InvalidArgumentException */ public function setType($type) { if (!is_string($type) { throw new \InvalidArgumentException('$type must be a string'); } $this->type = $type; } ?> |
Asserts hebben het nadeel dat ze uitgezet kunnen worden. Ik kan dus instellen dat ze bij mij niet afgaan, waardoor ik niet gewaarschuwd wordt voor ongeldige waardes. Om die reden vind ik asserts eigenlijk geen geschikte optie voor public API, en wel voor private en protected functies.quote:Op donderdag 20 februari 2014 12:51 schreef slacker_nl het volgende:
Wat ik vaak doe is dat ik ga kijken of de situatie goed is om iets te doen, meestal assert ik dan de opties en ga ik ook dood als het fout gaat.
Dus als $this->set_company($company); doodgaat omdat company undef is:
Dan zorg ik ervoor dat 1) de param niet undef kan zijn en dat m'n caller er gelijk uitklapt en $company bijvoorbeeld bepaalde waarde is controleer ik vooraf of die waarde wel correct is en dat doen we dan met bijvoorbeeld een constante. En dan kan je door je gehele applicatie dat checken en mogelijk Exceptions throwen.
Alleen zijn al die dingen geen userinput maar input van classes die op deze class bouwen, die dus een generator willen opbouwen met hun instellingen, dus bijv. een class van mijn collega gebouwd.quote:Op donderdag 20 februari 2014 23:04 schreef Light het volgende:
[..]
De belangrijkste regels voor het werken met excepties zijn:
1. Gebruik excepties alleen voor exceptionele situaties.
2. Gooi nooit Exception (maar bijvoorbeeld een InvalidArgumentException)
3. Vang altijd Exception, niet alleen het specifieke type dat wordt gegooid
Dus als je bijvoorbeeld user input aan het controleren bent, moet je geen excepties gooien. Het is (in mijn ogen) verwacht gedrag dat die input niet voldoet aan de eisen die je eraan stelt.
[ code verwijderd ]
Docblocks zijn heel handig om aan te geven wat een functie doet, welke argumenten er worden verwacht, welk type er teruggegeven wordt en wat er aan excepties kan worden verwacht. Je kunt er uiteraard ook bijzetten wat een functie doet.
Als je de code gepost door Sitethief bedoelt: die (constructor) is fout, maar hij heeft het daarna op de juiste manier gecorrigeerd. Het tussendoor opvangen van exceptions en het daarna gelijk rethrowen is natuurlijk onzinnig. Niet alleen vanwege het feit dat het overbodige code is, maar het kan ook de call stack trace beïnvloeden. Ik ben het dan ook geheel eens met Light over het gebruik van exceptions.quote:
Hoe vaak ben je al 'doodgegaan' als ik vragen mag? Ik vind het zo'n gekke bewoordingquote:Wat ik vaak doe is dat ik ga kijken of de situatie goed is om iets te doen, meestal assert ik dan de opties en ga ik ook dood als het fout gaat.
Ik ben al heel vaak doodgegaan. En m'n code nog meer!quote:Op vrijdag 21 februari 2014 10:26 schreef zoem het volgende:
[..]
Als je de code gepost door Sitethief bedoelt: die (constructor) is fout, maar hij heeft het daarna op de juiste manier gecorrigeerd. Het tussendoor opvangen van exceptions en het daarna gelijk rethrowen is natuurlijk onzinnig. Niet alleen vanwege het feit dat het overbodige code is, maar het kan ook de call stack trace beïnvloeden. Ik ben het dan ook geheel eens met Light over het gebruik van exceptions.
[..]
Hoe vaak ben je al 'doodgegaan' als ik vragen mag? Ik vind het zo'n gekke bewoording
Je frontend code moet dat goed afvangen, je backend code moet doodgaan op het moment dat de input incorrect is. Ipv Exceptions zou je ook nog trigger_error kunnen gebruiken.quote:Op donderdag 20 februari 2014 23:04 schreef Light het volgende:
Dus als je bijvoorbeeld user input aan het controleren bent, moet je geen excepties gooien. Het is (in mijn ogen) verwacht gedrag dat die input niet voldoet aan de eisen die je eraan stelt.
Dat is waar, maar ik maak asserts publiek, zodat als je ze wilt gebruiken het wel kan, en als je het niet doet, doe ik het alsnog voor je, alleen kan je vooraf al zien of een call zou gaan werken of niet. Het is een beetje defensief programeren.quote:Op donderdag 20 februari 2014 23:08 schreef Light het volgende:
[..]
Asserts hebben het nadeel dat ze uitgezet kunnen worden. Ik kan dus instellen dat ze bij mij niet afgaan, waardoor ik niet gewaarschuwd wordt voor ongeldige waardes. Om die reden vind ik asserts eigenlijk geen geschikte optie voor public API, en wel voor private en protected functies.
Ik heb zelf dit in mijn code:quote:Op vrijdag 21 februari 2014 10:53 schreef slacker_nl het volgende:
[..]
Dat is waar, maar ik maak asserts publiek, zodat als je ze wilt gebruiken het wel kan, en als je het niet doet, doe ik het alsnog voor je, alleen kan je vooraf al zien of een call zou gaan werken of niet. Het is een beetje defensief programeren.
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 | <?php namespace System\Core; use \System\Core\Container; use System\Core\Traits\ArrayAccessor; use System\Core\Traits\ArrayIterate; /** * Class Base * @package System\Core */ class Base implements \ArrayAccess, \Iterator { use ArrayAccessor, ArrayIterate; /** * @param callable $closure */ public function __construct(\Closure $closure = null) { if(is_callable($closure)) { return $closure($this); } return $this; } /** * @param Container\Settings $settings */ public function setSettings(Container\Settings $settings = null) { if(is_object($settings)) { foreach($settings as $k => $v) { $this->{$k} = $v; } } } /** * @param Container\Settings $settings */ public function setDependencies(Container\Settings $settings = null) { $this->setSettings($settings); } /** * @param $name * @param array $args * @return bool */ public function __call($name, Array $args = []) { $type = substr($name, 0, 3); $var = strtolower(substr($name, 3)); switch($type) { case 'set': $this->$var = $args[0]; break; case 'get': return isset($this->$var)?$this->var:false; break; } } } |
Ik heb ook code gezien die gebruikt werd om te bepalen of iets wel of niet geldig is en die een exceptie gooide in het geval de input niet geldig was. Als de input wel geldig was, werd gewoon netjes true teruggegeven.quote:Op vrijdag 21 februari 2014 10:50 schreef slacker_nl het volgende:
[..]
Je frontend code moet dat goed afvangen, je backend code moet doodgaan op het moment dat de input incorrect is. Ipv Exceptions zou je ook nog trigger_error kunnen gebruiken.
Ja bij sommige frameworks zie je inderdaad een InvalidInputException o.i.d.quote:Op vrijdag 21 februari 2014 15:06 schreef Light het volgende:
[..]
Ik heb ook code gezien die gebruikt werd om te bepalen of iets wel of niet geldig is en die een exceptie gooide in het geval de input niet geldig was. Als de input wel geldig was, werd gewoon netjes true teruggegeven.
Afhankelijk van de situatie kan het valide zijn om inputcontrole bij een setter te plaatsen, en dan een exceptie te gooien als de input niet geldig is. Je kunt er ook voor kiezen dat niet te doen en in de class een method validate() oid te implementeren die dan gewoon true of false teruggeeft afhankelijk van de waardes van de verschillende velden. En daar zijn ook combinaties van mogelijk.
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 | <?php namespace Controller; use Model\User; use System\Core\Controller; use System\Core\Form\Element; use System\Core\Form\Input; use System\Helpers\Html; /** * Class Login * @package Controller */ class Login extends Controller { public function index() { $this->form->addElement(new Element\Fieldset([ 'elements' => [ new Input\Text([ 'name' => 'username', 'required' => true, 'baseValue' => 'Username', 'validator' => ['Length' => ['min' => 3]] ]), new Input\Password([ 'name' => 'password', 'baseValue' => 'Password', 'validator' => ['Length' => ['min' => 5]] ]), new Element\Submit([ 'name' => 'login', 'value' => 'Login' ]) ] ])); if($this->request->isPost()) { if($this->form->validate()) { $user = User::find_by_username($this->request->post('username')); if(isset($user->id)) { if(password_verify($this->request->post('password'),$user->password)) { $_SESSION['user'] = ['id' => $user->id]; $user->login_attempts = 0; $this->url->redirect($this->url->createUrl()); } else { $user->login_attempts += 1; } $user->save(); } } } $this->template->load('login', ['form' => $this->form]); echo $this->template; } } |
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 | <?php namespace System\Core; /** * Class Form * @package System\Core */ class Form extends Base { private $elements = array(); public $method = 'post'; public $name = ''; public $valid = true; public $enctype = 'application/x-www-form-urlencoded'; /** * @param $element */ public function addElement($element) { $this->elements[$element->name] = $element; } public function show() { foreach($this->elements as $e) { echo $e; } } /** * @return bool */ public function validate() { foreach($this->elements as $e) { if(false === $e->validate()){ $this->valid = false; } } return $this->valid; } /** * @return array */ public function __sleep() { return $this->elements; } /** * @return string */ public function __toString() { $output = '<form method="' . $this->method . '" name="' . $this->name . '" enctype="'.$this->enctype.'">'; foreach($this->elements as $e) { $output .= $e; } $output .= '</form>'; return $output; } } |
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 | <?php namespace System\Core\Form; use \System\Core; use \System\Core\Form\Validator; /** * Class Input * @package System\Core\Form */ class Input extends Element { public $required = false; public $baseValue = ''; public $checked = false; public $validator; public $description; public $options = array(); public $value = ''; public $min; public $max; public $step; public $validMessage = ''; public $valid; protected $settings; use Core\Traits\getObjVars; /** * @param array $data */ public function __construct(array $data) { foreach($data as $k => $v) { $this->$k = $v; } if($this->request->isPost()) { if(false !== $this->request->post($this->name)) { $this->value = $this->request->post($this->name); } } } /** * @return string */ public function getClass() { return isset($this->class)?' class="'.$this->class.'"':''; } /** * @return string */ public function getRequired() { return false === $this->required?'':' required aria-required="true"'; } /** * @return string */ public function getMinMaxStep() { return ' min="'.$this->min.'" max="'.$this->max.'" step="'.$this->step.'" '; } /** * @return string */ public function getValue() { return ' value="'.$this->value.'"'; } /** * @return string */ public function getLabel() { return isset($this->label)?'<label for="'.$this->name.'">'.$this->label.'</label>':''; } /** * @return string */ public function getDescribed() { return isset($this->description)?'aria-describedby="'.$this->name.'-format"':''; } /** * @return string */ public function getDescription() { return isset($this->description)?'<span id="'.$this->name.'-format" class="help">'.$this->description.'</span>':''; } /** * @param $value */ public function setValue($value) { $this->value = $value; } } |
Ik zou in die Form class geen field $valid maken maar het resultaat gewoon binnen de functie houden. Verder kun je die validate() functie nog wat optimaliseren door te stoppen met valideren zodra je een element gevonden hebt dat niet valid is (maar dat kan uiteraard niet als validate() meer doet dan alleen valideren).quote:Op vrijdag 21 februari 2014 15:27 schreef totalvamp het volgende:
[..]
Ja bij sommige frameworks zie je inderdaad een InvalidInputException o.i.d.
Wat ik zelf doe is de validatie op de validate() manier
Dit is bijvoorbeeld mijn logincontroller
[ code verwijderd ]
Form class:
[ code verwijderd ]
Input class:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php /** * @return bool */ public function validate() { $valid = true; foreach($this->elements as $e) { if(false === $e->validate()){ $valid = false; break; } } return $valid; } ?> |
Dit is meer voor eventueel een extra optie zodat je later in de code ook kan kijken of je form geldig was.quote:Op vrijdag 21 februari 2014 21:54 schreef Light het volgende:
[..]
Ik zou in die Form class geen field $valid maken maar het resultaat gewoon binnen de functie houden. Verder kun je die validate() functie nog wat optimaliseren door te stoppen met valideren zodra je een element gevonden hebt dat niet valid is (maar dat kan uiteraard niet als validate() meer doet dan alleen valideren).
[ code verwijderd ]
In Perl, mijn dagelijkse brood, heb je Moose en verschillende parameter check modules, Params::Check, Params::Validate en Data::FormValidator. Bij Moose kan je gewoon zeggen:quote:Op vrijdag 21 februari 2014 15:06 schreef Light het volgende:
[..]
Ik heb ook code gezien die gebruikt werd om te bepalen of iets wel of niet geldig is en die een exceptie gooide in het geval de input niet geldig was. Als de input wel geldig was, werd gewoon netjes true teruggegeven.
Afhankelijk van de situatie kan het valide zijn om inputcontrole bij een setter te plaatsen, en dan een exceptie te gooien als de input niet geldig is. Je kunt er ook voor kiezen dat niet te doen en in de class een method validate() oid te implementeren die dan gewoon true of false teruggeeft afhankelijk van de waardes van de verschillende velden. En daar zijn ook combinaties van mogelijk.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package My::Fok; use Moose; has 'fok' => ( is => 'rw', isa => 'Int', # Str, ArrayRef, etc etc 'Class::Name' required => 0, default => sub { return 1}, ); 1; ## Elders in je code base use My::Fok; my $fok = My::Fok->new(fok => 100); |
1 2 3 4 5 6 | sub my_func { my $args = check({foo => { required => 1, isa => "My::Fok" }}, {@_}); } my $fok = My::Fok->new(fok => 100); my_func(foo => $fok); |
Werk je toevallig bij Booking.com dat je nog in Perl werktquote:Op zaterdag 22 februari 2014 17:08 schreef slacker_nl het volgende:
[..]
In Perl, mijn dagelijkse brood, heb je Moose en verschillende parameter check modules,
Nope.quote:Op maandag 24 februari 2014 15:30 schreef raptorix het volgende:
[..]
Werk je toevallig bij Booking.com dat je nog in Perl werkt?
Nee, dat is niet hoe php werkt. Je kunt prima een functie aanroepen en daarna declareren. Je kunt ook twee functies maken die elkaar aanroepen zonder dat je daar spannende extra dingen voor hoeft te doen.quote:Op donderdag 27 februari 2014 19:34 schreef zoem het volgende:
De functies zullen eerst gedeclareerd moeten worden alvorens ze aangeroepen kunnen worden. In je voorbeeld moet de call naar test() er dus onder staan. Dat is hoe php werkt.
Dat zou gewoon moeten werken. Maar het is wat lastig om je te helpen zolang niet duidelijk is wat er gebeurt als je de code in functies hebt staan.quote:Op donderdag 27 februari 2014 19:28 schreef terdege het volgende:
Hoe werken functions in PHP? Ik gebruik een los PHP bestand om data in een database te manipuleren maar ik kan daarbij geen gebruik maken van functions. Bijvoorbeeld onderstaande code werkt niet, maar als ik dezelfde mysqli_query buiten de function zet werkt het prima. Werkt een php functie alleen als er een echo of return in zit?
test();
function test(){
mysqli_query(blalba);
}
Dat werkt alleen als het binnen hetzelfde bestand staat. Hij heeft een losse file met functies die waarschijnlijk later pas geinclude wordt. En dan gaat je verhaal niet op. Heb even m'n reactie aangepast zodat het duidelijker is.quote:Op donderdag 27 februari 2014 21:29 schreef Light het volgende:
[..]
Nee, dat is niet hoe php werkt. Je kunt prima een functie aanroepen en daarna declareren. Je kunt ook twee functies maken die elkaar aanroepen zonder dat je daar spannende extra dingen voor hoeft te doen.
Ja okquote:Op donderdag 27 februari 2014 21:34 schreef zoem het volgende:
[..]
Dat werkt alleen als het binnen hetzelfde bestand staat. Hij heeft een losse file met functies die waarschijnlijk later pas geinclude wordt. En dan gaat je verhaal niet op. Heb even m'n reactie aangepast zodat het duidelijker is.
Wat een stom principe zegquote:Op donderdag 27 februari 2014 21:42 schreef Light het volgende:
[..]
Ja okJe moet een file eerst includen voordat je de code daarin kunt aanspreken.
Welke dinosaurus werkt er dan ook nog zonder classesquote:Op donderdag 27 februari 2014 22:00 schreef Light het volgende:
[..]
Die werken voor classes, niet voor bestanden met losse functies.
Terdege misschien?quote:Op donderdag 27 februari 2014 22:04 schreef CrashO het volgende:
[..]
Welke dinosaurus werkt er dan ook nog zonder classes
niet alles hoeft OO te zijn hequote:Op donderdag 27 februari 2014 22:04 schreef CrashO het volgende:
[..]
Welke dinosaurus werkt er dan ook nog zonder classes
Niet alle functies wil je in een class hebben.quote:Op donderdag 27 februari 2014 22:04 schreef CrashO het volgende:
[..]
Welke dinosaurus werkt er dan ook nog zonder classes
Behalve de autoload functie, over wat voor functies heb jij het?quote:Op vrijdag 28 februari 2014 09:15 schreef Sitethief het volgende:
[..]
Niet alle functies wil je in een class hebben.
Een bunch aan helper functies? Waarom zou je dat in een class willen frotten?quote:Op vrijdag 28 februari 2014 11:26 schreef totalvamp het volgende:
[..]
Behalve de autoload functie, over wat voor functies heb jij het?
Zodat je alle die functies op 1 centrale overzichtelijke plek hebt.quote:Op vrijdag 28 februari 2014 11:38 schreef slacker_nl het volgende:
[..]
Een bunch aan helper functies? Waarom zou je dat in een class willen frotten?
En dan moet je... wat doen precies?quote:Op vrijdag 28 februari 2014 11:54 schreef totalvamp het volgende:
[..]
Zodat je alle die functies op 1 centrale overzichtelijke plek hebt.
Daarnaast heb je verschillende soorten helpers, miss wil je het wel opdelen.
Html helpers
Url helpers
Helper helpers
Parse helpers
Met classes blijf je overzichtelijk en is het duidelijk waar een functie vandaan komt.
En je kunt functienamen normaal houden, zodat je niet met dezelfde functienamen eindigt voor verschillende dingen.
1 2 3 4 | include_once("Utils.php"); my $helper = new Helper; $helper->parse_url(); |
1 2 3 | include_once("Utils.php"); parse_url(); |
De include kan je weglaten bij de OO versie want die kan je met autoload laten afhandelen.quote:Op vrijdag 28 februari 2014 12:31 schreef slacker_nl het volgende:
Ik mis je punt. Of word alles een static functie?
1 2 | $uh = Loader::helper('url'); $uh->parse_url(); |
1 2 3 4 | <?php $url = new Url('http://www.fok.nl'); echo $url->getHost(); ?> |
quote:Op vrijdag 28 februari 2014 14:23 schreef wipes66 het volgende:
[ code verwijderd ]
+ psr-0 autoloader en de rest gaat automatisch. geen includes, geen loader class. eleganter kan niet denk ik
Zo doe ik het ook ^^quote:Op vrijdag 28 februari 2014 14:23 schreef wipes66 het volgende:
[ code verwijderd ]
+ psr-0 autoloader en de rest gaat automatisch. geen includes, geen loader class. eleganter kan niet denk ik
Huiverig wordt ik ervan, automatisch files laden, expliciet aangeven welke klasse je wilt gebruiken in je module.quote:Op vrijdag 28 februari 2014 14:23 schreef wipes66 het volgende:
[ code verwijderd ]
+ psr-0 autoloader en de rest gaat automatisch. geen includes, geen loader class. eleganter kan niet denk ik
Ja, want de classloaders kunnen het pad achterhalen dmv de classname of namespace. Vroeger zag je vaak de "Vendor_My_Awesome_Class" constructie, waarbij underscores door slashes werden vervangen in de autoloader. Moderne frameworks gebruiken nu namespaces, waarbij de namespace separator wordt gebruikt voor het resolven van het pad. Een vereiste is dus dat er een toplevel namespace moet zijn.quote:Op vrijdag 28 februari 2014 18:22 schreef slacker_nl het volgende:
[..]
Huiverig wordt ik ervan, automatisch files laden, expliciet aangeven welke klasse je wilt gebruiken in je module.
Hoe werkt autoloader eigenlijk, als ik t/inc/Net/LDAP.php heb en een lib/Net/LDAP.php, kan ik dan zeggen dat t/inc gebruikt moet worden of dat lib gebruikt moet worden?
Vanuit HTML wordt een PHP bestand met deze code aangeroepen als iemand ergens op klikt. Het is vrij simpel. Alles werkt gewoon zoals het hoort, alleen de functies worden niet uitgevoerd.quote:Op donderdag 27 februari 2014 21:33 schreef Light het volgende:
[..]
Dat zou gewoon moeten werken. Maar het is wat lastig om je te helpen zolang niet duidelijk is wat er gebeurt als je de code in functies hebt staan.
Tip: plaats php code tussen
[ code verwijderd ]
voor leuke kleurtjes en regelnummers enzo.
1 2 3 4 5 6 7 8 9 | <?php include 'dbconnect.php'; test(); function test(){ mysqli_query($link, 'UPDATE tablename SET Rowname=5'); } mysqli_close($link); ?> |
$link binnen je functie `test` gaat niet werken. Die zit in een andere scope. Als je hem daar wilt gebruiken zal je hem moeten meegeven. (of OO gaan en een property binnen je class aansprekenquote:Op vrijdag 28 februari 2014 18:59 schreef terdege het volgende:
Alles werkt gewoon zoals het hoort, alleen de functies worden niet uitgevoerd.
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.
[ Bericht 16% gewijzigd door #ANONIEM op 28-02-2014 19:09:51 ]
Wat je doet heeft niets met OO te maken, maar dat wil niet zeggen dat het 'geen goede manier'is. Als je OO wilt programmeren zul je toch echt classes, namespaces, methods enz. moeten gaan gebruiken.quote:Op vrijdag 28 februari 2014 18:59 schreef terdege het volgende:
@ OO discussie. Ik weet hoe ik OO moet programmeren maar ik heb geen ervaring met PHP. Ik heb vervolgens geleerd om aparte PHP bestanden te maken voor verschillende taken die dan aan te roepen met behulp van JSON. Bijvoorbeeld: als iemand op een rode knop drukt wordt rodeknop.php uitgevoerd. Dit is dus geen goede manier om PHP te gebruiken?
[..]
Vanuit HTML wordt een PHP bestand met deze code aangeroepen als iemand ergens op klikt. Het is vrij simpel. Alles werkt gewoon zoals het hoort, alleen de functies worden niet uitgevoerd.
[ code verwijderd ]
PHP was in beginsel ook niet voor OOP gemaakt. Als je graag OOP wilt doen, dan zou ik m'n licht opsteken bij C++/Java/C#.quote:Op vrijdag 28 februari 2014 19:29 schreef robin007bond het volgende:
OOP vind ik vreselijk werken in PHP. Het is niet lekker om MVC te programmeren zonder dat je die frameworks gebruikt.
Netheid? Dat je ook dit "kan" doen met echo's betekend ook niet dat je het moet.quote:Op vrijdag 28 februari 2014 19:42 schreef Robuustheid het volgende:
Waarom wordt er voor require_once/require/include haakjes gebruikt met daarin het bestand, terwijl het ook zonder haakjes kan?
1 2 3 | <?php echo "ik echo deze $waarde naar buiten op een nekshot waardige manier"; ?> |
1 2 3 | <?php echo ($ditIsTrue) ? 'dit was dus waar' : 'dit niet'; ?> |
Haakjes gebruiken met include etc is iets van de vroegere PHP versies, tegenwoordig zou ik ze niet meer gebruiken.quote:Op vrijdag 28 februari 2014 19:45 schreef CrashO het volgende:
[..]
Netheid? Dat je ook dit "kan" doen met echo's betekend ook niet dat je het moet.
[ code verwijderd ]
Zoals zoveel dingen in php kan je het netjes doen en het ranzig doen.
Shorthand notaties zijn ook zoiets.![]()
[ code verwijderd ]
En vanaf PHP5 kan je heel aardig OO werken en vanaf PHP 5.3/5.4 is het imo prima voor elkaar.
1 2 3 4 5 6 7 8 9 | <?php if($true) { return 'ja'; } else { return 'nee'; } return $true?'ja':'nee'; ?> |
Ik denk dat CrashO doelde op de <?= shorthand.quote:Op vrijdag 28 februari 2014 19:53 schreef zoem het volgende:
Wat is er mis met de ternary operator? Daar zijn prima use cases voor, maar niet elk conditional statement leent zich ervoor.
Ik zie geen short open tag staan in zijn reactiequote:Op vrijdag 28 februari 2014 20:21 schreef papernote het volgende:
[..]
Ik denk dat CrashO doelde op de <?= shorthand.
Dat fixte de php tag van Fok ongewild automagisch voor mequote:Op vrijdag 28 februari 2014 20:27 schreef zoem het volgende:
[..]
Ik zie geen short open tag staan in zijn reactie
1 2 3 4 | <?= require 'test.php'; echo 1; |
Eh. Nee. Dat probeerden we hierboven ook allemaal uit te leggenquote:Op vrijdag 28 februari 2014 20:51 schreef Robuustheid het volgende:
Met PHP,
In plaats van <?php en ?>
Kun je ook slechts bij <?= houden.
In PHP heb je bij language constructs als require/include/reuquire_once/include_once (en ook echo, en nog een aantal) geen haakjes nodig. Je mag ze wel gebruiken, dan ziet het er iets meer uit als een gewone functie-aanroep.quote:Op vrijdag 28 februari 2014 19:42 schreef Robuustheid het volgende:
Waarom wordt er voor require_once/require/include haakjes gebruikt met daarin het bestand, terwijl het ook zonder haakjes kan?
Die talen kan ik ook wel. Het probleem is dat het niet zo geschikt is voor web development. Je hebt wel JSP, maar dat schijnt niet zo lekker te werken. C# kan i.c.m. ASP.net, maar ik heb een gruwelijke hekel aan Microsoft dus dat gaat 'em niet worden.quote:Op vrijdag 28 februari 2014 19:43 schreef Robuustheid het volgende:
[..]
PHP was in beginsel ook niet voor OOP gemaakt. Als je graag OOP wilt doen, dan zou ik m'n licht opsteken bij C++/Java/C#.
In views/templates is deze syntax echt superhandig. Sowieso zou ik bij het toewijzen van een waarde aan een variabele op basis van een conditie altijd de ternary operator gebruiken, dan heb je maar 1x de variabele nodig die je wilt vullen.quote:Op vrijdag 28 februari 2014 20:31 schreef CrashO het volgende:
[..]
Dat fixte de php tag van Fok ongewild automagisch voor me, stond er wel.
Maar ik bedoel ook op beide de shorthand (shorthand echo en shorthand if/else (met tarnary operator).
Wilde eigenlijk zoiets neerzetten.
<?=($ditIsTrue) ? 'dit was dus waar' : 'dit niet'?>
Python was oorspronkelijk niet zo gericht op OO, omdat de bedenker ervan de OO niet zo relevant vond. Maar het leent zich ook beter voor dan PHP. Python is sowieso een betere taal dan PHP, er zitten geen rare syntax-gewoonten in. En PHP is sterk gefragmenteerd met al die frameworks zoals Symfony, Zend, CodeIgniter, etc. Dat kost je meer tijd om te leren dan de taal zelf. Met Python zit je meestal vast aan Django, dus dat scheelt je naar verhouding minder tijd.quote:Op zaterdag 1 maart 2014 00:25 schreef robin007bond het volgende:
[..]
Die talen kan ik ook wel. Het probleem is dat het niet zo geschikt is voor web development. Je hebt wel JSP, maar dat schijnt niet zo lekker te werken. C# kan i.c.m. ASP.net, maar ik heb een gruwelijke hekel aan Microsoft dus dat gaat 'em niet worden.![]()
Misschien is Python i.c.m. Django dan nog het beste.
1 2 3 4 5 6 7 8 | <script> document.write("test") </script> <?php echo 0; ?> |
Waar komt die spatie vandaan? Die kan toch niet door Javascript geïmplementeerd zijn?quote:test 0
Python was juist gemaakt voor OO.quote:Op zaterdag 1 maart 2014 03:00 schreef Robuustheid het volgende:
[..]
Python was oorspronkelijk niet zo gericht op OO, omdat de bedenker ervan de OO niet zo relevant vond. Maar het leent zich ook beter voor dan PHP. Python is sowieso een betere taal dan PHP, er zitten geen rare syntax-gewoonten in. En PHP is sterk gefragmenteerd met al die frameworks zoals Symfony, Zend, CodeIgniter, etc. Dat kost je meer tijd om te leren dan de taal zelf. Met Python zit je meestal vast aan Django, dus dat scheelt je naar verhouding minder tijd.
Dat komt door de newline tussen </script> en <?php.quote:Op zaterdag 1 maart 2014 03:01 schreef Robuustheid het volgende:
Trouwens, een vraag:
[ code verwijderd ]
Output:
[..]
Waar komt die spatie vandaan? Die kan toch niet door Javascript geïmplementeerd zijn?
Over PHP is wel een shitload aan documentatie beschikbaar. Python wordt minder gebruikt.quote:Op zaterdag 1 maart 2014 03:00 schreef Robuustheid het volgende:
[..]
Python was oorspronkelijk niet zo gericht op OO, omdat de bedenker ervan de OO niet zo relevant vond. Maar het leent zich ook beter voor dan PHP. Python is sowieso een betere taal dan PHP, er zitten geen rare syntax-gewoonten in. En PHP is sterk gefragmenteerd met al die frameworks zoals Symfony, Zend, CodeIgniter, etc. Dat kost je meer tijd om te leren dan de taal zelf. Met Python zit je meestal vast aan Django, dus dat scheelt je naar verhouding minder tijd.
1 2 | RewriteEngine On RewriteRule ^\/index\/kids/(.*)$ http://www.domein.nl/index/school/$1 [L,R=301] |
1 | RewriteRule ^/index/kids/(.*)$ /index/school/$1 [R=301,L] |
got it. Was deze bijnaquote:Op zaterdag 1 maart 2014 16:16 schreef Diabox het volgende:
Is het niet gewoon:
[ code verwijderd ]
Spoilers: geen rewrite held, gebruik het nooit.
Ik zou dit eerlijk gezegd anders oplossenquote:Op zaterdag 1 maart 2014 15:56 schreef Swetsenegger het volgende:
Wat doe ik fout?
[ code verwijderd ]
Ik wil dat bijvoorbeeld
http://www.domein.nl/index/kids/Pink
wordt geredirect naar
http://www.domein.nl/index/school/Pink
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 | <form> <select name="courses" onchange="showCourse(this.value)"> <option value="">Select a year:</option> <option value="1">Year 1</option> <option value="2">year 2</option> <option value="3">Year 3</option> <option value="4">Year 4</option> </select> </form> <br> <div id="txtHint"><b>All courses of a year will be listed here.</b></div> <script> function showCourse(str) { if (str == "") { document.getElementById("txtHint").innerHTML = ""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("txtHint").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "getcourse.php?q=" + str, true); xmlhttp.send(); } </script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php require ('core/init.php'); $q = intval($_GET['q']); echo $q; $result = "SELECT `course_id`,`name` FROM `courses` WHERE `categoryId` = '" . $q . "'"; echo"<table border='1'> <tr> <td><b>Course id</b></td> <td><b>Course naam</b></td> </tr>"; while ($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['course_id'] . "</td>"; echo "<td>" . $row['name'] . "</td>"; echo "</tr>"; } echo "</table>"; ?> |
quote:You are passing in $query which is your sql string, when you need to pass in $result which is your db result object
Die $result is nu een string, die moet je nog door mysql_query() halen om een query op de database uit te voeren, en dan geeft hij een resource terug.quote:Op zaterdag 1 maart 2014 20:50 schreef superky het volgende:
Hoi een vraagje ik krijg een error betreft de volgende regel:
while ($row = mysql_fetch_array($result))
De error die vermeldt werd, is dit:
De error is dit:
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in C:\Users\yomac_000\Documents\GitHub\website\getcourse.php on line 15
Ik had al naar stackoverflow gekeken o.a. hiernaar:
link: http://stackoverflow.com/(...)esource-string-given
Maar de oplossing leek al heel erg op mijn eigen code.
Mochten jullie mijn code zien, dan staat hij hieronder:
courses.php
[ code verwijderd ]
getcourse.php
[ code verwijderd ]
Alvast bedankt voor uw antwoord
Ja klopt xD nu werkt het bedankt! Ja klopt ik werd al eerder aangesproken dat ik PDO moet gebruiken xD. Maarja als het werkt dan werkt het :pquote:Op zaterdag 1 maart 2014 20:53 schreef mstx het volgende:
[..]
Die $result is nu een string, die moet je nog door mysql_query() halen om een query op de database uit te voeren, en dan geeft hij een resource terug.
Onder deze lijn mensen die gaan vertellen dat je PDO moet gebruiken.
----------------------------------------------------------------------------------------------------------------
De vraag is alleen hoe lang nog, aangezien mysql_query() zeker verwijderd gaat worden uit PHP in toekomstige versies.quote:Op zaterdag 1 maart 2014 21:02 schreef superky het volgende:
[..]
Maarja als het werkt dan werkt het :p
Maar als de mysql_* functies eenmaal zijn verwijderd dan werkt het niet meer. En ja, dat zit wel in de planning, dat die functies verwijderd worden.quote:Op zaterdag 1 maart 2014 21:02 schreef superky het volgende:
[..]
Ja klopt xD nu werkt het bedankt! Ja klopt ik werd al eerder aangesproken dat ik PDO moet gebruiken xD. Maarja als het werkt dan werkt het :p
dit is een gevaarlijke gedachte als ontwikkelaar. Door dit soort geintjes worden veel dingen gehackt.quote:Op zaterdag 1 maart 2014 21:02 schreef superky het volgende:
[..]
Ja klopt xD nu werkt het bedankt! Ja klopt ik werd al eerder aangesproken dat ik PDO moet gebruiken xD. Maarja als het werkt dan werkt het :p
True. mysql_ functies zijn deprecated, en PDO is een goede oplossing, maar waar je ook voor kiest je moet altijd zorgen dat de user input veilig gemaakt is als je die richting een database (of iets anders) stuurt. Anders merk je vanzelf wanneer Bobby op bezoek is geweest.quote:Op zaterdag 1 maart 2014 22:43 schreef totalvamp het volgende:
[..]
dit is een gevaarlijke gedachte als ontwikkelaar. Door dit soort geintjes worden veel dingen gehackt.
Nalatigheid
Je kan ook nog gaan voor mysqli, die is (voorlopig) niet deprecated en kan alles wat PDO ook kan (behalve verbinden met een dozijn andere databases dan mysql en named parameters). Is nog sneller dan PDO ook kwa performance (ok, is maar ~2% ofzo, maar tochquote:Op zaterdag 1 maart 2014 23:04 schreef Light het volgende:
[..]
True. mysql_ functies zijn deprecated, en PDO is een goede oplossing, maar waar je ook voor kiest je moet altijd zorgen dat de user input veilig gemaakt is als je die richting een database (of iets anders) stuurt. Anders merk je vanzelf wanneer Bobby op bezoek is geweest.
die performance wordt weer driedubbel teniet gedaan omdat je zelf nog een wrapperclass moet schrijven om het praktisch bruikbaar te maken, wat je geheid niet zo efficiënt doet als de native wrapper pdo.quote:Op zondag 2 maart 2014 00:56 schreef CrashO het volgende:
[..]
Je kan ook nog gaan voor mysqli, die is (voorlopig) niet deprecated en kan alles wat PDO ook kan (behalve verbinden met een dozijn andere databases dan mysql en named parameters). Is nog sneller dan PDO ook kwa performance (ok, is maar ~2% ofzo, maar toch)
In 5.5 is het er al uit.quote:Op zaterdag 1 maart 2014 21:23 schreef Tijn het volgende:
[..]
De vraag is alleen hoe lang nog, aangezien mysql_query() zeker verwijderd gaat worden uit PHP in toekomstige versies.
Ik ben net overgestapt van Symfony naar Silex voor kleinere projecten.quote:Op zondag 2 maart 2014 17:46 schreef henrivo het volgende:
Moet zeggen, ik keek op tegen Symfony2 als een berg, maar 't is eigenlijk best een leuk framework
// Overgestapt vanaf ZF2
Nee, het is officieel deprecated. En het gaat worden verwijderd in een volgende versie. Dus je kunt het nog steeds gebruiken, maar je krijgt nu een melding dat je deprecated code gebruikt. En die melding kun je weer uitzetten, waardoor alles gewoon werkt. Je komt dan wel in de toekomst in de problemen.quote:
Dat overweeg ik nu ook moet ik zeggen, als soort van tussenstap (ivm het leerproces). Aan te raden? Of juist niet? Anyone?quote:Op zondag 2 maart 2014 22:03 schreef Maringo het volgende:
[..]
Ik ben net overgestapt van Symfony naar Silex voor kleinere projecten.
Oja.. Van mij hadden het er al wel uit mogen halen.quote:Op zondag 2 maart 2014 22:58 schreef Tijn het volgende:
[..]
Nee, je krijgt alleen een warning als je het gebruikt.
Niet als tussenstap, maar gewoon als framework voor de kleinere projecten. Scheelt een hoop ruimte en laadtijd.quote:Op zondag 2 maart 2014 23:23 schreef henrivo het volgende:
[..]
Dat overweeg ik nu ook moet ik zeggen, als soort van tussenstap (ivm het leerproces). Aan te raden? Of juist niet? Anyone?
Is dat echt iets waar je je sappel om moet maken? Bij "kleinere" projecten?quote:Op maandag 3 maart 2014 09:41 schreef Maringo het volgende:
[..]
Niet als tussenstap, maar gewoon als framework voor de kleinere projecten. Scheelt een hoop ruimte en laadtijd.
Het is ook niet het enige verschil. Maar er zit duidelijk verschil tussen laadtijd van pagina's van Symfony2 en Silex. Dus ja, dat is iets waar ik me druk om maak. Met grotere projecten krijg je dat ook wel met Silex, vanwege onder andere de hoeveelheid aan modules die gebruikt worden. En daarom dus het genoemde verschil tussen de kleinere en grotere projecten.quote:Op maandag 3 maart 2014 10:43 schreef KomtTijd... het volgende:
[..]
Is dat echt iets waar je je sappel om moet maken? Bij "kleinere" projecten?
Ik zou het gebruiken als het makkelijker/sneller ontwikkelen is (kan ik me wel voorstellen, met SF2 ben je relatief veel tijd kwijt aan "overhead" wat voor single-file projectjes inderdaad tegen je kan werken). De rest is vooral placebo.
De meeste databases zijn relatiedatabases; m.a.w. er worden tussen verschillende tabellen relaties gelegd door bijvoorbeeld IDs.quote:Op maandag 3 maart 2014 13:07 schreef DannyDeko het volgende:
Dan zal ik als eerst naar de table CLUB moeten gaan om te zoeken welke clubID Ajax heeft ->
SELECT clubID
FROM CLUB
WHERE NAME = 'Ajax'
De clubID is 1. Vervolgens kan ik dan in de participation table dit doen:
SELECT playerID
FROM PARTICIPATION
WHERE clubID = '1'
Dit geeft mij dan de lijst van alle spelers die voor club '1' gespeeld hebben.
Mijn eerste vraag is nu hoe ik er voor kan zorgen dat ik de clubID die ik in mijn 1e query heb opgevraagd door kan spelen naar mijn 2e query. Dus dat ik niet handmatig eerst de 1e query doe en daar '1' als uitkomst krijg en het vervolgens in de 2e query invul.
1 2 3 4 5 | SELECT c.clubID, p.playerID FROM CLUB c JOIN PARTICIPATION p ON p.clubID = c.clubID WHERE c.NAME = 'Ajax' |
1 | SELECT playerID FROM PARCIPATION WHERE clubID = (SELECT clubID FROM CLUB WHERE NAME = 'ajax'); |
Daar heb je joins voor.quote:Op maandag 3 maart 2014 13:17 schreef d4v1d het volgende:
Voor de eerste
[ code verwijderd ]
Is even uit mn hoofd zo. Zit nu mobiel.
quote:Op vrijdag 28 februari 2014 19:09 schreef CrashO het volgende:
[..]
$link binnen je functie `test` gaat niet werken. Die zit in een andere scope. Als je hem daar wilt gebruiken zal je hem moeten meegeven. (of OO gaan en een property binnen je class aanspreken)
Waarom werkt $link dan wel als het niet in een functie zit? Ik zie de logica er niet van.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.
Andere scope.quote:Op maandag 3 maart 2014 15:24 schreef terdege het volgende:
[..]
Waarom werkt $link dan wel als het niet in een functie zit? Ik zie de logica er niet van.
Wat is er dan mis met subquerys? Waarom zijn joins zoveel beter?quote:
Joins zijn technisch veel sneller, mits je constraints, indexes enzo goed zijn. Sub queries zijn soms debiel traag, zeker als je NOT IN enzo gaat gebruiken.quote:Op maandag 3 maart 2014 16:22 schreef d4v1d het volgende:
[..]
Wat is er dan mis met subquerys? Waarom zijn joins zoveel beter?
(Ik heb t zo gevonden ooit, en sindsdien zo gedaan:@)
Joins zijn sneller en subqueries lezen lelijk (al ken ik genoeg mensen die het juist andersom vinden).quote:Op maandag 3 maart 2014 16:22 schreef d4v1d het volgende:
[..]
Wat is er dan mis met subquerys? Waarom zijn joins zoveel beter?
(Ik heb t zo gevonden ooit, en sindsdien zo gedaan:@)
1) niet waar en 2) subjectief. JOINs zijn niet per definitie sneller, dat is van talloze factoren afhankelijk.quote:Op maandag 3 maart 2014 16:54 schreef Diabox het volgende:
[..]
Joins zijn sneller en subqueries lezen lelijk (al ken ik genoeg mensen die het juist andersom vinden).
JOINs zijn wel beter te optimaliseren voor MySQL. Bij een subquery moet eerst die subquery worden gedaan voordat de hoofdquery uitgevoerd kan worden, terwijl MySQL bij een JOIN zelf kan bepalen welke tabel eerst gefilterd wordt. Goede indexes zijn uiteraard belangrijk.quote:Op maandag 3 maart 2014 19:47 schreef papernote het volgende:
[..]
1) niet waar en 2) subjectief. JOINs zijn niet per definitie sneller, dat is van talloze factoren afhankelijk.
Als jij niet gehandicapt je queries aan het schrijven bent zijn joins doorgaans sneller. En fantastische constatering dat het tweede subjectief is, volgens mij liet ik dat ook al doorschemeren in m'n post en lijkt me dat ook duidelijk.quote:Op maandag 3 maart 2014 19:47 schreef papernote het volgende:
[..]
1) niet waar en 2) subjectief. JOINs zijn niet per definitie sneller, dat is van talloze factoren afhankelijk.
ok, ok, joins zijn slechts in 99,9% van de gevallen aanzienlijk sneller.quote:Op maandag 3 maart 2014 19:47 schreef papernote het volgende:
[..]
1) niet waar en 2) subjectief. JOINs zijn niet per definitie sneller, dat is van talloze factoren afhankelijk.
Niemand die een opmerking? Heb nog maar tot de 8ste om te beslissen?quote:Op maandag 3 maart 2014 08:15 schreef Darkomen het volgende:
Klein vraagje, wat vinden de Zend certified mensen van deze cursus:
http://www.eduvision.nl/c(...)mpaign=php%20dag%205
Ben je al bekend met ZF? Als ik zo de omschrijving van de cursus lees zijn het ook dingen die je jezelf kunt aanleren door veel uit te proberen en de tutorial te volgen. Maar als je, zoals de omschrijving ook zegt, een "vliegende start" wilt is het wellicht een goed idee.quote:Op dinsdag 4 maart 2014 10:30 schreef Darkomen het volgende:
[..]
Niemand die een opmerking? Heb nog maar tot de 8ste om te beslissen?
bedankt voor je antwoord, nee helaas nog geen ervaring met ZF, wel codeigniter framework.quote:Op dinsdag 4 maart 2014 10:45 schreef papernote het volgende:
[..]
Ben je al bekend met ZF? Als ik zo de omschrijving van de cursus lees zijn het ook dingen die je jezelf kunt aanleren door veel uit te proberen en de tutorial te volgen. Maar als je, zoals de omschrijving ook zegt, een "vliegende start" wilt is het wellicht een goed idee.
Thnxquote:Op dinsdag 4 maart 2014 10:11 schreef Aether het volgende:
Misschien handig: SQL Fiddle.
Keuze uit MySQL, SQLite, PostgreSQL, Oracle, MSSQL.
Maar dan zul je vast al wel ervaring hebben met alle concepten (MVC ontwerppatroon, databases, authenticatie en autorisatie, caching, zoeken, webservices, JavaScript integratie en internationalisatie). Alleen dan niet in ZF maar in CI. Ik weet niet of het dan nog zo'n toegevoegde waarde heeft t.o.v. het zelf even aanleren middels de documentatie.quote:Op dinsdag 4 maart 2014 11:04 schreef Darkomen het volgende:
[..]
bedankt voor je antwoord, nee helaas nog geen ervaring met ZF, wel codeigniter framework.
Het voordeel van zo'n cursus is dat je na afloop kunt gaan zwaaien met een papiertje waarop staat dat je het geheel snapt(e).quote:Op dinsdag 4 maart 2014 20:01 schreef papernote het volgende:
[..]
Maar dan zul je vast al wel ervaring hebben met alle concepten (MVC ontwerppatroon, databases, authenticatie en autorisatie, caching, zoeken, webservices, JavaScript integratie en internationalisatie). Alleen dan niet in ZF maar in CI. Ik weet niet of het dan nog zo'n toegevoegde waarde heeft t.o.v. het zelf even aanleren middels de documentatie.
Als alle concepten je ook nog onbekend voor komen, dan is het wellicht wel goed.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |