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.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 ]
Ja 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!
De 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 bestaat
Gebruik 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
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
Dit 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.
Nee 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.
quote:Op donderdag 17 december 2015 17:52 schreef Ser_Ciappelletto het volgende:
Garpig en revelant:
[ afbeelding ]
1 2 3 4 5 | <?php function quote($string){ return '$string heeft X quotes' } ?> |
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: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.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
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.quote:Op zondag 20 december 2015 19:10 schreef n8n het volgende:
php maakt onderscheid tussen strings in enkele en dubbele quotes.
quote: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.
Ik 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?
Dat 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.
ik 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?
Ja 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).
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.
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> |
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.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.
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.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.
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; } } ?> |
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)]); ?> |
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.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.
1 2 3 4 5 | <?php function el(array $element = null, $item = null){ foreach ($element as $key => $value){ ?> |
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){ ?> |
Je 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"] ]); ?> |
1 | <header class="test"><h1>Title</h1></header> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |