abonnement Unibet Coolblue
  FOK!-Schrikkelbaas woensdag 16 december 2015 @ 15:00:31 #181
1972 Swetsenegger
Egocentrische Narcist
pi_158283712
quote:
19s.gif 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.
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.

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");
}
?>
pi_158283802
quote:
0s.gif 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 ]

:o 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.
  FOK!-Schrikkelbaas woensdag 16 december 2015 @ 15:05:45 #183
1972 Swetsenegger
Egocentrische Narcist
pi_158283837
quote:
19s.gif Op woensdag 16 december 2015 15:04 schreef TwenteFC het volgende:

[..]

:o 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.
Ja moet ik nog omzetten inderdaad!
pi_158283860
quote:
14s.gif Op woensdag 16 december 2015 15:05 schreef Swetsenegger het volgende:

[..]

Ja moet ik nog omzetten inderdaad!
En vergeten dat mysql_query bestaat :P
  FOK!-Schrikkelbaas woensdag 16 december 2015 @ 15:11:08 #185
1972 Swetsenegger
Egocentrische Narcist
pi_158283960
quote:
19s.gif Op woensdag 16 december 2015 15:06 schreef TwenteFC het volgende:

[..]

En vergeten dat mysql_query bestaat :P
De voorkant van deze site heb ik al omgezet naar mysqli :@
pi_158284068
quote:
0s.gif Op woensdag 16 december 2015 15:11 schreef Swetsenegger het volgende:

[..]

De voorkant van deze site heb ik al omgezet naar mysqli :@
Gebruik je composer? Je kan desnoods een package pakken welke een wrapper is hiervoor.

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/
pi_158285913
quote:
0s.gif Op woensdag 16 december 2015 15:11 schreef Swetsenegger het volgende:

[..]

De voorkant van deze site heb ik al omgezet naar mysqli :@
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.
  FOK!-Schrikkelbaas woensdag 16 december 2015 @ 17:09:00 #188
1972 Swetsenegger
Egocentrische Narcist
pi_158286843
quote:
14s.gif 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.
Dit is backend waar 1 gebruiker toegang heeft.
pi_158286895
quote:
0s.gif Op woensdag 16 december 2015 17:09 schreef Swetsenegger het volgende:

[..]

Dit is backend waar 1 gebruiker toegang heeft.
:P 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.

Het zijn uiteindelijk maar goed bedoelde tips natuurlijk, wat en of je er iets mee gaat doen is aan jou.
  FOK!-Schrikkelbaas woensdag 16 december 2015 @ 17:13:23 #190
1972 Swetsenegger
Egocentrische Narcist
pi_158286909
quote:
19s.gif Op woensdag 16 december 2015 17:11 schreef TwenteFC het volgende:

[..]

:P Maar als je login/authenticatie script er ook zo uit ziet.
Nee dus :)

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.
Ik ga het ook vervangen. Zoals gezegd is het grootste deel al klaar. Ik heb 4 back-end pagina's die ik moet aanpassen.
  FOK!-Schrikkelbaas woensdag 16 december 2015 @ 17:35:35 #191
1972 Swetsenegger
Egocentrische Narcist
pi_158287271
Dus 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 :P



[ Bericht 7% gewijzigd door Swetsenegger op 16-12-2015 17:44:03 ]
  donderdag 17 december 2015 @ 17:52:19 #192
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_158311341
Garpig en revelant:

pi_158315321
quote:
0s.gif Op donderdag 17 december 2015 17:52 schreef Ser_Ciappelletto het volgende:
Garpig en revelant:

[ afbeelding ]
:D
  zondag 20 december 2015 @ 19:10:08 #194
230788 n8n
Pragmatisch
pi_158387309
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?

1
2
3
4
5
<?php
function quote($string){
  return 
'$string heeft X quotes'
}
?>

waar X ", of ' kan zijn
Specialization is for insects”.—Robert Heinlein
  Moderator / Redactie Sport zondag 20 december 2015 @ 19:24:29 #195
359864 crew  Nattekat
De roze zeekat
pi_158387613
quote:
14s.gif 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
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)
100.000 katjes
Maakte de 100.000e post in BIT
Er eens op uit?
pi_158387654
quote:
14s.gif 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
Ik begrijp niet helemaal wat je wilt.
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 #197
12221 Tijn
Powered by MS Paint
pi_158388177
quote:
14s.gif Op zondag 20 december 2015 19:10 schreef n8n het volgende:

php maakt onderscheid tussen strings in enkele en dubbele quotes.
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.
  zondag 20 december 2015 @ 20:21:01 #198
230788 n8n
Pragmatisch
pi_158389121
quote:
0s.gif 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)
quote:
3s.gif 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.
Ok duidelijk

v
quote:
7s.gif 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?
Ik wilde weten of quote("string") of quote('string') werd aangeroepen.
Specialization is for insects”.—Robert Heinlein
  FOK!-Schrikkelbaas zondag 20 december 2015 @ 20:26:28 #199
1972 Swetsenegger
Egocentrische Narcist
pi_158389318
Wat probeer je precies op te lossen dan?
pi_158389403
quote:
14s.gif 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.
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).
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 #201
230788 n8n
Pragmatisch
pi_158389596
quote:
5s.gif Op zondag 20 december 2015 20:26 schreef Swetsenegger het volgende:
Wat probeer je precies op te lossen dan?
ik wilde enkele quotes als key-name laten fungeren binnen de functie, en een dubbele quotes als string.

$value = ( 'string' ? $array['string'] : "string" ); kinda
Specialization is for insects”.—Robert Heinlein
  zondag 20 december 2015 @ 20:35:20 #202
230788 n8n
Pragmatisch
pi_158389616
quote:
7s.gif 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).
Ja dacht ik al, net als dat je geen functie kan doorgeven maar alleen het resultaat. Helaas.
Specialization is for insects”.—Robert Heinlein
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
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')