Het zijn altijd de kleine detailsquote:Op dinsdag 1 december 2015 22:02 schreef Aether het volgende:
[..]
array_values geeft een array terug. Als je het resultaat gebruikt zou je een element 0 en 1 moeten hebben.
Ik helemaal blij...quote:
1 2 3 4 5 | <?php function def($a, $b) { return ($a) ? $a : $b; } ?> |
1 | <?php echo def($foo, $bar); ?> |
Of je voegt even een eigen operator toe.quote:Op woensdag 2 december 2015 16:26 schreef Tijn het volgende:
Je kunt er wel vrij makkelijk zelf een functie voor klussen natuurlijk.
[ code verwijderd ]
[ 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.Dit is de code:
Ik heb mijn mail adres in de HTML en PHP code even verandert naar mail@email.nl.SPOILER: HTMLOm 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.SPOILER: MailHandler.phpOm 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.SPOILER: TMForm.jsOm 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.Bij voorbaat dank!
[ Bericht 5% gewijzigd door Cikx op 07-12-2015 01:19:45 ]Post gewoon je code en/of een link naar je testsetup, die plaatjes zijn onleesbaar.
Tevens moet je gewoon beginnen met debuggen. Zoek uit waar je script op vastloopt. Wordt het client-side script goed doorlopen (gebruik je JS console!)? Wordt de request naar de server uitgevoerd? Worden de juiste parameters hierbij meegestuurd? Krijg je een foutmelding terug? Zo nee, staat display_errors en error_reporting hoog genoeg? Zo ja, zorg dat je de foutmeldingen begrijpt (googlen!)... Etc etc etc.
Scripts werken (bijna) nooit in één keer goed, zonder bovenstaande stappen goed onder de knie te krijgen kom je nergens.maandag 7 december 2015 @ 01:24:31 #159Cikx
Heb de de plaatjes vervangen door de code.quote:Op zondag 6 december 2015 22:53 schreef KomtTijd... het volgende:
Post gewoon je code en/of een link naar je testsetup, die plaatjes zijn onleesbaar.
Tevens moet je gewoon beginnen met debuggen. Zoek uit waar je script op vastloopt. Wordt het client-side script goed doorlopen (gebruik je JS console!)? Wordt de request naar de server uitgevoerd? Worden de juiste parameters hierbij meegestuurd? Krijg je een foutmelding terug? Zo nee, staat display_errors en error_reporting hoog genoeg? Zo ja, zorg dat je de foutmeldingen begrijpt (googlen!)... Etc etc etc.
Scripts werken (bijna) nooit in één keer goed, zonder bovenstaande stappen goed onder de knie te krijgen kom je nergens.
Heb overigens geprobeerd te doen wat je zei en dit keer staat er wel succes! wanneer ik een mail stuur, het komt alleen niet aan. Ik krijg verder ook geen error melding bij de JS console. Misschien dat het aan die SMTP server settings ligt.. Ik weet niet goed wat ik daar nou mee aanmoet.Verder met debuggen dus. Zorg dat je zeker weet dat je php error reporting aan en hoog genoeg staat, en kijk hoe ver je script wél komt door af-en-toe iets te echo'en.vrijdag 11 december 2015 @ 13:05:09 #161Sitethief
Fulltime FlapdrolCollega's die Many-to-Many in MySQL niet snappen...
Gebruikers zijn gekoppeld aan objecten, gebruikers kunnen meerdere objecten hebben. Dus dit gaat via een koppeltabel.
Een gebruiker heeft binnen een object op drie verschillende onderdelen een van 3 verschillende rechtenniveau's
Had die collega van mij gewoon voor ieder onderdeel én rechteniveau een aparte entry in die koppeltabel. Waardoor een gebruiker dus in maar liefst 9 entries aan hetzelfde object gekoppeld was. En ik kreeg hem maar niet aan het verstand waarom dat niet handig is...Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht >:)Boze_Appel
Vrij FruitHelaas maar al te waar voor de meeste kaartenbakken databases.quote:Op vrijdag 11 december 2015 14:58 schreef KomtTijd... het volgende:
Jamaar een database werkt toch net als een spreadsheet?Carpe Libertatemvrijdag 11 december 2015 @ 16:03:27 #164Sitethief
Fulltime Flapdrolquote:Op vrijdag 11 december 2015 14:58 schreef KomtTijd... het volgende:
Jamaar een database werkt toch net als een spreadsheet?
Ik wijt het aan onervarenheid, hij werkt nu net 6 maanden als Dev bij ons. Maar ja, dan bied ik mijn eigen ervaringen aan zodat hij niet in dezelfde valkuilen loopt en dan is meneer te koppig om van mij aan te nemen dat dit later problemen oplevert...
Tis jammer de de tijd en ruimte er nu niet is om hem zelf die valkuil in en uit te laten gaan.Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht >:)vrijdag 11 december 2015 @ 16:16:36 #165Monolith
geniaalAch, zo'n Cassandra of Mongo database is ook niet veel meer dan een veredelde kaartenbak.quote:Op vrijdag 11 december 2015 15:14 schreef Boze_Appel het volgende:
[..]
Helaas maar al te waar voor de meeste kaartenbakken databases.Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."quote:Op zondag 6 december 2015 17:48 schreef Cikx het volgende:
Hallo!
Ik opende net een topic met de vraag of iemand misschien wist hoe ik mijn contact formulier werkend kan krijgen en toen werd ik doorverwezen naar dit topic, dus zal mijn post even ordinair kopiëren :
Ik moet voor mijn studie mijn eerste website maken met html en css. Ik heb het mezelf lekker makkelijk gemaakt door een template te gebruiken, maar nu blijk ik mijn contact formulier niet werkend te krijgen.
Ik heb een contact.html, een MailHandler.php, een libmail.php en een TMForm.js bestand die er volgens mij allemaal mee te maken hebben.
Wanneer ik een mail wil versturen, verschijnt er een gifje die laat zien dat die aan het laden is, maar in plaats van dat er "succes" verschijnt, blijft het voor eeuwig laden. Ik ontvang ook geen mail verder. Hopelijk is er een Fokker die me uit de brand kan helpen.
Zo ziet het formulier eruit voor en nadat ik een mail stuur: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.Dit is de code:
Ik heb mijn mail adres in de HTML en PHP code even verandert naar mail@email.nl.SPOILER: HTMLOm 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.SPOILER: MailHandler.phpOm 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.Je hebt het jezelf al makkelijk gemaakt door een template te pakken, en het laatste stukje wat je zelf moet doen vraag je nu hier?SPOILER: TMForm.jsOm 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.Bij voorbaat dank!vrijdag 11 december 2015 @ 21:45:21 #168Cikx
Het is nou eenmaal mijn eerste site en het werd sterk aangeraden om een template te gebruiken, aangezien de site voornamelijk wordt beoordeeld op de toegankelijkheid en hoe het eruit ziet. Overigens heb ik toch wel zo'n 15-20 uur aan de site zitten sleutelen om uit te vogelen hoe alles werkt en om het naar wens te laten functioneren. Dus het is zeker niet zo dat dit het enige is wat ik hoef te doen en het uit luiigheid hier maar vraag, mocht dat zo overkomen. De PHP-code kost me nou eenmaal wat moeite om onder de knie te krijgen en na flink wat gegoogled te hebben leek het me handiger om de specifieke vraag hier maar te stellen in plaats van mogelijk nog tot in den treure naar oplossingen te zoeken, zeker als het betrekkelijk simpel is voor jullie.quote:Op vrijdag 11 december 2015 20:53 schreef TwenteFC het volgende:
[..]
Je hebt het jezelf al makkelijk gemaakt door een template te pakken, en het laatste stukje wat je zelf moet doen vraag je nu hier?
Maar goed, heb veel gehad aan de tips om de foutmeldingen op te sporen. Het blijkt nu zo te zijn dat ik een host nodig heb voor het mailverkeer. M'n tutor heeft echter pas geleden laten weten dat PHP zaken zoals zoekbalken of contact formulieren niet nodig zijn. Ik ben dus maar van plan om eerst de rest helemaal uit te werken en mocht ik nog tijd over hebben dan ga ik er maar weer voor zitten. Overigens heeft een andere Fokker zijn hulp aangeboden dus dat is erg tof.Ah kijk dat wist ik niet, zoeken en vragen is ook een groot onderdeel van ontwikkelen, tot op een zekere hoogte, dus dat neem ik je niet kwalijk hoor .quote:Op vrijdag 11 december 2015 21:45 schreef Cikx het volgende:
[..]
Het is nou eenmaal mijn eerste site en het werd sterk aangeraden om een template te gebruiken, aangezien de site voornamelijk wordt beoordeeld op de toegankelijkheid en hoe het eruit ziet. Overigens heb ik toch wel zo'n 15-20 uur aan de site zitten sleutelen om uit te vogelen hoe alles werkt en om het naar wens te laten functioneren. Dus het is zeker niet zo dat dit het enige is wat ik hoef te doen en het uit luiigheid hier maar vraag, mocht dat zo overkomen. De PHP-code kost me nou eenmaal wat moeite om onder de knie te krijgen en na flink wat gegoogled te hebben leek het me handiger om de specifieke vraag hier maar te stellen in plaats van mogelijk nog tot in den treure naar oplossingen te zoeken, zeker als het betrekkelijk simpel is voor jullie.
Maar goed, heb veel gehad aan de tips om de foutmeldingen op te sporen. Het blijkt nu zo te zijn dat ik een host nodig heb voor het mailverkeer. M'n tutor heeft echter pas geleden laten weten dat PHP zaken zoals zoekbalken of contact formulieren niet nodig zijn. Ik ben dus maar van plan om eerst de rest helemaal uit te werken en mocht ik nog tijd over hebben dan ga ik er maar weer voor zitten. Overigens heeft een andere Fokker zijn hulp aangeboden dus dat is erg tof.Goed dat je dat inmiddels zelf uitgevonden hebt! En dat je het hier laat weten, vinden de mensen die je helpen ook weer leuk om te horenquote:Op vrijdag 11 december 2015 21:45 schreef Cikx het volgende:
[..]
Maar goed, heb veel gehad aan de tips om de foutmeldingen op te sporen. Het blijkt nu zo te zijn dat ik een host nodig heb voor het mailverkeer.Swetsenegger
Egocentrische NarcistIk loop even klem, ik denk dat ik een subquery moet gaan bouwen, maar even controleren met jullie
Ik heb een UPDATE query waarbij de WHERE clause een rijtje ID's is die uit een formulier submit komt:
1
2
3
4
5<?php
$productIDs = array_values($_POST['assigned']);
$query = "UPDATE products SET seasonAction=1 WHERE id IN (".implode(', ',$productIDs).")";
$result=mysql_query($query);
?>
Dat werkt uiteraard prima, maar nu wil een volgorde meegeven tijdens deze update actie. Nu dacht ik slim te zijn door gewoon de array key mee te geven zodat ik ze later op dezelfde volgorde kan uitlezen, maar... Hoe krijg ik in deze query bij elk individueel product ID de array key weggeschreven?
1
2
3
4
5
6<?php
$productIDs = array_values($_POST['assigned']);
$priority = array_keys($_POST['assigned']);
$query = "UPDATE products SET seasonAction=1, priority = ".en wat nu hier?." WHERE id IN (".implode(', ',$productIDs).")";
$result=mysql_query($query);
?>
Kortom, ik krijg een POST binnen met bv de volgende array
[code]
[0] => [338], [1] => [256], [2] => [479]
Dan wil ik dus bij alle 3 de productID's het veld seasonAction op 1 zetten en bij productID 338, priority op 0. Bij productID 256, priority op 1 en bij productID 479, priority op 2.
[ Bericht 2% gewijzigd door Swetsenegger op 16-12-2015 14:11:46 ]papernote
Een echte.Voor zover ik weet dan dat alleen:
1) door meerdere UPDATE queries
2) één ingewikkelde query met CASE .. WHEN .. THEN, waarbij je een WHEN hebt voor elk productSchuimpje... mijn liefste. Verlaat mij nimmer weer...Dat kan niet in een enkele UPDATE. Dit is alleen mogelijk door de UPDATE voor iedere combinatie opnieuw uit te voeren via een foreach.quote:Op woensdag 16 december 2015 13:59 schreef Swetsenegger het volgende:
Ik loop even klem, ik denk dat ik een subquery moet gaan bouwen, maar even controleren met jullie
Ik heb een UPDATE query waarbij de WHERE clause een rijtje ID's is die uit een formulier submit komt:
[ code verwijderd ]
Dat werkt uiteraard prima, maar nu wil een volgorde meegeven tijdens deze update actie. Nu dacht ik slim te zijn door gewoon de array key mee te geven zodat ik ze later op dezelfde volgorde kan uitlezen, maar... Hoe krijg ik in deze query bij elk individueel product ID de array key weggeschreven?
[ code verwijderd ]
Het is wel via een andere constructie te doen maar dat lijkt me hier wat overkill.
Zie: http://stackoverflow.com/questions/3432/multiple-updates-in-mysqlWhen the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.En wat als de volgende post een bepaald product_id niet meer bevat en de waarde hiervan nog wel op 9 staat bijvoorbeeld? Of post je altijd alle producten?Swetsenegger
Egocentrische NarcistBij de verwerking van de post reset ik nu eerst alle seasonActions naar 0, daarna ga ik de nieuwe zetten.quote:Op woensdag 16 december 2015 14:20 schreef TwenteFC het volgende:
En wat als de volgende post een bepaald product_id niet meer bevat en de waarde hiervan nog wel op 9 staat bijvoorbeeld? Of post je altijd alle producten?
Aan de voorkant haal ik alleen de combinatie op, dus alle producten waarbij seasonItem op 1 staat en dan wil ik ze dus op volgorde van priority tonen. Nu worden ze gewoon ascending op basis van product ID getoond.papernote
Een echte.Ik zou een transactie bouwen en daarin alle benodigde queries uitvoeren.Schuimpje... mijn liefste. Verlaat mij nimmer weer...Krijgen deze seasonactions altijd een priority of hoeft dat niet? Dus het kan voorkomen dat je bijvoorbeeld gewoon 3 speciale producten per se bovenaan wilt zetten en de rest maakt niet?quote:Op woensdag 16 december 2015 14:24 schreef Swetsenegger het volgende:
[..]
Bij de verwerking van de post reset ik nu eerst alle seasonActions naar 0, daarna ga ik de nieuwe zetten.
Aan de voorkant haal ik alleen de combinatie op, dus alle producten waarbij seasonItem op 1 staat en dan wil ik ze dus op volgorde van priority tonen. Nu worden ze gewoon ascending op basis van product ID getoond.Swetsenegger
Egocentrische NarcistAllemaal die gepost worden.quote:Op woensdag 16 december 2015 14:41 schreef TwenteFC het volgende:
[..]
Krijgen deze seasonactions altijd een priority of hoeft dat niet? Dus het kan voorkomen dat je bijvoorbeeld gewoon 3 speciale producten per se bovenaan wilt zetten en de rest maakt niet?Oké dan zou ik het denk ik voor mezelf niet moeilijker maken dan het hoeft te zijn, en de sorteer volgorde gewoon in een aparte tabel gooien. en tijdens het ophalen van deze producten hier op sorteren.quote:Op woensdag 16 december 2015 14:46 schreef Swetsenegger het volgende:
[..]
Allemaal die gepost worden.
Wat ook nog wel zou kunnen, wanneer je van te voren toch al van alles gaat updaten is de sorteervolgorde op 0 zetten voor alles en dmv een batch insert tijdens de ON DUPLICATE KEY enkel de sorteervolgorde en de seasonAction aanpassen.
Maar dit is wel wat gevaarlijk, mocht het product niet bestaan.Swetsenegger
Egocentrische NarcistHet zit er al in met een foreach. In plaats van 1 query heb ik nu natuurlijk de hoeveelheid queries van producten die gepost worden, maar heel spannend is het niet.quote:Op woensdag 16 december 2015 14:57 schreef TwenteFC het volgende:
[..]
Oké dan zou ik het denk ik voor mezelf niet moeilijker maken dan het hoeft te zijn, en de sorteer volgorde gewoon in een aparte tabel gooien. en tijdens het ophalen van deze producten hier op sorteren.
Wat ook nog wel zou kunnen, wanneer je van te voren toch al van alles gaat updaten is de sorteervolgorde op 0 zetten voor alles en dmv een batch insert tijdens de ON DUPLICATE KEY enkel de sorteervolgorde en de seasonAction aanpassen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<?php
//Set all previous items to NULL to disconnect from frontpage and priority. Then set new items
if($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['submitSeasonAction'])){
$query="UPDATE products SET seasonAction=0, priority=NULL";
$result=mysql_query($query);
if(isset($_POST['assigned']) && count($_POST['assigned'])!=0){
foreach ($_POST['assigned'] as $key => $value) {
$key ++;
$query = "UPDATE products SET seasonAction=1, priority=".$key." WHERE id=".$value;
$result=mysql_query($query);
}
}
header("location:".$_SERVER['PHP_SELF']."?actie=seizoensActie");
}
?>Dan nog even iets anders, is dit een testprojectje of iets wat daadwerkelijk in productie gaat komen? Ik zou persoonlijk als ik jou was eens gaan kijken naar PDO/mysqli.quote:Op woensdag 16 december 2015 15:00 schreef Swetsenegger het volgende:
[..]
Het zit er al in met een foreach. In plaats van 1 query heb ik nu natuurlijk de hoeveelheid queries van producten die gepost worden, maar heel spannend is het niet.
[ code verwijderd ]Swetsenegger
Egocentrische NarcistJa moet ik nog omzetten inderdaad!quote:Op woensdag 16 december 2015 15:04 schreef TwenteFC het volgende:
[..]
Dan nog even iets anders, is dit een testprojectje of iets wat daadwerkelijk in productie gaat komen? Ik zou persoonlijk als ik jou was eens gaan kijken naar PDO/mysqli.En vergeten dat mysql_query bestaatquote:Op woensdag 16 december 2015 15:05 schreef Swetsenegger het volgende:
[..]
Ja moet ik nog omzetten inderdaad!Swetsenegger
Egocentrische NarcistDe voorkant van deze site heb ik al omgezet naar mysqliquote:Op woensdag 16 december 2015 15:06 schreef TwenteFC het volgende:
[..]
En vergeten dat mysql_query bestaatGebruik je composer? Je kan desnoods een package pakken welke een wrapper is hiervoor.quote:Op woensdag 16 december 2015 15:11 schreef Swetsenegger het volgende:
[..]
De voorkant van deze site heb ik al omgezet naar mysqli
https://github.com/illuminate/database
Is misschien even een uurtje werk, maar vanaf dan hoef jij jezelf er ook niet meer druk om te maken. Naast deze zijn er ook genoeg anderen om uit te kiezen.
https://packagist.org/Als je toch bezig bent, waarom dan niet gewoon gelijk makkelijk doen en PDO gebruiken?quote:Op woensdag 16 december 2015 15:11 schreef Swetsenegger het volgende:
[..]
De voorkant van deze site heb ik al omgezet naar mysqli
Edit: Of een ORM idd, ben zelf van de Doctrine.
Edit2: En herschrijven moet je sowieso want wat je hier aan code geplakt hebt zit barstensvol SQL injectie mogelijkheden.Swetsenegger
Egocentrische NarcistDit is backend waar 1 gebruiker toegang heeft.quote:Op woensdag 16 december 2015 16:29 schreef KomtTijd... het volgende:
[..]
Als je toch bezig bent, waarom dan niet gewoon gelijk makkelijk doen en PDO gebruiken?
Edit: Of een ORM idd, ben zelf van de Doctrine.
Edit2: En herschrijven moet je sowieso want wat je hier aan code geplakt hebt zit barstensvol SQL injectie mogelijkheden.Maar als je login/authenticatie script er ook zo uit ziet. Daarnaast ben jij jezelf nu ook aan het belemmeren wat betreft het updaten van jouw PHP versie in de toekomst, in PHP7 bijvoorbeeld bestaat de hele mysql_query niet meer.quote:Op woensdag 16 december 2015 17:09 schreef Swetsenegger het volgende:
[..]
Dit is backend waar 1 gebruiker toegang heeft.
Het zijn uiteindelijk maar goed bedoelde tips natuurlijk, wat en of je er iets mee gaat doen is aan jou.Swetsenegger
Egocentrische NarcistNee dusquote:Op woensdag 16 december 2015 17:11 schreef TwenteFC het volgende:
[..]
Maar als je login/authenticatie script er ook zo uit ziet.Ik ga het ook vervangen. Zoals gezegd is het grootste deel al klaar. Ik heb 4 back-end pagina's die ik moet aanpassen.quote:Daarnaast ben jij jezelf nu ook aan het belemmeren wat betreft het updaten van jouw PHP versie in de toekomst, in PHP7 bijvoorbeeld bestaat de hele mysql_query niet meer.
Het zijn uiteindelijk maar goed bedoelde tips natuurlijk, wat en of je er iets mee gaat doen is aan jou.Swetsenegger
Egocentrische NarcistDus geen zorgen jongens. Ik ben niet de beste programmeur, maar procedureel kan ik aardig uit de voeten.
Ik sanitize m'n input, ik preg match inkomende email adressen, ik intval als ik een integer verwacht, ik mysqli_real_escape_string inkomende vars, ik sla passwords gehashed en gesalt op....
Ik ben niet de beste programmeur, maar ik lees hier al een tijdje mee. Sterker nog.... Ik ben deze reeks begonnen
[ Bericht 7% gewijzigd door Swetsenegger op 16-12-2015 17:44:03 ]Ser_Ciappelletto
Semi-professionele SJWquote:Op donderdag 17 december 2015 17:52 schreef Ser_Ciappelletto het volgende:
Garpig en revelant:
[ afbeelding ]zondag 20 december 2015 @ 19:10:08 #194n8n
Pragmatischphp maakt onderscheid tussen strings in enkele en dubbele quotes. Kan je in een functie checken of een parameter met enkele of dubbele quotes is ingevoerd?
1
2
3
4
5<?php
function quote($string){
return '$string heeft X quotes'
}
?>
waar X ", of ' kan zijn“Specialization is for insects”.—Robert HeinleinNattekat
De roze zeekatStaan ze in de string zelf? Dan is het te achterhalen, anders niet (of er is een hele omslachtige manier waar ik geen weet van heb)quote:Op zondag 20 december 2015 19:10 schreef n8n het volgende:
php maakt onderscheid tussen strings in enkele en dubbele quotes. Kan je in een functie checken of een parameter met enkele of dubbele quotes is ingevoerd?
[ code verwijderd ]
waar X ", of ' kan zijnIk begrijp niet helemaal wat je wilt.quote:Op zondag 20 december 2015 19:10 schreef n8n het volgende:
php maakt onderscheid tussen strings in enkele en dubbele quotes. Kan je in een functie checken of een parameter met enkele of dubbele quotes is ingevoerd?
[ code verwijderd ]
waar X ", of ' kan zijn
Je wilt weten hoe $string was opgebouwd?When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.zondag 20 december 2015 @ 19:47:59 #197Tijn
Powered by MS PaintVolgens mij heeft PHP maar een string type. Of je zo'n string met enkele of dubbele quotes aanmaakt, heeft invloed op variabelen die in de string worden geparsed of niet, maar daarna wordt de string opgeslagen als het enige type string dat PHP kent.quote:Op zondag 20 december 2015 19:10 schreef n8n het volgende:
php maakt onderscheid tussen strings in enkele en dubbele quotes.zondag 20 december 2015 @ 20:21:01 #198n8n
Pragmatischquote:Op zondag 20 december 2015 19:24 schreef Nattekat het volgende:
[..]
Staan ze in de string zelf? Dan is het te achterhalen, anders niet (of er is een hele omslachtige manier waar ik geen weet van heb)Ok duidelijkquote:Op zondag 20 december 2015 19:47 schreef Tijn het volgende:
[..]
Volgens mij heeft PHP maar een string type. Of je zo'n string met enkele of dubbele quotes aanmaakt, heeft invloed op variabelen die in de string worden geparsed of niet, maar daarna wordt de string opgeslagen als het enige type string dat PHP kent.
vIk wilde weten of quote("string") of quote('string') werd aangeroepen.quote:Op zondag 20 december 2015 19:26 schreef Aether het volgende:
[..]
Ik begrijp niet helemaal wat je wilt.
Je wilt weten hoe $string was opgebouwd?“Specialization is for insects”.—Robert HeinleinDat kun je niet achterhalen.quote:Op zondag 20 december 2015 20:21 schreef n8n het volgende:
[..]
[..]
Ok duidelijk
v
[..]
Ik wilde weten of quote("string") of quote('string') werd aangeroepen.
De functie die aangeroepen wordt krijgt "een" string binnen en weet niet hoe of waar deze vandaan komt (bijvoorbeeld uit een database of bestand).When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.zondag 20 december 2015 @ 20:34:45 #201n8n
Pragmatischik wilde enkele quotes als key-name laten fungeren binnen de functie, en een dubbele quotes als string.quote:Op zondag 20 december 2015 20:26 schreef Swetsenegger het volgende:
Wat probeer je precies op te lossen dan?
$value = ( 'string' ? $array['string'] : "string" ); kinda“Specialization is for insects”.—Robert Heinleinzondag 20 december 2015 @ 20:35:20 #202n8n
PragmatischJa dacht ik al, net als dat je geen functie kan doorgeven maar alleen het resultaat. Helaas.quote:Op zondag 20 december 2015 20:29 schreef Aether het volgende:
[..]
Dat kun je niet achterhalen.
De functie die aangeroepen wordt krijgt "een" string binnen en weet niet hoe of waar deze vandaan komt (bijvoorbeeld uit een database of bestand).“Specialization is for insects”.—Robert Heinleinzondag 20 december 2015 @ 23:40:03 #203Light
Niet helemaal waar, het is wel mogelijk om een functie door te geven aan een andere functie. Maar de manier waarop ziet er niet uit, en 't is geen mooie optie. Verder is er geen functie om te bepalen of een string als "string" of als 'string' gedefinieerd is. Er zit ook geen verschil in die definities, behalve bij het aanmaken van de string zelf.quote:Op zondag 20 december 2015 20:35 schreef n8n het volgende:
[..]
Ja dacht ik al, net als dat je geen functie kan doorgeven maar alleen het resultaat. Helaas.maandag 21 december 2015 @ 11:55:43 #204Ser_Ciappelletto
Semi-professionele SJWIs er geen manier om daarvoor wat gewoonlijk een error zou zijn te gebruiken? Je invoerveld/script zodanig samenstellen met wat gewoonlijk een syntax-error zou geven, dat invoer met een " een bepaalde output geeft en invoer met een ' een andere.
Naïef voorbeeld dat allicht niet werkt om een idee te geven:
1
2
3
4
5
6
7
8
9<script>
a = document.getElementById(id);
b = ' " ' + a + ' " ';
if (b) {
//met enkele aanhalingstekens (want b = " ' value ' " --> geen error)
} else {
// met dubbele aanhalingstekens (want b = " " value " " --> wel error)
}
</script>
It's not an error, it's a feature.maandag 21 december 2015 @ 12:11:53 #205n8n
Pragmatischdit is js lieverd (al ga ik deze functie later ook daarmee schrijven). Ik heb als 'hack' al geprobeerd een regex door te sturen maar ook dat moet als string. Ik zal zo even de functie neerplempen.quote:Op maandag 21 december 2015 11:55 schreef Ser_Ciappelletto het volgende:
Is er geen manier om daarvoor wat gewoonlijk een error zou zijn te gebruiken? Je invoerveld/script zodanig samenstellen met wat gewoonlijk een syntax-error zou geven, dat invoer met een " een bepaalde output geeft en invoer met een ' een andere.
Naïef voorbeeld dat allicht niet werkt om een idee te geven:
[ code verwijderd ]
It's not an error, it's a feature.
En light idd, call_user_func() is niet echt ideaal in mijn use-case.“Specialization is for insects”.—Robert Heinleinmaandag 21 december 2015 @ 12:13:41 #206Ser_Ciappelletto
Semi-professionele SJWJa, ik weet dat het JS is, maar zoals gezegd werkt dat niet met PHP omdat die strings niet opslaat met de eigen aanhalingstekens. Je kunt dat altijd ajax-en.quote:Op maandag 21 december 2015 12:11 schreef n8n het volgende:
[..]
dit is js lieverd (al ga ik deze functie later ook daarmee schrijven). Ik heb als 'hack' al geprobeerd een regex door te sturen maar ook dat moet als string. Ik zal zo even de functie neerplempen.
Ik weet in ieder geval dat ik het al vaak genoeg verneukt heb door input met de verkeerde aanhalingstekens te bewerken, dus ik dacht: je kunt daar wellicht gebruik van maken.maandag 21 december 2015 @ 13:13:19 #207n8n
PragmatischLaat het echte probleem wel ff zien met de functie. Het gaat voornamelijk om el(), de andere zijn helper functies. html() is om een lijst van element uit te poepen, attribute om een attribute te maken, en find() om waarden uit de optionele $item te vinden.
De PHP
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<?php
// create elements from array
function el(array $element = null, $item = null){
foreach ($element as $key => $value){
if ($key === 0){ $tag = $value; } // set tag
elseif (is_numeric($key)){ // text content and/or html element
if (gettype($value) === 'string' || is_numeric($value)) $content.= $value;
else $content.= el($value, $data);
}
else $attributes.= attribute($key, $value, $item); // element attributes
}
// create html element and set attributes if any
if (!$attributes) $result.= '<'.$tag.'>';
else $result.= '<'.$tag.' '.trim($attributes).'>';
// add contents if any and close element
if ($content) $result.= $content.'</'.$tag.'>';
return $result;
}
// create element list from $data
function html(array $element, array $data = null){
if (!$data) $result.= el($element);
else foreach($data as $item){
$result.= el($element, $item);
}
return $result;
}
// create element attribute
function attribute($name, $value, $item = null){
if ($value === true) return ' '.$name;
if (gettype($value) === 'array') $value = find($value, $item);
if (gettype($value) === 'string' || is_numeric($value)) {
$quote = (preg_match('/^\w+$/', $value) ? null : '"');
return ' '.$name.'='.$quote.$value.$quote;
}
}
// check for key in element $item array
function find($keys, array $item = null){
if ($item && $match = $item[$keys[0]]) return $match;
elseif ($item) $keys[0] = null;
foreach($keys as $key => $value){
if ($value) return $value;
}
}
?>
De templating werkt met de data uit arrays.
Dit:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<?php
// <header class=test><h1>Title</h1></header>
echo el(['header', 'class'=>'test',
['h1', "Title"]
]);
// <p>Text</p>
echo el(['p', "Text"]);
// data for the next template
$pages = [
['path'=>"one", 'name'=>"Page One",'title'=>"A page" ],
['path'=>"two", 'name'=>"Page Two", 'alt'=>"Another page" ]
];
// <ul><li><a href=one title="A Page">test</a><a href=two title="Another Page">test</a></li></ul>
echo el(['ul', html(['li',
['a', 'href'=>['path'], 'title'=>['title'], "test" ]
], $pages)]);
?>
Wat ik wil is waar in de laatste plaats "test" staat, er ook een key van $pages ingevuld kan worden.
Sorry voor de enorme lap code
edit: simpelere voorbeelden, door te nesten kan je een hele DOM opbouwen.
[ Bericht 0% gewijzigd door n8n op 21-12-2015 16:31:09 ]“Specialization is for insects”.—Robert HeinleinHet eerste dat me bij die code opvalt is dat de functie el() 2 optionele argumenten heeft, waarbij de eerste een array moet zijn als je 'm opgeeft en anders gewoon null is. Vervolgens gebruik je die parameter alsof het altijd een array is, dat gaat vroeg of laat fout.quote:Op maandag 21 december 2015 13:13 schreef n8n het volgende:
Laat het echte probleem wel ff zien met de functie. Het gaat voornamelijk om el(), de andere zijn helper functies. html() is om een lijst van element uit te poepen, attribute om een attribute te maken, en find() om waarden uit de optionele $item te vinden.
De PHP
[ code verwijderd ]
De templating werkt met de data uit arrays.
Dit:
[ code verwijderd ]
Wat ik wil is waar in de laatste plaats "test" staat, er ook een key van $pages ingevuld kan worden.
Sorry voor de enorme lap code
edit: simpelere voorbeelden, door te nesten kan je een hele DOM opbouwen.
Dus in plaats vanzou ik kiezen voor
1
2
3
4
5<?php
function el(array $element = null, $item = null){
foreach ($element as $key => $value){
?>of voor
1
2
3
4
5<?php
function el(array $element = array(), $item = null){
foreach ($element as $key => $value){
?>
1
2
3
4
5<?php
function el(array $element, $item = null){
foreach ($element as $key => $value){
?>
Verder is het niet duidelijk wat $item voor type moet/mag zijn.
En de functies attribute() en find() hebben niet altijd een return statement. Afhankelijk van wat er aan parameters in gaat, wordt er iets of niets geretourneerd. En je gebruikt op verschillende plekken variabelen die niet eerst geïnitialiseerd zijn. Niet direct fout, maar wel een potentieel risico. Een tikfout in een variabelenaam kan tot ongewenst of onverklaarbaar gedrag leiden, dus wil je bij voorkeur geen enkele notice zien.
Goed, nu eens kijken naar het probleemJe genereert invalid html, al bij het eerste voorbeeld.quote:Op maandag 21 december 2015 13:13 schreef n8n het volgende:
Dit:
[ code verwijderd ]
Wat ik wil is waar in de laatste plaats "test" staat, er ook een key van $pages ingevuld kan worden.
Sorry voor de enorme lap code
edit: simpelere voorbeelden, door te nesten kan je een hele DOM opbouwen.
1
2
3
4
5
6<?php
// <header class=test><h1>Title</h1></header>
echo el(['header', 'class'=>'test',
['h1', "Title"]
]);
?>
Bij valid html moeten attribute properties altijd in double quotes staan, dus wordt het
1 <header class="test"><h1>Title</h1></header>
Ben je bekend met DOMDocument? Het kan handig zijn om dat te gebruiken, dat scheelt in ieder geval iets met rare dingen in html waar je rekening mee moet houden.n8n
PragmatischBij enkele woorden zonder speciale karakters kan je de quotes weglaten maar dat is een implementatie-detail. Ga domdocument bekijken.
Zag gister dat m'n script op mithril (JS tempalting lijkt), geinig.“Specialization is for insects”.—Robert Heinleinn8n
Pragmatischah dit is leerzaam, ga morgen even goed reageren.quote:Op zaterdag 26 december 2015 22:54 schreef Light het volgende:
[..]
Het eerste dat me bij die code opvalt is dat de functie el() 2 optionele argumenten heeft, waarbij de eerste een array moet zijn als je 'm opgeeft en anders gewoon null is. Vervolgens gebruik je die parameter alsof het altijd een array is, dat gaat vroeg of laat fout.
Dus in plaats van
[ code verwijderd ]
zou ik kiezen voor
[ code verwijderd ]
of voor
[ code verwijderd ]
Verder is het niet duidelijk wat $item voor type moet/mag zijn.
En de functies attribute() en find() hebben niet altijd een return statement. Afhankelijk van wat er aan parameters in gaat, wordt er iets of niets geretourneerd. En je gebruikt op verschillende plekken variabelen die niet eerst geïnitialiseerd zijn. Niet direct fout, maar wel een potentieel risico. Een tikfout in een variabelenaam kan tot ongewenst of onverklaarbaar gedrag leiden, dus wil je bij voorkeur geen enkele notice zien.
Goed, nu eens kijken naar het probleem“Specialization is for insects”.—Robert Heinleinzondag 27 december 2015 @ 00:26:38 #212Light
Altijd quotes gebruiken is makkelijker, dat scheelt ook in de code omdat je niet hoeft te bepalen of je ze wel of niet moet gebruiken.quote:Op zaterdag 26 december 2015 23:52 schreef n8n het volgende:
Bij enkele woorden zonder speciale karakters kan je de quotes weglaten maar dat is een implementatie-detail.zondag 27 december 2015 @ 15:20:00 #213n8n
PragmatischJa klopt, ik dacht als ik toch minified html uitpoep kan ik net zo goed quotes weglaten wanneer deze ‘obsolete’ zijn. Ik denk er nog even over na (het is ook maar 1 regel dus zo gewijzigd).quote:Op zondag 27 december 2015 00:26 schreef Light het volgende:
[..]
Altijd quotes gebruiken is makkelijker, dat scheelt ook in de code omdat je niet hoeft te bepalen of je ze wel of niet moet gebruiken.Ik ben voor de tweede gegaan, een lege array is niet de bedoeling.quote:Op zaterdag 26 december 2015 22:54 schreef Light het volgende:
[..]
Het eerste dat me bij die code opvalt is dat de functie el() 2 optionele argumenten heeft, waarbij de eerste een array moet zijn als je 'm opgeeft en anders gewoon null is. Vervolgens gebruik je die parameter alsof het altijd een array is, dat gaat vroeg of laat fout.
Dus in plaats van
[ code verwijderd ]
zou ik kiezen voor
[ code verwijderd ]
of voor
[ code verwijderd ]Dat moet ook een array zijn, bij html() kan daar een array met $item's in om een nodelist te renderen, in el() is $item een data rij met named keys waar content in zit. Dit is waar het hele probleem om draait, want het lukt niet om onderscheid te maken tussen een html ‘nodelist’ array of de naam van een key in $item.quote:Verder is het niet duidelijk wat $item voor type moet/mag zijn.Klopt, dat is nu een silent error omdat ik niet wilde dat wanneer niks gevonden werd er een error kwam, maar een element simpelweg leeg zou zijn. Ik zal een return null toevoegen.quote:En de functies attribute() en find() hebben niet altijd een return statement. Afhankelijk van wat er aan parameters in gaat, wordt er iets of niets geretourneerd.Hoe bedoel je?quote:En je gebruikt op verschillende plekken variabelen die niet eerst geïnitialiseerd zijn.Ik ga de eerste batch fixes vast patchen. dankjewel!quote:Niet direct fout, maar wel een potentieel risico. Een tikfout in een variabelenaam kan tot ongewenst of onverklaarbaar gedrag leiden, dus wil je bij voorkeur geen enkele notice zien.
Goed, nu eens kijken naar het probleem“Specialization is for insects”.—Robert Heinleinzondag 27 december 2015 @ 16:12:43 #214Light
Als voorbeeld de foreach loop in de el() functie.quote:Op zondag 27 december 2015 15:20 schreef n8n het volgende:
[..]
Hoe bedoel je?
[..]
Ik ga de eerste batch fixes vast patchen. dankjewel!
1
2
3
4
5
6
7
8
9
10<?php
foreach ($element as $key => $value){
if ($key === 0){ $tag = $value; } // set tag
elseif (is_numeric($key)){ // text content and/or html element
if (gettype($value) === 'string' || is_numeric($value)) $content.= $value;
else $content.= el($value, $data);
}
else $attributes.= attribute($key, $value, $item); // element attributes
}
?>
Je gebruikt daarmaar zeker bij de eerste loop bestaat $content nog helemaal niet. Dat kun je voorkomen door voor de loop, dus aan het begin van de functie, $content = ''; te zetten en zo te zorgen dat $content bestaat (en als inhoud een lege string heeft, ook logisch bij string concatenation). Voor $attributes geldt hetzelfde.
1
2
3<?php
$content .= $value;
?>
En waar $data vandaan komt in "else $content.= el($value, $data);" weet ik niet, maar die heeft ook geen waarde.
Verder kun jevervangen door
1
2
3
4<?php
if (!$attributes) $result.= '<'.$tag.'>';
else $result.= '<'.$tag.' '.trim($attributes).'>';
?>waarbij je dus geen string concatenation meer gebruikt maar de variabele $result hier gewoon een waarde krijgt.
1
2
3
4<?php
if (!$attributes) $result = '<'.$tag.'>';
else $result = '<'.$tag.' '.trim($attributes).'>';
?>zondag 27 december 2015 @ 18:51:13 #215n8n
PragmatischZal dat nog even aanpassen, die concatenation was nog legacy van een probeersel, scherp.“Specialization is for insects”.—Robert Heinleinzondag 27 december 2015 @ 19:07:58 #216Light
Een IDE die zulke dingen aangeeft, helpt ook.quote:Op zondag 27 december 2015 18:51 schreef n8n het volgende:
Zal dat nog even aanpassen, die concatenation was nog legacy van een probeersel, scherp.zondag 27 december 2015 @ 19:58:27 #217n8n
PragmatischLight.app bedankt voor je feedback, een IDE is nog even een brug te ver, schrijf meestal JS.quote:Op zondag 27 december 2015 19:07 schreef Light het volgende:
[..]
Een IDE die zulke dingen aangeeft, helpt ook.
[ Bericht 5% gewijzigd door n8n op 28-12-2015 13:18:19 ]“Specialization is for insects”.—Robert Heinleindinsdag 29 december 2015 @ 22:01:44 #218wobbel
Da WoBBeL KingHelp, klopt dit zo? Het testen duurt iets te lang Script draait elke minuut via crontab
Het script moet de GPIO op 1 zetten als de zon is ondergegaan en de GPIO nog geen 1 is.
Het script moet ook de GPIO op 0 zetten als de zon is opgekomen en dit nog niet gebeurd is.
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<?php
$bcm_pin = 4;
$huidige_tijd = date ( "U" );
$opkomst = date_sunrise ( time ( ), SUNFUNCS_RET_TIMESTAMP );
$ondergang = date_sunset ( time ( ), SUNFUNCS_RET_TIMESTAMP );
if ( $huidige_tijd > $opkomst AND $huidige_tijd < $ondergang )
{
system ("gpio -g mode " . $bcm_pin . " out");
$huidig = exec ("gpio -g read " . $bcm_pin );
if ( $huidig == "1" )
{
system ("gpio -g write " . $bcm_pin . " 0" );
echo "Zon opgekomen en status nog 1, op 0 gezet :-)";
}
else
{
echo "Het is licht en de lamp is al uit";
}
}
else
{
system ("gpio -g mode " . $bcm_pin . " out");
$huidig = exec ("gpio -g read " . $bcm_pin );
if ( $huidig == "0" )
{
system ("gpio -g write " . $bcm_pin . " 1" );
echo "Zon ondergegaan en status nog 0, op 1 gezet :-)";
}
else
{
echo "Het is donker maar de lamp is al aan";
}
}
?>dinsdag 29 december 2015 @ 22:15:20 #219Monolith
geniaalOok daarvoor is een IDE geen overkill hoor, zeker als je ook nog wat frameworks oid gebruikt. Kijk bijvoorbeeld eens naar Webstorm:quote:Op zondag 27 december 2015 19:58 schreef n8n het volgende:
[..]
Light.app bedankt voor je feedback, een IDE is nog even een brug te ver, schrijf meestal JS.
https://www.jetbrains.com/webstorm/Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."Lijkt leuk (afgezien van de overvloed aan spaties) maar ik zou 't script niet afhankelijk maken van de standaardwaarden voor lengte- en breedtegraad. Die zijn bij een standaardinstallatie niet eens in de buurt van je huidige locatie.quote:Op dinsdag 29 december 2015 22:01 schreef wobbel het volgende:
Help, klopt dit zo? Het testen duurt iets te lang Script draait elke minuut via crontab
Het script moet de GPIO op 1 zetten als de zon is ondergegaan en de GPIO nog geen 1 is.
Het script moet ook de GPIO op 0 zetten als de zon is opgekomen en dit nog niet gebeurd is.
[ code verwijderd ]wobbel
Da WoBBeL KingJa wel, het is een raspberry in m'n meterkast waar ik de timezone (en lat/long) netjes heb ingevuldquote:Op woensdag 30 december 2015 12:26 schreef Light het volgende:
[..]
Lijkt leuk (afgezien van de overvloed aan spaties) maar ik zou 't script niet afhankelijk maken van de standaardwaarden voor lengte- en breedtegraad. Die zijn bij een standaardinstallatie niet eens in de buurt van je huidige locatie.There Will Be Many Features Coming For PHP 7.1
PHP 7 was just released over one month ago but there is already much work going into PHP 7.1, the next major update to this widely-used web programming language.
PHP 7.0 is most notable for the huge performance improvements compared to PHP5 and some new language features. With PHP 7.1, there are more features coming for when it's released later this year.
For some weekend reading, I was poking around for a look at some PHP 7.1 features already committed as well as some other likely material.
The tentative news items for work already found in PHP Git includes:
• PHP 7.1 adds support for a void return type.
• SHA3 fixed mode algorithms were added.
• The bundled SQLite library is updated against 3.9.2 rather than 3.8.
• Various bug fixes and other minor improvements.
Other items being planned and/or talked about for PHP 7.1 include:
• PHP Cryptography Objects (PCO) for better encryption/decryption/signing.
• Short closures.
• Generic types and functions.
• HTTP/2 and server push support.
Other proposals for future releases of PHP (not necessarily PHP 7.1) can be found via the RFC Wiki area. Stay tuned for more coverage of PHP 7.1 as its release approaches later in the year.When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.maandag 18 januari 2016 @ 18:27:45 #223henrivo
Tikt tegen jassiesHoi! Zomaar even een vraagje, puur uit interesse;
Zelf gebruik ik tijdens het programmeren engelse variabelennamen en nederlands commentaar. Welke taal geef jij zelf de voorkeur en waarom?maandag 18 januari 2016 @ 18:47:27 #224Tijn
Powered by MS PaintAlles Engels, want je wet nooit met wie je je code later nog wil delen.maandag 18 januari 2016 @ 18:49:59 #225Monolith
geniaalDat was ik inderdaad ook altijd gewend en bovendien werkte ik bij voorgaande werkgevers ook vaak met mensen die de Nederlandse taal niet beheersten. Bij mijn huidige werkgever is het vrij irritant dat de helft van de domeinspecifieke terminologie in het Nederlands is en dat in veel projecten ook in de code is doorgevoerd.quote:Op maandag 18 januari 2016 18:47 schreef Tijn het volgende:
Alles Engels, want je wet nooit met wie je je code later nog wil delen.Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
Forum Opties Forumhop: Hop naar: