abonnement Unibet Coolblue
pi_158397080
quote:
7s.gif 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.
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.
  maandag 21 december 2015 @ 11:55:43 #204
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_158405576
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:
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 #205
230788 n8n
Pragmatisch
pi_158405994
quote:
0s.gif 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.
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.

En light idd, call_user_func() is niet echt ideaal in mijn use-case.
Specialization is for insects”.—Robert Heinlein
  maandag 21 december 2015 @ 12:13:41 #206
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_158406034
quote:
1s.gif 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.
Ja, 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.

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 #207
230788 n8n
Pragmatisch
pi_158407729
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
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 Heinlein
pi_158552849
quote:
7s.gif 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.
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
1
2
3
4
5
<?php
function el(array $element null$item null){

    foreach (
$element as $key => $value){
?>
zou ik kiezen voor
1
2
3
4
5
<?php
function el(array $element = array(), $item null){

    foreach (
$element as $key => $value){
?>
of voor
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 probleem ;)
pi_158553692
quote:
7s.gif 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.
Je genereert invalid html, al bij het eerste voorbeeld.
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.
  zaterdag 26 december 2015 @ 23:52:54 #210
230788 n8n
Pragmatisch
pi_158555026
Bij 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 Heinlein
  zaterdag 26 december 2015 @ 23:57:29 #211
230788 n8n
Pragmatisch
pi_158555189
quote:
0s.gif 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 ;)
ah dit is leerzaam, ga morgen even goed reageren.
Specialization is for insects”.—Robert Heinlein
pi_158556294
quote:
14s.gif 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.
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. :)
  zondag 27 december 2015 @ 15:20:00 #213
230788 n8n
Pragmatisch
pi_158569470
quote:
0s.gif 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. :)
Ja 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:
0s.gif 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 ]

Ik ben voor de tweede gegaan, een lege array is niet de bedoeling.

quote:
Verder is het niet duidelijk wat $item voor type moet/mag zijn.
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:
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.
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 je gebruikt op verschillende plekken variabelen die niet eerst geïnitialiseerd zijn.
Hoe bedoel je?
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 ;)
Ik ga de eerste batch fixes vast patchen. dankjewel!
Specialization is for insects”.—Robert Heinlein
pi_158571131
quote:
7s.gif Op zondag 27 december 2015 15:20 schreef n8n het volgende:

[..]

Hoe bedoel je?

[..]

Ik ga de eerste batch fixes vast patchen. dankjewel!
Als voorbeeld de foreach loop in de el() functie.
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 daar
1
2
3
<?php
$content 
.= $value;
?>
maar 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.

En waar $data vandaan komt in "else $content.= el($value, $data);" weet ik niet, maar die heeft ook geen waarde.

Verder kun je
1
2
3
4
<?php
    
if (!$attributes$result.= '<'.$tag.'>';
    else 
$result.= '<'.$tag.' '.trim($attributes).'>';
?>
vervangen 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.
  zondag 27 december 2015 @ 18:51:13 #215
230788 n8n
Pragmatisch
pi_158576066
Zal dat nog even aanpassen, die concatenation was nog legacy van een probeersel, scherp.
Specialization is for insects”.—Robert Heinlein
pi_158576461
quote:
14s.gif 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.
Een IDE die zulke dingen aangeeft, helpt ook. ;)
  zondag 27 december 2015 @ 19:58:27 #217
230788 n8n
Pragmatisch
pi_158577974
quote:
1s.gif Op zondag 27 december 2015 19:07 schreef Light het volgende:

[..]

Een IDE die zulke dingen aangeeft, helpt ook. ;)
Light.app :@ bedankt voor je feedback, een IDE is nog even een brug te ver, schrijf meestal JS.

[ Bericht 5% gewijzigd door n8n op 28-12-2015 13:18:19 ]
Specialization is for insects”.—Robert Heinlein
  dinsdag 29 december 2015 @ 22:01:44 #218
37634 wobbel
Da WoBBeL King
pi_158651842
Help, klopt dit zo? Het testen duurt iets te lang :P 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";    
        
    }
    
}
?>
pi_158652450
quote:
17s.gif 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.
Ook daarvoor is een IDE geen overkill hoor, zeker als je ook nog wat frameworks oid gebruikt. Kijk bijvoorbeeld eens naar Webstorm:
https://www.jetbrains.com/webstorm/
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_158667753
quote:
0s.gif Op dinsdag 29 december 2015 22:01 schreef wobbel het volgende:
Help, klopt dit zo? Het testen duurt iets te lang :P 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 ]

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.
  woensdag 30 december 2015 @ 18:55:22 #221
37634 wobbel
Da WoBBeL King
pi_158682115
quote:
0s.gif 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.
Ja wel, het is een raspberry in m'n meterkast waar ik de timezone (en lat/long) netjes heb ingevuld :)
pi_159008554
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 #223
272287 henrivo
Tikt tegen jassies
pi_159207065
Hoi! 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 #224
12221 Tijn
Powered by MS Paint
pi_159207571
Alles Engels, want je wet nooit met wie je je code later nog wil delen.
pi_159207639
quote:
3s.gif 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.
Dat 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.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_159207818
quote:
3s.gif 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.
Dit.

En iedere Nederlander kan wel Engels lezen.
pi_159207885
Wat gaat Symfony 3.0 snel met versienummers zeg. :o
  maandag 18 januari 2016 @ 19:00:40 #228
272287 henrivo
Tikt tegen jassies
pi_159207952
quote:
1s.gif Op maandag 18 januari 2016 18:58 schreef robin007bond het volgende:
Wat gaat Symfony 3.0 snel met versienummers zeg. :o
Ik kwam in de documentatie al 3.1 tegen idd, voorlopig blijf ik wel bij 2.8.2 :+
pi_159208127
Ik zit nog op 2.7.*. In 2.8 is er echt ineens van alles deprecated dat ik heb gebruikt en de LTS-support loopt nog voorlopig. :P
  maandag 18 januari 2016 @ 19:11:39 #230
272287 henrivo
Tikt tegen jassies
pi_159208256
quote:
1s.gif Op maandag 18 januari 2016 18:58 schreef robin007bond het volgende:
Wat gaat Symfony 3.0 snel met versienummers zeg. :o
Misschien handig voor de collega-symfony-developers :)

pi_159208539
quote:
7s.gif Op maandag 11 januari 2016 11:43 schreef Aether het volgende:
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 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.
Leuk, maar die short closures komen er niet.
pi_159212641
quote:
0s.gif Op maandag 18 januari 2016 19:20 schreef Light het volgende:

[..]

Leuk, maar die short closures komen er niet.
Erg onoverzichtelijk ook, had anders sowieso liever wat meer getypt om het leesbaar te houden.
  maandag 18 januari 2016 @ 21:20:14 #233
91039 mstx
2x1/2 = 1/2 x 1/2
pi_159213158
quote:
0s.gif Op maandag 18 januari 2016 19:20 schreef Light het volgende:

[..]

Leuk, maar die short closures komen er niet.
Ach, zoals op die pagina ook al staat komt het er (mogelijk) wel in maar dan in een net iets andere syntax.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_159478653
(PHP 7.0.1) Fixed bug #70831 (Compile fails on system with 160 CPUs).

Had er al last van op mijn dev omgeving.
pi_159488618
Wel stoer dat er blijkbaar gewoon ergens iemand is, met een 160 core rig die daar PHP op wil draaien.
  zondag 31 januari 2016 @ 14:19:39 #236
272287 henrivo
Tikt tegen jassies
pi_159540367
Hey guys! Even een vraagje voor de mensen die werken met Symfony(2/3).

Ik heb onlangs een UploadBundle gemaakt, so far so good. Voor single files. Nu wil ik echter de mogelijkheid om _meerdere_ files tegelijk te uploaden, en dat lijkt in de praktijk net een stuk lastiger te zijn. Mijn vraag is, voor degenen die eerder in deze situatie hebben gezeten, hebben jullie tips of advies mbt de Entity/Controller? Ik loop hier nu op vast en de officiële documentatie is gebaseerd op het uploaden van _single_ files.

Bedankt alvast! :)
  woensdag 3 februari 2016 @ 10:50:05 #237
403866 richolio
#MacMasterrace
pi_159616963
Hallo,

Ik werk met ExpressionEngine, maar heb voor deze even PHP aangezet in mijn template. De URL is hoofdlettergevoelig, en die case sensitivity is nou net niet wat ik wil. Ik heb 6 segments, en als {segment_5} bijvoorbeeld "Rotterdam" is, dan doet "rotterdam" het niet. Nja, goed, hoofdlettergevoelig dus.

Het internet heeft niet geholpen. Misschien iemand hier die wat weet?
'Richolio _O_' - tong80
LAST.FM
pi_159631338
quote:
1s.gif Op zondag 31 januari 2016 14:19 schreef henrivo het volgende:
Hey guys! Even een vraagje voor de mensen die werken met Symfony(2/3).

Ik heb onlangs een UploadBundle gemaakt, so far so good. Voor single files. Nu wil ik echter de mogelijkheid om _meerdere_ files tegelijk te uploaden, en dat lijkt in de praktijk net een stuk lastiger te zijn. Mijn vraag is, voor degenen die eerder in deze situatie hebben gezeten, hebben jullie tips of advies mbt de Entity/Controller? Ik loop hier nu op vast en de officiële documentatie is gebaseerd op het uploaden van _single_ files.

Bedankt alvast! :)
https://stackoverflow.com(...)upload-with-symfony2

Heb je hier wat aan?
pi_159631506
quote:
11s.gif Op woensdag 3 februari 2016 10:50 schreef richolio het volgende:
Hallo,

Ik werk met ExpressionEngine, maar heb voor deze even PHP aangezet in mijn template. De URL is hoofdlettergevoelig, en die case sensitivity is nou net niet wat ik wil. Ik heb 6 segments, en als {segment_5} bijvoorbeeld "Rotterdam" is, dan doet "rotterdam" het niet. Nja, goed, hoofdlettergevoelig dus.

Het internet heeft niet geholpen. Misschien iemand hier die wat weet?
Wat?
pi_159640874
PHP is een smerige taal. Dat moest ik toch nog even kwijt.
  donderdag 4 februari 2016 @ 09:26:09 #241
403866 richolio
#MacMasterrace
pi_159643883
quote:
15s.gif Op woensdag 3 februari 2016 20:21 schreef KomtTijd... het volgende:

[..]

Wat?
Laat maar
'Richolio _O_' - tong80
LAST.FM
  donderdag 4 februari 2016 @ 09:26:59 #242
403866 richolio
#MacMasterrace
pi_159643892
Ik had een PHP oplossing nodig tegen hoofdlettergevoeligheid in de URL.

Maar gefixt, niet echt via php ofzo, maar goed.
'Richolio _O_' - tong80
LAST.FM
  donderdag 4 februari 2016 @ 18:42:55 #243
272287 henrivo
Tikt tegen jassies
pi_159657517
quote:
Ik had er misschien iets aan als ik em zelf niet was tegengekomen :P

Ik dacht een workaround te hebben gevonden maar blijf tegen dit probleem aanlopen:

1The class 'Symfony\Component\HttpFoundation\File\UploadedFile' was not found in the chain configured namespaces UserBundle\Entity, BlogBundle\Entity, 

Heb maar besloten om even een paar dagen niet naar de code te kijken :)
  † In Memoriam † donderdag 4 februari 2016 @ 22:32:45 #244
159335 Boze_Appel
Vrij Fruit
pi_159666819
quote:
9s.gif Op donderdag 4 februari 2016 00:05 schreef robin007bond het volgende:
PHP is een smerige taal. Dat moest ik toch nog even kwijt.
Waarvan akte.
Carpe Libertatem
  † In Memoriam † donderdag 4 februari 2016 @ 22:38:28 #245
159335 Boze_Appel
Vrij Fruit
pi_159667126
quote:
1s.gif Op zondag 31 januari 2016 14:19 schreef henrivo het volgende:
Hey guys! Even een vraagje voor de mensen die werken met Symfony(2/3).

Ik heb onlangs een UploadBundle gemaakt, so far so good. Voor single files. Nu wil ik echter de mogelijkheid om _meerdere_ files tegelijk te uploaden, en dat lijkt in de praktijk net een stuk lastiger te zijn. Mijn vraag is, voor degenen die eerder in deze situatie hebben gezeten, hebben jullie tips of advies mbt de Entity/Controller? Ik loop hier nu op vast en de officiële documentatie is gebaseerd op het uploaden van _single_ files.

Bedankt alvast! :)
Ongeacht symfony zou ik sowieso de ontvanger niet meerdere files tegelijk laten opvangen, maar gewoon 1 route die 1 bestand ontvangt en dat verwerkt. Hetzij direct, of beter, in een queue/worker. Laat de voorkant dan maar lekker bestanden er in pompen.
Carpe Libertatem
  † In Memoriam † donderdag 4 februari 2016 @ 22:40:47 #246
159335 Boze_Appel
Vrij Fruit
pi_159667203
Overigens ben ik echt dolgelukkig met de snelheid en verbeterde opcache van php7. Phars als Composer speren nu echt als een malle.
Carpe Libertatem
pi_159970855
Hey peepz, ik heb weer wat raars.

Ik heb een pagina waarbij ik een afbeelding wil uitspugen met php, daarbij krijg ik de volgende headers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Host: 127.0.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: PHPSESSID=u0gn1n80b3v6ipkbstoi0fct41
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36
X-CookiesOK: I explicitly accept all cookies

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Content-Type: image/png
Date: Tue, 16 Feb 2016 18:16:18 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=5, max=100
Pragma: no-cache
Server: Apache/2.4.6 (Win32) PHP/5.4.17
Transfer-Encoding: chunked
X-Powered-By: PHP/5.4.17

Het stukje PHP code is
1
2
3
4
5
6
7
8
9
10
11
12
<?php
            $fp 
fopen($foto_origineel'rb');
            
header("Cache-Control: no-cache, must-revalidate"); 
            
header("Pragma: no-cache"); //keeps ie happy
            
header('Content-Transfer-Encoding: binary');
            
header("Content-type: " $headertype);
            
header('Content-Length: ' filesize($foto_origineel));
            
ob_end_clean();//required here or large files will not work
            
fpassthru($fp);
            
fclose($fp);
            exit;
?>
Echter zie ik geen afbeelding, helemaal niets zelfs... iemand een idee? Bestand bestaat in een andere functie waarbij ik een thumbnail aanmaak zie ik zelfs de thumbnail niet... geen plaatjes zichtbaar op wat voor manier dan ook (als ik PHP het laat uitspugen/genereren)
Just say hi!
pi_159970915
En weet iemand hoe ik gemakkelijk USBWEBSERVER van een nieuwe versie van PHP kan voorzien? zit nu met versie 5.2.nogwat maar wil graag ietsje hoger ivm password_hash functie...
Just say hi!
pi_159972675
quote:
0s.gif Op dinsdag 16 februari 2016 19:21 schreef Chandler het volgende:
En weet iemand hoe ik gemakkelijk USBWEBSERVER van een nieuwe versie van PHP kan voorzien? zit nu met versie 5.2.nogwat maar wil graag ietsje hoger ivm password_hash functie...
De PHP binary + dll's vervangen? :P

[ Bericht 0% gewijzigd door #ANONIEM op 16-02-2016 20:10:34 ]
pi_159984134
Dank robin007bond, ik ga het proberen! :)

En niemand een andere oplossing voor mijn probleem? zie niets raars aan de headers! :)

-edit-
Ik had al zo'n gevoel dat er een BOM in mijn bestanden moest zitten en ja hoor, 1 van mijn php bestanden bevatte BOM... nu werkt alles naar behoren! :)

[ Bericht 29% gewijzigd door Chandler op 17-02-2016 09:20:00 ]
Just say hi!
  woensdag 17 februari 2016 @ 13:13:28 #251
25889 Sitethief
Fulltime Flapdrol
pi_159989436
quote:
0s.gif Op woensdag 17 februari 2016 08:34 schreef Chandler het volgende:
Dank robin007bond, ik ga het proberen! :)

En niemand een andere oplossing voor mijn probleem? zie niets raars aan de headers! :)

-edit-
Ik had al zo'n gevoel dat er een BOM in mijn bestanden moest zitten en ja hoor, 1 van mijn php bestanden bevatte BOM... nu werkt alles naar behoren! :)
quote:
Many older text editors always inject a trailing newline. And trailing whitespace led to "headers already sent" errors. The PHP interpreter actually circumvents this problem, and eats up a SINGLE trailing \r and \n newline after the ?> closing tag. Some unpracticed programmers however errornously added two or more trailing newlines or spaces, tabs after ?>. That's why it's considered good newbie guidance to omit the PHP close marker. It's however not indicative of good coding style.
Ik laat ze altijd weg als ik met headers e.d. werk, dan kan dat iig nooit gebeuren.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_159989912
Ik laat ze sowieso altijd weg. Waarom zou je sluittags plaatsen die geen enkel nut hebben en mogelijk wel problemen veroorzaken?
pi_159991308
quote:
14s.gif Op woensdag 17 februari 2016 13:34 schreef KomtTijd... het volgende:
Ik laat ze sowieso altijd weg. Waarom zou je sluittags plaatsen die geen enkel nut hebben en mogelijk wel problemen veroorzaken?
Dit. Gewoon standaard UTF-8. Geen gezeik.

Oh ja, en fuck sluittags.

[ Bericht 3% gewijzigd door #ANONIEM op 17-02-2016 18:40:31 ]
pi_159991887
quote:
14s.gif Op woensdag 17 februari 2016 13:34 schreef KomtTijd... het volgende:
Ik laat ze sowieso altijd weg. Waarom zou je sluittags plaatsen die geen enkel nut hebben en mogelijk wel problemen veroorzaken?
omdat het voor sommige mensen nooit problemen zal veroorzaken, waardoor het dus puur een esthetische afweging wordt. vooral als je richting ocd neigt is het irritant als html en php vol met open+sluiten zit en er vervolgens geheel overbodig een uitzondering wordt gemaakt :P
..///
pi_159996742
Sluit tags gebruik ik alleen bij inline HTML code, hier heb ik ze er gewoon bij geplaatst :D
Just say hi!
pi_160207375
Hoi, ik heb een probleempje. Ik probeer een base64 van een png naar de Imgur-API te sturen, maar ik krijg een foutmelding terug: "Image failed to upload." met code 400.
quote:
Status Code: 400
This error indicates that a required parameter is missing or a parameter has a value that is out of bounds or otherwise incorrect. This status code is also returned when image uploads fail due to images that are corrupt or do not meet the format requirements.
Het gaat om de volgende code:
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
<?php
$client_id 
"2bc14449";

$search = array('/''+''=');
$replace= array('%2F''%2B''%3D');

$imgtest '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';
$imgconv str_replace($search$replace$imgtest);

echo 
"$imgtest<br>";
echo 
$imgconv;

$data = array(
    
'image' => $imgconv,
    
'type'     => 'base64'
);

$ch curl_init();
curl_setopt($chCURLOPT_URL'https://api.imgur.com/3/image.json');
curl_setopt($chCURLOPT_POSTTRUE);
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
curl_setopt($chCURLOPT_HTTPHEADER, array('Authorization: Client-ID ' $client_id ));
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($data));

$reply curl_exec($ch);

curl_close($ch);

$reply json_decode($reply);

echo 
"<h3>API Debug</h3><pre>";
var_dump($reply);
?>

Zien jullie het probleem? Ik vermoed zelf dat ik iets niet goed doe met de CURLOPT_POSTFIELDS, maar dat weet ik niet zeker. Zowel $imgtest als $imgconv zijn juist.

[ Bericht 0% gewijzigd door #ANONIEM op 25-02-2016 17:46:20 ]
pi_160208686
Wat heb je zelf al getest? Werkt je request met dezelfde data wel als je een api-tester gebruikt?
pi_160209428
quote:
14s.gif Op donderdag 25 februari 2016 18:30 schreef KomtTijd... het volgende:
Wat heb je zelf al getest? Werkt je request met dezelfde data wel als je een api-tester gebruikt?
Heb even snel gekeken, maar ik krijg een foutmelding door de manier waarop ik de client_id erin zet, maar zodra ik thuis ben kan ik het beter testen.
pi_160220876
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$imgtest 
'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';
$pvars       = array('image' => $imgtest'type' => 'base64');
$timeout     30;

$curl curl_init();
curl_setopt($curlCURLOPT_URL'https://api.imgur.com/3/image.json');
curl_setopt($curlCURLOPT_TIMEOUT$timeout);
curl_setopt($curlCURLOPT_HTTPHEADER, array('Authorization: Client-ID ' $client_id));
curl_setopt($curlCURLOPT_POST1);
curl_setopt($curlCURLOPT_RETURNTRANSFER1);
curl_setopt($curlCURLOPT_POSTFIELDS$pvars);
$out curl_exec($curl);
curl_close ($curl);

$output json_decode($out,true);
$url=$output['data']['link'];
if(
$url!=""){
   echo 
"<img src='$url'/><br/>$url";
  }else{
    echo 
'Nope, errorrrr; '.$output['data']['error'];  
  }
?>

Opgelost met dank aan BBQSausage.
pi_160667514
Vraagje over opzet site.

Zelf ben ik bezig met een nieuwe site, daarvoor heb ik nu een simpel rechten systeem gebruikt waarbij ik in de database aangeef of het om een 'gast', 'gebruiker', 'moderator' of admin gaat

Op zich werkt dit goed, alleen naar mate de site gaat groeien wil ik mogelijk meerdere onderdelen beperken voor bepaalde gebruikers (gebruikers/moderators).

Nu vind ik het implementeren van ACL best een heel werk en aangezien er maar een paar delen van de site beperkingen nodig hebben is het gebruik van ACL dus imho iets te veel van het goede, is bitwise dan wel een juiste methode? daar kan ik maar maximaal 64 rechten specificeren (BIGINT in de database) of hebben jullie andere suggesties?
Just say hi!
pi_160674195
Bitvelden zou ik per definitie met een zo groot mogelijke boog omheen werken, tenzij je écht niet anders kan (maar gezien dit het PHP topic is lijkt me niet dat je op een microcontroller met een paar kB geheugen zit).

Wat ik zelf een handige structuur vindt:
- gebuikers kunnen tot 1 of meerdere groepen behoren
- groepen kunnen verschillende rechten hebben

Op die manier hoef je niet per user tig vinkjes door te werken maar heb je wel alle flexibiliteit om iedereen precies de juiste rechten te geven, door een gebruiker aan een combinatie van groepen te hangen.
pi_160677773
quote:
14s.gif Op maandag 14 maart 2016 22:58 schreef KomtTijd... het volgende:
Bitvelden zou ik per definitie met een zo groot mogelijke boog omheen werken, tenzij je écht niet anders kan (maar gezien dit het PHP topic is lijkt me niet dat je op een microcontroller met een paar kB geheugen zit).

Wat ik zelf een handige structuur vindt:
- gebuikers kunnen tot 1 of meerdere groepen behoren
- groepen kunnen verschillende rechten hebben

Op die manier hoef je niet per user tig vinkjes door te werken maar heb je wel alle flexibiliteit om iedereen precies de juiste rechten te geven, door een gebruiker aan een combinatie van groepen te hangen.
Dus doel je op het gebruiken van ACL. Op zich niet een groot probleem om in te bouwen hoor, alleen zit veel meer werk aan dan een simpeler rechten systeem En vroeg mij af of er niet meer soorten rechten systemen zijn... oh en met bitwise hoef ik in de database per gebruiker maar 1 'getal' in te voeren die daarmee gelijk alle rechten aan de gebruiker geeft.
Just say hi!
pi_160680790
Geloof me, dat klinkt nu heel makkelijk, maar als je over een half jaar een gebruiker wilt toevoegen zit je je hele applicatie door te spitten naar dat stukje code waaruit je kunt opmaken welke rechten ook al weer bij welk bitmask hoorde. En je applicatie overdragen aan een andere developer kun je helemaal wel vergeten.

Als relaties aanleggen in je relationele DB echt te moeilijk is, zou ik nog eerder de voorkeur geven aan comma seperated groepsnamen opslaan oid.
pi_160681114
Ja ik heb een applicatie draaien die moet communiceren met een database waarvan de ontwikkelaar het ook nodig vond om overal bitfields voor te gebruiken. Het zit me hoog.
pi_160689034
Zó ingewikkeld is het maken van een ACL toch ook weer niet.

(Nou ja, ik weet niet wat de prestaties zijn van wat ik heb gemaakt als je miljoenen diep in elkaar geneste objecten hebt...)
pi_160689137
quote:
0s.gif Op dinsdag 15 maart 2016 18:43 schreef Igen het volgende:
Zó ingewikkeld is het maken van een ACL toch ook weer niet.

(Nou ja, ik weet niet wat de prestaties zijn van wat ik heb gemaakt als je miljoenen diep in elkaar geneste objecten hebt...)
Ik zit er al een tijdje niet meer in, maar een beetje PHP framework heeft toch wel gewoon standaard een ACL-achtig systeem?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_160689216
quote:
1s.gif Op dinsdag 15 maart 2016 18:48 schreef Monolith het volgende:

[..]

Ik zit er al een tijdje niet meer in, maar een beetje PHP framework heeft toch wel gewoon standaard een ACL-achtig systeem?
Vast wel. Nou weet ik niet wat Chandler wil maar misschien kan die ook wel gewoon WordPress gebruiken o.i.d. :+
pi_160697741
Haha, ik heb zelf al eerder ACL gebruikt voor een soort gelijk project waarbij vele groepen zaten waar leden lid van konden worden, daar was het erg handig voor. Echter heeft dit project maar een paar onderdelen waarbij de gebruikers rechten nodig hebben (of eerder gezegd specifieke rechten).
Maar goed, ik denk dat ik dan toch maar voor ACL ga, heb de classes al liggen dus kan deze zo hergebruiken maar vind het altijd een kriem om het in de admin in te bouwen... Maar goed, weer wat extra's te doen :P
Just say hi!
pi_160869074
ACL is ingebouwd, werkt idd toch wat handiger als de site gaat groeien.

Andere vraag, ik heb 3 queries, maar alleen de eerste wordt verwerkt, de andere 2 doet PDO/MySQL helemaal niets mee.

Volledige code
1
2
3
<?php
  
/* niet relevant meer */
?>

Why?

[ Bericht 82% gewijzigd door Chandler op 22-03-2016 20:57:23 ]
Just say hi!
pi_160869288
Zo op het eerste oog vermoed ik dat je query->rowCount() geen 1 teruggeeft. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_160869344
quote:
0s.gif Op dinsdag 22 maart 2016 20:35 schreef Monolith het volgende:
Zo op het eerste oog vermoed ik dat je query->rowCount() geen 1 teruggeeft. :P
Dat geeft ie wel, heb daarop getest.. rare is dat beide queries daarna wel gedraaid worden maar niets veranderd in de database...
Just say hi!
pi_160869777
Heb het probleem gevonden.
Het probleem zit hem in de tabellen, op een of andere manier is het vinkje in PHPMYADMIN op leeg gezet... waardoor het veld LEEG blijft... maar wanneer ik dat vinkje wil verwijderen krijg ik een foutmelding van PHPMYADMIN "#1265 - Data truncated for column 'votes' at row 8"

Iemand een workaround? want kan deze velden niet verwijderen en daarna weer terug zetten.

-edit-
Heb gewoon de gehele database gedownloaded, tabellen aangepast en data weer terug gezet.. oplossing :P

[ Bericht 21% gewijzigd door Chandler op 22-03-2016 20:56:53 ]
Just say hi!
pi_162060797
Ik probeer een lijst te krijgen van users met wie je berichten uitgewisseld uit hebt, gesorteerd op datum van het laatste bericht dat ze hebben uitgewisseld.

Momenteel heb ik dit als query:
1SELECT msg.id, m.login, msg.date_sent FROM mail_msg msg, members m WHERE msg.user_id = $auth AND ((msg.user_from = $auth AND msg.user_to = m.id) OR (msg.user_to = $auth AND msg.user_from = m.id)) AND m.id != $auth GROUP BY m.id ORDER BY msg.date_sent DESC
Hierbij is $auth de variabele is met je persoonlijke user_id.

Helaas pakt ie bij deze query niet de datum van de laatste berichtuitwisseling maar van de eerste. ORDER BY msg.date_sent ASC maakt het er niet beter op.
pi_162060859
quote:
0s.gif Op dinsdag 10 mei 2016 14:27 schreef schwa78 het volgende:
Ik probeer een lijst te krijgen van users met wie je berichten uitgewisseld uit hebt, gesorteerd op datum van het laatste bericht dat ze hebben uitgewisseld.

Momenteel heb ik dit als query:
[ code verwijderd ]

Hierbij is $auth de variabele is met je persoonlijke user_id.

Helaas pakt ie bij deze query niet de datum van de laatste berichtuitwisseling maar van de eerste. ORDER BY msg.date_sent ASC maakt het er niet beter op.
Zonder echt naar de query te hebben gekeken: zou het niet ORDER BY msg.date_sent DESC moeten zijn? Je wilt de datum immers aflopend (DESC = descending) in plaats van oplopend (ASC = ascending) hebben...
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
pi_162060879
quote:
0s.gif Op dinsdag 10 mei 2016 14:30 schreef Rockfire het volgende:
Zonder echt naar de query te hebben gekeken: zou het niet ORDER BY msg.date_sent DESC moeten zijn?
Als je naar zijn query gekeken had, had je gezien dat dat precies is wat er staat..

[ Bericht 0% gewijzigd door #ANONIEM op 10-05-2016 14:32:07 ]
pi_162060893
quote:
0s.gif Op dinsdag 10 mei 2016 14:30 schreef Rockfire het volgende:

[..]

Zonder echt naar de query te hebben gekeken: zou het niet ORDER BY msg.date_sent DESC moeten zijn? Je wilt de datum immers aflopend (DESC = descending) in plaats van oplopend (ASC = ascending) hebben...
Ik heb in de query ook DESC staan. Het voorbeeld erna met ASC is alleen om aan te geven dat daar het probleem niet in schuilt.
pi_162060952
Het lijkt me dat het aan je group by ligt. Volgens mij moet het zoiets zijn:

1
2
SELECT msg.id, m.login, MAX(msg.date_sent) AS most_recent_message FROM mail_msg msg, members m 
WHERE msg.user_id = $auth AND ((msg.user_from = $auth AND msg.user_to = m.id) OR (msg.user_to = $auth AND msg.user_from = m.id)) AND m.id != $auth GROUP BY m.id ORDER BY most_recent_message DESC
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_162061303
quote:
0s.gif Op dinsdag 10 mei 2016 14:35 schreef Monolith het volgende:
Het lijkt me dat het aan je group by ligt. Volgens mij moet het zoiets zijn:
[ code verwijderd ]

Volgens mij doet ie het nu perfect! Thanks!!
pi_162255651
Hopende in het juiste topic te zijn heb ik de volgende vraag:
Ik heb een query waarbij ik data ophaal uit twee tabellen gebruikmakende van een JOIN, echter wil ik bij bepaalde situaties niks ophalen uit een kolom. De query ziet er als volgt uit:
SPOILER
Om 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.
Als het een match is doordat de opgegeven parameter(?) voorkomt in de credentials.username moet er niks worden opgehaald voor de keywords.keyword kolom. Heeft iemand een idee hoe ik dit voor elkaar krijg?
No citizen has a right to be an amateur in the matter of physical training...what a disgrace it is for a man to grow old without ever seeing the beauty and strength of which his body is capable.
pi_162256843
Je kunt dat veld dan toch gewoon niet gebruiken :?
pi_162257402
quote:
14s.gif Op maandag 16 mei 2016 22:17 schreef KomtTijd... het volgende:
Je kunt dat veld dan toch gewoon niet gebruiken :?
Dan zou ik na het uitvoeren van de query nog een stuk logica moeten schrijven om te kijken of de data opgehaald is gebruikmakende van de keywords of niet en dan de opgehaalde keywords niet te gebruiken. Alleen denk ik dat het netter en sneller zou zijn om die selectie op dbms niveau te doen dan na het ophalen nog eens een selectie uit te voeren in mijn software. (Bedankt voor het meedenken alvast!)
No citizen has a right to be an amateur in the matter of physical training...what a disgrace it is for a man to grow old without ever seeing the beauty and strength of which his body is capable.
  dinsdag 17 mei 2016 @ 09:30:44 #282
52200 ViPeRII
It's a good day to die
pi_162263162
Niet relevant meer..

[ Bericht 99% gewijzigd door ViPeRII op 17-05-2016 09:36:38 ]
-- ViPeRII --
pi_162263845
quote:
7s.gif Op maandag 16 mei 2016 21:44 schreef esv7 het volgende:
Hopende in het juiste topic te zijn heb ik de volgende vraag:
Ik heb een query waarbij ik data ophaal uit twee tabellen gebruikmakende van een JOIN, echter wil ik bij bepaalde situaties niks ophalen uit een kolom. De query ziet er als volgt uit:
SPOILER
Om 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.
Als het een match is doordat de opgegeven parameter(?) voorkomt in de credentials.username moet er niks worden opgehaald voor de keywords.keyword kolom. Heeft iemand een idee hoe ik dit voor elkaar krijg?
Zo uit m'n hoofd kun je gewoon een if statement in je group concat zetten, al krijg je dan wellicht wel wat onnodige whitespaces:

1
2
3
4
5
6
7
8
9
10
SELECT DISTINCT credentials.id, credentials.username, credentials.password
  GROUP_CONCAT(if((UPPER(credentials.keyword) LIKE UPPER(?),keywords.keyword,'') SEPARATOR ' ')
FROM credentials
JOIN keywords
ON credentials.id = keywords.credentials_id
WHERE (UPPER(credentials.keyword) LIKE UPPER(?)
  OR UPPER(credentials.username) LIKE UPPER(?))
AND CHAR_LENGTH(?) > 0
GROUP BY credentials.id
ORDER BY credentials.matches;

Het is sowieso wel een beetje een rommelige query en ik vraag me ook af wat je exact probeert te bereiken, functioneel gezien.
De DISTINCT op credentials.id is sowieso overbodig aangezien je er al een GROUP BY op doet.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_162275115
quote:
0s.gif Op dinsdag 17 mei 2016 10:22 schreef Monolith het volgende:

[..]

Zo uit m'n hoofd kun je gewoon een if statement in je group concat zetten, al krijg je dan wellicht wel wat onnodige whitespaces:
[ code verwijderd ]

Het is sowieso wel een beetje een rommelige query en ik vraag me ook af wat je exact probeert te bereiken, functioneel gezien.
De DISTINCT op credentials.id is sowieso overbodig aangezien je er al een GROUP BY op doet.
Het distinct keyword ben ik inderdaad vergeten te verwijderen nadat ik de GROUP BY clausule toegevoegd heb.

De functionaliteit die ik wil bereiken is het volgende:

Ik heb een tabel met credentials en een tabel met keywords, een credential kan nul of meer keywords hebben. Deze keywords kunnen worden gebruikt om naar credentials te zoeken om er vervolgens een actie op uit te voeren. Dit heb ik nu werkend in principe.

Wat ik wil bereiken is dat er wordt bijgehouden welk keyword(s) gebruikt zijn om het credential te vinden, dit kan in sommige gevallen ook geen enkel keyword zijn als er direct op een username gezocht wordt. Dit zodat er betere resultaten gegeven kunnen worden bij bepaalde zoektermen.

Wat ik hiervoor denk nodig te hebben is dat er naast het ophalen van een credential ook de gebruikte keywords opgehaald worden om deze na het uitvoeren van de actie op software niveau te kunnen updaten.
No citizen has a right to be an amateur in the matter of physical training...what a disgrace it is for a man to grow old without ever seeing the beauty and strength of which his body is capable.
pi_162360628
Ik probeer een php-scriptje te draaien in een Form-programma (RSForm) in Joomla 3.5.1.
Het draait om combinatie van mollie (iDeal-betalingen), cciDeal en RSForm. Ik krijg het voor elkaar met dit (gevonden) script om alles op te tellen in de kolom genaamd Totaal
1
2
3
4
$db = JFactory::getDBO();
 
$db->setQuery("SELECT SUM((`FieldValue`)) FROM popkoor_rsform_submission_values WHERE `FieldName`='Totaal' AND `FormId`='3'");
$directoryLayout.="  Aantal verkocht: " . "$" . $db->loadResult() . "<br/>";



Echter, ik wil een kleine toevoeging doen dat hij alleen de som berekent van de GESLAAGDE betalingen. Dat betekent dus dat _STATUS de waarde 1 moet hebben.
Echter mijn kennis schiet te kort om dit scriptje dusdanig aan te passen dat die berekening goed wordt uitgevoerd. Zou iemand mij kunnen vertellen hoe ik dit kan aanpassen zodat die extra voorwaarde wel wordt meegenomen in de berekening?
Mijn dank is groot  Heb 20 jaar geleden ooit een basiscursus SQL gehad op mijn opleiding, maar daar is weinig meer van over helaas.
I asked God for a bike, but I know God doesn't work that way.
So I stole a bike and asked for forgiveness.
pi_162362500
AND `_STATUS` = 1

Je weet trouwens dat je in Phpmyadmin gewoon een zoekactie kunt doen en de query kunt kopiëren?
  zaterdag 21 mei 2016 @ 09:15:31 #287
454594 Wedden
van wel?
pi_162374566
-edit-
pi_162374571
quote:
3s.gif Op vrijdag 20 mei 2016 20:07 schreef KomtTijd... het volgende:
AND `_STATUS` = 1
Dat leek me heel logisch, maar helaas werkt het niet. Ik krijg de foutmelding"1054
Unknown column '_STATUS' in 'where clause' SQL=SELECT SUM((`FieldValue`)) FROM #__rsform_submission_values WHERE `FieldName`='Totaal' AND `_STATUS` = 1 AND `FormId`='3'"

gebruikmakend van
1
2
3
4
$db = JFactory::getDBO();
 
$db->setQuery("SELECT SUM((`FieldValue`)) FROM popkoor_rsform_submission_values WHERE `FieldName`='Totaal' AND `_STATUS` = 1 AND `FormId`='3'");
$directoryLayout.="  Aantal verkocht: " . "$" . $db->loadResult() . "<br/>";

quote:
Je weet trouwens dat je in Phpmyadmin gewoon een zoekactie kunt doen en de query kunt kopiëren?
Ja, ik had het daar ook al uitgeprobeerd.
I asked God for a bike, but I know God doesn't work that way.
So I stole a bike and asked for forgiveness.
pi_162374679
quote:
3s.gif Op vrijdag 20 mei 2016 20:07 schreef KomtTijd... het volgende:
AND `_STATUS` = 1

Je weet trouwens dat je in Phpmyadmin gewoon een zoekactie kunt doen en de query kunt kopiëren?
Dat werkt natuurlijk niet. Status is geen kolom in de tabel, maar een aparte rij.

Je zal iets van een WHERE EXIST (subquery naar rij met status 1 en zelfde is) moeten doen.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_162374882
Volgens mij wil je dus ongeveer zoiets als query:
1SELECT SUM((p1.`FieldValue`)) FROM popkoor_rsform_submission_values p1 WHERE p1.`FieldName`='Totaal' AND p1.`FormId`='3' AND EXISTS (SELECT * FROM popkoor_rsform_submission_values p2 WHERE p2.`FieldName`='_Status' AND p2.`FieldValue` = "1" AND p1.SubmissionId = p2.SubmissionId)
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_162376745
Sorry, was niet helemaal wakker denk ik.
1
2
3
4
5
6
7
SELECT SUM(t1.fieldvalue) 
FROM popkoor_rsform_submission_values AS t1
JOIN popkoor_rsform_submission_values as t2
ON t1.submissionid = t2.submissionid 
WHERE t1.fieldname = "totaal" 
AND t2.fieldname = "_STATUS"
AND t2.fieldvalue = 1
Niet getest, maar you get the picture. Denk dat je er met zo'n soort constructie uit moet kunnen komen.
  zaterdag 21 mei 2016 @ 13:56:48 #292
454594 Wedden
van wel?
pi_162378115
-edit-

[ Bericht 50% gewijzigd door Wedden op 21-05-2016 14:11:19 ]
  zaterdag 21 mei 2016 @ 14:04:15 #293
12221 Tijn
Powered by MS Paint
pi_162378216
quote:
0s.gif Op zaterdag 21 mei 2016 13:56 schreef Wedden het volgende:

[..]

Allen dank voor het meedenken!

Het werkt nog niet helemaal. Als ik deze code van Monolith gebruik, lukt het wel in phpMyAdmin.
Zie plaatje
[ afbeelding ]

Als die code plak in de code waar ik mee begon krijg ik:
[ code verwijderd ]

Dan ziet de webpagina er echter zo uit:

[ afbeelding ]

Wordt nog even puzzelen waar het mis gaat!
Ik denk dat het probleem in PHP wordt veroorzaakt omdat je dubbele quotes om de 1 hebt staan.
pi_162378327
quote:
2s.gif Op zaterdag 21 mei 2016 14:04 schreef Tijn het volgende:

[..]

Ik denk dat het probleem in PHP wordt veroorzaakt omdat je dubbele quotes om de 1 hebt staan.
Jullie zijn helden! Bedankt!
I asked God for a bike, but I know God doesn't work that way.
So I stole a bike and asked for forgiveness.
  Moderator woensdag 25 mei 2016 @ 12:52:24 #295
55052 crew  djkoelkast
www.xms.nl
pi_162487067
Ik ben al een hele tijd bezig een systeem van de grond te krijgen waar ik als verzamelaar van oude tv-beelden samen met een groepje collegaverzamelaars onze collectie kan bijhouden.
De basis van het systeem is door iemand gebouwd, die later van de radar is verdwenen helaas.
Vervolgens was er iemand anders die het zou oppakken, maar die had ook minder tijd dan verwacht.
Ik weet wat ik vraag, het is hobby, dus ik heb geen budget. Ik kan wel in ruil iets doen waar ik goed in ben: video digitaliseren, videobewerking, voice-overwerk, mixen/remixen dat soort dingen.

Hier zijn wat plaatjes van hoe het nu is:





Het werkt alleen nog niet helemaal en het is nog lang niet af. Ik hoop dat iemand zin heeft hier in te helpen. Uiteraard mag je het systeem meenemen in je portfolio.
Luister naar XPLIZIT op www.xms.nl
Voor alles retro bezoek je het Retroforum - www.retroforum.nl
  woensdag 25 mei 2016 @ 12:55:53 #296
107951 JortK
Immer kwaliteitsposts
pi_162487167
Hoeveel mensen van jullie gebruiken trouwens een framework als bijvoorbeeld Laravel?

Ik ben er nu een aantal maal een project mee gestart, maar de overheid die het met zich meebrengt zorgt er eigenlijk altijd voor dat ik al snel overstap naar een project zonder framework.
pi_162487567
Symfony 2 hier.

De leercurve kan vrij steil zijn maar uiteindelijk levert het je een hoop gemak op.
  woensdag 25 mei 2016 @ 13:17:22 #298
134783 papernote
Een echte.
pi_162487627
Ik gebruik graag het Zend Framework.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_162494622
quote:
0s.gif Op woensdag 25 mei 2016 12:55 schreef JortK het volgende:
Hoeveel mensen van jullie gebruiken trouwens een framework als bijvoorbeeld Laravel?

Ik ben er nu een aantal maal een project mee gestart, maar de overheid die het met zich meebrengt zorgt er eigenlijk altijd voor dat ik al snel overstap naar een project zonder framework.
Gezien de staat van 'vanilla PHP' zou ik eigenlijk voor elk serieus project een framework gebruiken. Wil je een simpel scriptje bouwen, dan is het wellicht overkill, maar een beetje applicatie ontwikkelen gaat tien keer sneller met een fatsoenlijk framework, al is er vaak wel een initiële leercurve.
Ik werk nu zelf veel met Java EE waarvan mensen ook nog steeds denken dat het enorm log en verbose is terwijl je tegenwoordig met een paar regels code zo wat hebt staan.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_162494771
quote:
0s.gif Op woensdag 25 mei 2016 12:55 schreef JortK het volgende:
Hoeveel mensen van jullie gebruiken trouwens een framework als bijvoorbeeld Laravel?

Ik ben er nu een aantal maal een project mee gestart, maar de overheid die het met zich meebrengt zorgt er eigenlijk altijd voor dat ik al snel overstap naar een project zonder framework.
Ik gebruik tegenwoordig altijd een framework. Meestal Laravel, lumen of silex.

Wanneer jij terug gaat naar een project zonder framework om wat voor een opdrachten gaat het dan zoal?
pi_162501754
Laravel , heerlijk.
Redacted
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')