Ik echo en print niets meer tegenwoordig.quote:
Sowieso eerst zorgen dat je alle data opgehaald hebt, met alleen php en eventueel mysql. Dus geen output geven als je nog data uit de database aan het verwerken bent.quote:Op vrijdag 27 september 2013 22:48 schreef xaban06 het volgende:
Hoe moet je PHP en HTML apart houden? Vooral met loops vind ik het lastig.
Stukje php, daaroder html, met php er door heen, onleesbaar.
quote:Op vrijdag 27 september 2013 23:16 schreef Crutch het volgende:
[..]
Ik echo en print niets meer tegenwoordig.
1 2 3 4 | <?php $output = 'Dat hoeft ook niet'; exit($output); ?> |
Kan ook wel met die($output); zeker? hihahoquote:
1 2 3 4 5 6 7 8 | RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.*) $1 [L] RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ $1/ [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 |
Waar haal je $q vandaan?, $_GET["q"] ?quote:Op maandag 30 september 2013 22:22 schreef xaban06 het volgende:
Niet echt PHP gerelateerd, maar wist niet waar ik het anders moet plaatsen.
Ik wil dmv RewriteEngine/RewriteRule nette URL's maken.
http://www.voorbeed.com/index.php?a=nieuws&b=12
moet worden
http://www.voorbeed.com/nieuws/12/titel-van-artikel.html
Dit doe ik nu dmv:
[ code verwijderd ]
In de PHP scripts vang ik alles op in $q, deze wordt geparsed op '/' en op die manier verwerk ik het verder.
In het bovenstaande is .html niet meegenomen, omdat ik bij mijn huidige projecten dat niet heb,
Hoe moet ik bovenstaande aanpassen zodat het wordt zoals ik wil?
1 2 3 4 5 | RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?a=$1&b=$2&c=$3 [L] |
1 2 3 4 5 | <?php echo $_GET["a"]; echo $_GET["b"]; echo $_GET["c"]; ?> |
Ja.quote:Op dinsdag 1 oktober 2013 12:47 schreef d4v1d het volgende:
[..]
Waar haal je $q vandaan?, $_GET["q"] ?
Oh, over het hoofd gezien. Vanavond even proberen, zit nu op werkquote:Op dinsdag 1 oktober 2013 13:34 schreef d4v1d het volgende:
[..]
Is mijn post hierboven geen oplossing?
De rerwiteengine on hoeft niet. Tenzij je op een gare server zit. Je kan het niet aanzetten als het niet mag van de server en anders staat het toch wel aan. Het is vrij antiek.quote:Op dinsdag 1 oktober 2013 12:55 schreef d4v1d het volgende:
Waarom niet iets in deze richting?
.htaccess
[ code verwijderd ]
index.php
[ code verwijderd ]
Dat dus.quote:Op dinsdag 1 oktober 2013 13:39 schreef Boze_Appel het volgende:
[..]
De rerwiteengine on hoeft niet. Tenzij je op een gare server zit. Je kan het niet aanzetten als het niet mag van de server en anders staat het toch wel aan. Het is vrij antiek.
Het kan geen kwaad ofzo, maar is gewoon niet nodig.
Dit werkt:quote:Op dinsdag 1 oktober 2013 12:55 schreef d4v1d het volgende:
Waarom niet iets in deze richting?
.htaccess
[ code verwijderd ]
index.php
[ code verwijderd ]
Is op te lossen. Zal ik vanmiddag even naar kijken voor je, momenteel op school.quote:Op vrijdag 4 oktober 2013 14:15 schreef xaban06 het volgende:
[..]
Dit werkt:
http://www.xx.nl/nieuws/12/test.html
Dit werkt niet:
http://www.xx.nl/nieuws/12/
http://www.xx.nl/nieuws/
Terwijl die URL's ook geparsed moeten worden.
je begrijpt het systeem verkeerd. Het enige wat je wilt is dat altijd de index wordt geladen. Geen $q=nieuws $a=12 etc. Je moet een router maken die je urls omzet in bruikbare data. Aan de hand daarvan laadt je een pagina in.quote:Op vrijdag 4 oktober 2013 14:15 schreef xaban06 het volgende:
[..]
Dit werkt:
http://www.xx.nl/nieuws/12/test.html
Dit werkt niet:
http://www.xx.nl/nieuws/12/
http://www.xx.nl/nieuws/
Terwijl die URL's ook geparsed moeten worden.
Dat is geen praktische oplossing wanneer je een verscheidenheid aan urls hebt. Je hebt niet altijd 3 argumenten die deze exacte vorm aannemen. Het parsen van de url kun je het best over laten aan php door alles door te sturen naar index.php die uitzoekt welke route genomen moet worden aan de hand van een router class. Even een greep uit beschikbare routers:quote:Op dinsdag 1 oktober 2013 12:55 schreef d4v1d het volgende:
Waarom niet iets in deze richting?
.htaccess
[ code verwijderd ]
index.php
[ code verwijderd ]
1 2 3 | RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] |
srry typ op mijn telefoon vanuit het bad xD moeilijk een aantal voorbeelden te geven.quote:Op vrijdag 4 oktober 2013 17:14 schreef zoem het volgende:
Wat totalvamp zegt, maar dan met aanvullende info
[..]
Dat is geen praktische oplossing wanneer je een verscheidenheid aan urls hebt. Je hebt niet altijd 3 argumenten die deze exacte vorm aannemen. Het parsen van de url kun je het best over laten aan php door alles door te sturen naar index.php die uitzoekt welke route genomen moet worden aan de hand van een router class. Even een greep uit beschikbare routers:
Slim Framework | Zend Framework | CakePHP
Met name die van Slim is eenvoudig en simpel op te zetten zonder allerlei poespas. De benodigde htaccess volgens de docs:
[ code verwijderd ]
De anderen zijn uitgebreider, maar hebben iets meer overhead en een hogere learning curve.
Ah, ik deed het altijd door alle argumenten optioneel te doen maar dan ziet je regex er behoorlijk rommelig uit.quote:Op vrijdag 4 oktober 2013 17:14 schreef zoem het volgende:
Wat totalvamp zegt, maar dan met aanvullende info
[..]
Dat is geen praktische oplossing wanneer je een verscheidenheid aan urls hebt. Je hebt niet altijd 3 argumenten die deze exacte vorm aannemen. Het parsen van de url kun je het best over laten aan php door alles door te sturen naar index.php die uitzoekt welke route genomen moet worden aan de hand van een router class. Even een greep uit beschikbare routers:
Slim Framework | Zend Framework | CakePHP
Met name die van Slim is eenvoudig en simpel op te zetten zonder allerlei poespas. De benodigde htaccess volgens de docs:
[ code verwijderd ]
De anderen zijn uitgebreider, maar hebben iets meer overhead en een hogere learning curve.
1 2 | date( 'l j F Y H:i', strtotime($news_row["post_date"]) ) // output: Friday 4 October 2013 23:04 |
Ja, maar date werkt niet met setlocate En de strftime functie kom ik maar niet uit.quote:Op vrijdag 4 oktober 2013 23:16 schreef totalvamp het volgende:
http://www.php.net/manual/en/function.setlocale.php
Kwestie van de strftime docs lezen?quote:Op vrijdag 4 oktober 2013 23:04 schreef xaban06 het volgende:
Ik kom er net achter dat date() geen taal ondersteuning heeft, ik moet dus gebruik maken van strftime(), echter begrijp ik er bar weinig van.
Hoe kan ik
[ code verwijderd ]
vertalen naar strftime() ?
1 2 3 4 5 6 | l -> %A j -> %e F -> %B Y -> %G H -> %H i -> %M |
Zo simpelquote:Op zaterdag 5 oktober 2013 00:09 schreef zoem het volgende:
[..]
Kwestie van de strftime docs lezen?
[ code verwijderd ]
Dan is het aan jou om dat in de functie te verwerken. De argumenten van strftime() zijn identiek aan date(), dus nu zou het een koud kunstje moeten zijn. Daarvóór nog even de locale goed zetten, liefst aan het begin van je script. Als je niet alles op nl_NL wil maar alleen de tijd/datum zou je alleen LC_TIME op Nederlands kunnen zetten ipv LC_ALL.
Je kunt overigens mysql al de vertaalslag laten maken naar een unix timestamp met UNIX_TIMESTAMP(`col`).
1 | password_hash("wachtwoord", PASSWORD_DEFAULT); |
Ik kwam er net achter dat ik dus PHP 5.3 had, snel geupdate naar 5.5quote:Op zaterdag 5 oktober 2013 14:32 schreef Tijn het volgende:
Password_hash is awesome. Als je PHP 5.5 of hoger beschikbaar hebt, is het the way to go.
Volgens deze pagina zou het gebruik van de term "PEAR standards" niet helemaal terecht zijn. Waarschijnlijk moet je de WordPress standards hanteren. En ja, dat kan heel goed betekenen dat er wel een maximum aantal tekens per regel is.quote:Op dinsdag 8 oktober 2013 07:38 schreef Chandler het volgende:
Ik heb een script geschreven en wil die via codecanyon verkopen, echter kreeg ik een email terug met de volgende mededeling:
Please make sure the code adheres to PEAR standards.
Nu heb ik de PEAR documentatie gelezen en geinstalleerd onder PHP zodat ik mijn script kan checken, echter zie ik dat er bergen met 'fouten' uitkomen die volgens mij geen fouten zijn maar keuzes in 'opmaak'.
Nu mijn vraag, wat bedoelen ze precies met bovenstaande tekst en zal de code volgens phpcs 100% goed moeten zijn? want dan moet ik zelfs regels gaan afbreken bij 8x karakters... iemand een idee?
Sowieso een beetje raar om code te verkopen met zulke lange regels erin.quote:Op dinsdag 8 oktober 2013 07:38 schreef Chandler het volgende:
want dan moet ik zelfs regels gaan afbreken bij 8x karakters...
? nee hoor, alleen als je het wachtwoord aanpast.quote:Op zaterdag 5 oktober 2013 14:55 schreef xaban06 het volgende:
[..]
Ik kwam er net achter dat ik dus PHP 5.3 had, snel geupdate naar 5.5
Gaaf ook dat de salt iedere keer veranderd.
Om de programmeerwereld een gunst te verlenen moeten ze die er gewoon uit flikkeren. Tig sites die dan op hun bek gaan, maar dan wel inzien dat ze hun code moeten aanpassen.quote:Op dinsdag 8 oktober 2013 13:12 schreef KomtTijd... het volgende:
[..]
? nee hoor, alleen als je het wachtwoord aanpast.
Het grappige van Bcrypt is dat de hash ook de salt bevat om die hash te genereren. Je gebruikt dus eigenlijk de hash direct als salt. Maar met password_hash() gebeurt dat onder water.
Als je geen PHP5.5 kunt draaien moet je even zelf een bcrypt-functie maken, stelt niet zoveel voor. MD5 hashes gebruiken voor passwords mag inmiddels wel een doodzonde heten op programmeergebied.
MD5 heeft absoluut zijn waarde (integrity checks), maar niet voor password hashing. Daar is het nooit voor bedoeld geweest.quote:Op dinsdag 8 oktober 2013 13:15 schreef Pakspul het volgende:
[..]
Om de programmeerwereld een gunst te verlenen moeten ze die er gewoon uit flikkeren. Tig sites die dan op hun bek gaan, maar dan wel inzien dat ze hun code moeten aanpassen.
Dan moeten we plaintext ook maar afschaffen, er zijn ook nog sites die wachtwoorden als plaintext opslaan...quote:Op dinsdag 8 oktober 2013 13:15 schreef Pakspul het volgende:
[..]
Om de programmeerwereld een gunst te verlenen moeten ze die er gewoon uit flikkeren. Tig sites die dan op hun bek gaan, maar dan wel inzien dat ze hun code moeten aanpassen.
Ik heb een keer gezien dat iemand base64 gebruiktequote:Op dinsdag 8 oktober 2013 18:38 schreef Light het volgende:
[..]
Dan moeten we plaintext ook maar afschaffen, er zijn ook nog sites die wachtwoorden als plaintext opslaan...
MD5 kan helpen om vast te stellen of een bestand gewijzigd is. Maar als de hash niet gewijzigd is, kun je toch een ander bestand hebben. Daar zijn wat (oude) voorbeelden van, zoals deze: http://www.win.tue.nl/hashclash/Nostradamus/quote:Op dinsdag 8 oktober 2013 13:17 schreef KomtTijd... het volgende:
[..]
MD5 heeft absoluut zijn waarde (integrity checks), maar niet voor password hashing. Daar is het nooit voor bedoeld geweest.
base64 heeft natuurlijk ook zo zijn gebruiken, zoals het encoderen van binaire data of het embedden van een image in css. Maar het heeft weinig met cryptografie te maken.quote:Op dinsdag 8 oktober 2013 18:44 schreef d4v1d het volgende:
[..]
Ik heb een keer gezien dat iemand base64 gebruikte
Geen enkele hash is collision vrij, maar zolang bewuste manipulatie geen issue is, is de toevalsfactor zo klein dat je prima MD5 kunt gebruiken.quote:Op dinsdag 8 oktober 2013 19:11 schreef Light het volgende:
[..]
MD5 kan helpen om vast te stellen of een bestand gewijzigd is. Maar als de hash niet gewijzigd is, kun je toch een ander bestand hebben. Daar zijn wat (oude) voorbeelden van, zoals deze: http://www.win.tue.nl/hashclash/Nostradamus/
Ja, dat snap ik Diegene dus niet.quote:Op dinsdag 8 oktober 2013 19:15 schreef zoem het volgende:
[..]
base64 heeft natuurlijk ook zo zijn gebruiken, zoals het encoderen van binaire data of het embedden van een image in css. Maar het heeft weinig met cryptografie te maken.
Ik ga nu MySQL opbellen om VARCHAR af te schaffen!quote:Op dinsdag 8 oktober 2013 18:38 schreef Light het volgende:
[..]
Dan moeten we plaintext ook maar afschaffen, er zijn ook nog sites die wachtwoorden als plaintext opslaan...
En wat heb je zoal geprobeerd?quote:Op woensdag 9 oktober 2013 10:51 schreef x-tremed het volgende:
ik zit ook met een php probleempje, zelf voldoende ervaring met cms systemen maar zelf iets van scrap opbouwen lukt totaal niet.
Voor een projectje wat ik aan het testen ben moet ik straks een URL aanroepen ( site2.nl/variabel1/variabel2) waarbij beide variabelen uit enkel cijfers bestaan.
nu is het probleem dat ik vanaf mijn eigen site als output van de 2 variabelen het tweede getal met een komma krijg.
Ik moet dus eigenlijk een simpel php script hebben wat
www.site.nl/script/1234/56,78
redirect naar
www.site2.nl/script/1234/5678
of wat ook mag indien makkelijker
www.site.nl/script.php?var1=1234&var2=56,78
redirect naar
www.site2.nl/script/1234/5678
Zoek op str_replace();quote:Op woensdag 9 oktober 2013 10:51 schreef x-tremed het volgende:
ik zit ook met een php probleempje, zelf voldoende ervaring met cms systemen maar zelf iets van scrap opbouwen lukt totaal niet.
Voor een projectje wat ik aan het testen ben moet ik straks een URL aanroepen ( site2.nl/variabel1/variabel2) waarbij beide variabelen uit enkel cijfers bestaan.
nu is het probleem dat ik vanaf mijn eigen site als output van de 2 variabelen het tweede getal met een komma krijg.
Ik moet dus eigenlijk een simpel php script hebben wat
www.site.nl/script/1234/56,78
redirect naar
www.site2.nl/script/1234/5678
of wat ook mag indien makkelijker
www.site.nl/script.php?var1=1234&var2=56,78
redirect naar
www.site2.nl/script/1234/5678
Dus lees altijd de documentatie goed doorquote:Note:
HTTP/1.1 requires an absolute URI as argument to » Location: including the scheme, hostname and absolute path, but some clients accept relative URIs. You can usually use $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a relative one yoursel
Ik heb er maar redirects mbv javascript van gemaakt.quote:Op zaterdag 12 oktober 2013 19:48 schreef zoem het volgende:
Kan meerdere oorzaken hebben. Zorg in ieder geval dat je niets output vóórdat de headers verstuurd worden. Dus een rondzwervende spatie op een lege regel kan al een boosdoener zijn. Verder: zet error_reporting en display_errors aan. Probeer ook volledige (absolute) urls te gebruiken en niet alleen de bestandsnaam in de location header:
php.net: header()
[..]
Dus lees altijd de documentatie goed door
En als je javascript uit hebt staan?quote:Op zaterdag 12 oktober 2013 21:00 schreef BlueNumber het volgende:
[..]
Ik heb er maar redirects mbv javascript van gemaakt.
Dat zien we dan wel weer, het is toch nog een flutsite, maar ik wil het wel graag online testen.quote:Op zaterdag 12 oktober 2013 21:20 schreef zoem het volgende:
[..]
En als je javascript uit hebt staan?
En wat als google langskomt?quote:Op zaterdag 12 oktober 2013 21:00 schreef BlueNumber het volgende:
[..]
Ik heb er maar redirects mbv javascript van gemaakt.
Deze ook al geprobeerd? http://php.net/manual/en/function.http-redirect.phpquote:Op zaterdag 12 oktober 2013 21:40 schreef BlueNumber het volgende:
[..]
Dat zien we dan wel weer, het is toch nog een flutsite, maar ik wil het wel graag online testen.
Ik moet het idd nog wat eleganter oplossen.
1 2 3 4 5 6 | select `movies`.`serie` AS `serie`, count(`movies`.`episode_id`) AS `episodes` from `movies` group by `movies`.`serie` order by `movies`.`serie` |
Tablestructuur is wel handig inderdaad. Want staat het niet bij de episodes aangegeven in welk seizoen ze zijn?quote:Op zondag 13 oktober 2013 15:00 schreef Chandler het volgende:
Kleine mysql vraag
[ code verwijderd ]
deze query werkt goed, echter wil ik graag nu ook het aantal seizoenen toevoegen (in dezelfde query) maar dat lukt me nit echt... of echt niet, heb veel geprobeerd en nu las ik wat over case? maar zou iemand eens een voorbeeld kunnen schetsen (hoeft niet werkend te zijn, als het maar in de richting komt, moet er tenslotte van leren ) op basis van mijn simpele structuur? want met tutors kwam ik er niet echt uit...
1 2 3 4 5 | `serie` varchar(255) `season_id` tinyint(3) `episode` varchar(255) `episode_id` tinyint(3) `source` varchar(255) |
Hoe heb je dit precies genormaliseerd? Als ik het zo zie sla je de naam van de serie bij elk seizoen-id op. Imo kun je hier beter een koppeltabel van maken en de serienamen los opslaan in een tabel en ook als ID in deze opslaan. Zelfde geldt voor episode en source.quote:Op zondag 13 oktober 2013 17:18 schreef Chandler het volgende:
Oeps, zondag hé, rook zit nog steeds in m'n hoofd...
Structuur;
[ code verwijderd ]
Ik heb hiervoor al een view aangemaakt die op dit moment de unieke serie namen met aantal afleveringen er achter, echter zou ik graag ook per serie het aantal seizoenen willen berekenen zoals bovenstaand...
Ik zou toch gaan normaliseren, je krijgt je data dan ook eenvoudiger terug.quote:Op dinsdag 15 oktober 2013 07:13 schreef Chandler het volgende:
Nee ik heb het niet genormaliseerd, maar gebruik views en probeer op deze manier te normaliseren..
1 | ctypes.c_int32() |
Bedoel je intval() ofzo?quote:Op dinsdag 22 oktober 2013 19:12 schreef pascal08 het volgende:
Hebben jullie enig idee wat het PHP-equivalent van de volgende python functie is?
[ code verwijderd ]
Ligt eraan waarvoor je die functie gebruikt en wat het doet... Ik heb geen verstand van Python en dit zegt me eigenlijk niets. Kan er ook niet veel over vinden trouwens.quote:Op dinsdag 22 oktober 2013 19:12 schreef pascal08 het volgende:
Hebben jullie enig idee wat het PHP-equivalent van de volgende python functie is?
[ code verwijderd ]
http://docs.python.org/2/library/ctypes.htmlquote:Op dinsdag 22 oktober 2013 19:12 schreef pascal08 het volgende:
Hebben jullie enig idee wat het PHP-equivalent van de volgende python functie is?
[ code verwijderd ]
http://php.net/manual/en/language.types.integer.phpquote:Represents the C 32-bit signed int datatype. Usually an alias for c_int.
quote:The size of an integer is platform-dependent, although a maximum value of about two billion is the usual value (that's 32 bits signed). 64-bit platforms usually have a maximum value of about 9E18. PHP does not support unsigned integers. Integer size can be determined using the constant PHP_INT_SIZE, and maximum value using the constant PHP_INT_MAX since PHP 4.4.0 and PHP 5.0.5.
php.net heeft mogelijk last van mallware of een false positive van Google.quote:Op donderdag 24 oktober 2013 14:27 schreef Rockfire het volgende:
Anders doet Google even irritant
[ afbeelding ]
Ja dat snap ik, maar ik gok op het laatste, dus doet Google irritantquote:Op donderdag 24 oktober 2013 14:31 schreef Pakspul het volgende:
[..]
php.net heeft mogelijk last van mallware of een false positive van Google.
Nou, best aardig van Google om de waarschuwing te geven.quote:Op donderdag 24 oktober 2013 14:44 schreef Rockfire het volgende:
[..]
Ja dat snap ik, maar ik gok op het laatste, dus doet Google irritant
Kloptquote:Op donderdag 24 oktober 2013 14:47 schreef Pakspul het volgende:
[..]
Nou, best aardig van Google om de waarschuwing te geven.
Het is irritant aangezien je de manual nodig hebt http://devdocs.io/php/
boo fucking whoo Linkermenu werkt perfect. Daarnaast, helpt je editor niet bij de functie?quote:Op donderdag 24 oktober 2013 14:49 schreef Rockfire het volgende:
[..]
Klopt
Die link is niet zo makkelijk als die van php.net. Als ik de manual van een bepaalde functie wil hebben, ga ik altijd naar http://php.net/<functie>
http://www.reddit.com/r/P(...)n_officially/ccyjvw4quote:Op donderdag 24 oktober 2013 14:44 schreef Rockfire het volgende:
[..]
Ja dat snap ik, maar ik gok op het laatste, dus doet Google irritant
Als ik die regels aan mijn hosts file moet gaan toevoegen dan heb ik nog niet echt het idee dat zij het hebben opgelost.quote:Op donderdag 24 oktober 2013 15:04 schreef d4v1d het volgende:
[..]
http://www.reddit.com/r/P(...)n_officially/ccyjvw4
Oplossing: http://www.reddit.com/r/P(...)n_officially/ccyk3ii
Maar dan zit jij in ieder geval veilig.quote:Op donderdag 24 oktober 2013 15:07 schreef Pakspul het volgende:
[..]
Als ik die regels aan mijn hosts file moet gaan toevoegen dan heb ik nog niet echt het idee dat zij het hebben opgelost.
De userprefs.js file was daadwerkelijk infected.quote:Op donderdag 24 oktober 2013 14:44 schreef Rockfire het volgende:
[..]
Ja dat snap ik, maar ik gok op het laatste, dus doet Google irritant
Die titelquote:Op donderdag 24 oktober 2013 15:04 schreef d4v1d het volgende:
[..]
http://www.reddit.com/r/P(...)n_officially/ccyjvw4
Waarom een int? Gewoon een date nemen.quote:Op maandag 28 oktober 2013 15:29 schreef MichielPH het volgende:
Volgens mij vrij simpel op te lossen, maar kan zo snel geen eenvoudige oplossing bedenken:
Ik heb een tabel met per gebruiker per dag gegevens. De dag is een int, zaterdag is 6, zondag is 0, maandag is 1, etc. Ik vraag gisteren, vandaag en morgen op. Gaat prima.
Echter, ik wil het ook gesorteerd op datum weergeven. Hoe doe ik dat? Als ik gisteren de query had uitgevoerd, krijg ik dus 3 rijen met als dag 0, 1 en 6 terug. Ik wil het in volgorde 6, 0, 1 zien. Kan iemand een zetje in de goede richting geven?
Omdat het geen date is, het is weekdag. Wat voor vandaag geldt, geldt ook voor volgende week maandag. Per gebruiker heb ik dus maar 7 rijen welke het hele jaar gelden.quote:Op maandag 28 oktober 2013 15:41 schreef d4v1d het volgende:
[..]
Waarom een int? Gewoon een date nemen.
Het probleem is echter dat de volgorde dus verandert per dag: vandaag zou het resultaat van weekdagen zijn: 0, 1, 2 (zo, ma, di). Gisteren was dit 0, 1, 6 ( zo, ma, za), terwijl ik 6, 0, 1 (za, zo, ma) wil.quote:Op maandag 28 oktober 2013 15:55 schreef KomtTijd... het volgende:
Je hebt dus maar 7 records, die als een soort loopje een weekrooster vormen?
En een bijzondere functie die gisteren, vandaag en morgen ophaalt?
Dan zou ik die bijzondere functie ze ook gewoon in die volgorde in een array laten stoppen.
1 2 3 4 5 6 7 8 9 10 11 12 | select gebruiker, 1 as dag from tabel where dag = DAYOFWEEK(CURDATE()) union all select gebruiker, 2 as dag from table where dag = DAYOFWEEK(CURDATE()) -1 union all select gebruiker, 3 as dag from table where dag = DAYOFWEEK(CURDATE()) -2 order by gebruiker, dag |
1 2 3 4 5 6 | $weekday = date("w"); $serviceTime = $this->User->ServiceTime->find('all', array( 'conditions' => array('user_id' => $user['User']['user_id'], 'day' => array(($weekday - 1) % 7, $weekday, ($weekday + 1) % 7)), 'recursive' => -1 )); |
Kan ik wat mee!quote:Op maandag 28 oktober 2013 16:10 schreef vallisarosa het volgende:
[ code verwijderd ]
Of gebruik een soort van decode functie als dat kan in je sql.
1 2 3 4 5 6 | application system public_html ---assets -----css -------styles.css |
Ik heb het antwoord al gevonden: http://www.codingcereal.c(...)calhost-using-xampp/quote:Op donderdag 7 november 2013 01:45 schreef pascal08 het volgende:
Hoe kan ik ervoor zorgen dat de mappenstructuur met XAMPP hetzelfde werkt als met een webserver? Het lijkt zo simpel, maar ik kom er niet uit.
Als ik een website upload op een server dan zorg ik ervoor dat alles wat niet voor jan-en-alleman beschikbaar mag zijn buiten de 'public' folder komt. Als ik dan bijvoorbeeld een URL in een CSS file definieer dan is de root gelijk aan de 'public' folder.
Voorbeeld:
[ code verwijderd ]
Ik zou styles.css includen met het pad: "/assets/css/styles.css"
Als ik echter lokaal wil testen met XAMPP dan wordt deze URL: "localhost/assets/css/styles.css", omdat XAMPP localhost als root ziet.
Hoe zorg ik ervoor dat ik niet alle URL's steeds hoef te veranderen of de configuratie XAMPP hoef te veranderen voor verschillende projecten?
Bezoek tegenwoordig ook wel eens een PHP gebruikersgroep hier in de buurt waar ik ook mijn vragen kwijt kan.quote:Op maandag 4 november 2013 18:13 schreef Crutch het volgende:
Wat is het rustig hier..
Zijn we ineens goed in PHP geworden?
Maar dan zal ik toch al die duizenden URL's moeten bewerken met dat stukje base url.quote:Op donderdag 7 november 2013 09:33 schreef KomtTijd... het volgende:
xamp werkt niets anders dan een online host, het is allebei gewoon apache.
zet gewoon een base url in je config bestand, dan heb je nooit gezeik meer als je je website verplaatst.
Gewoon een find-and-replace met "localhost" en "$config->baseUrl()"?quote:Op donderdag 7 november 2013 14:15 schreef pascal08 het volgende:
[..]
Maar dan zal ik toch al die duizenden URL's moeten bewerken met dat stukje base url.
Laat het een les zijn, je kan zelfs een php script er voor schrijven.quote:Op donderdag 7 november 2013 14:15 schreef pascal08 het volgende:
[..]
Maar dan zal ik toch al die duizenden URL's moeten bewerken met dat stukje base url.
Als het er duizenden zijn, vraag ik me toch af of er niet nog ergens wat fout gaat..quote:Op donderdag 7 november 2013 14:15 schreef pascal08 het volgende:
[..]
Maar dan zal ik toch al die duizenden URL's moeten bewerken met dat stukje base url.
Dat vraag ik me ook altijd of als ik de reactie zo lees. Ik ondervind nu in ieder geval geen problemen meer met een virtual host.quote:Op donderdag 7 november 2013 23:21 schreef Maringo het volgende:
[..]
Als het er duizenden zijn, vraag ik me toch af of er niet nog ergens wat fout gaat..
als het goed is alleen de base url in je template. Als de rest nu goed gaat met relatieve paden, zal dat ook goed blijven gaan.quote:Op donderdag 7 november 2013 14:15 schreef pascal08 het volgende:
[..]
Maar dan zal ik toch al die duizenden URL's moeten bewerken met dat stukje base url.
Ook de URL's van sprites, afbeeldingen, ajax-url's etc.quote:Op donderdag 7 november 2013 23:32 schreef KomtTijd... het volgende:
[..]
als het goed is alleen de base url in je template. Als de rest nu goed gaat met relatieve paden, zal dat ook goed blijven gaan.
Voordeel van ditsoort server-specifieke dingen in een config bestand zetten is dat je heel gemakkelijk kunt kopiëren van de ene naar de andere host, door gewoon al je bestanden behalve de config.php te kopiëren.
1 | <span onclick="var input = document.createElement('input'); input.setAttribute('value', this.firstChild.nodeValue); input.setAttribute('name', 'ac'); input.setAttribute('onblur', 'document.getElementById(\'front11\').submit();'); this.parentNode.replaceChild(input, this);">2015104015</span> |
1 | <input value="2014102016" name="ac" onblur="document.getElementById('front11').submit();"> |
1 2 3 4 | <form id="front11" action="/index.php" method="post"> <input type="hidden" name="id" value="3394" /> <input value="2014102016" name="AC" onblur="document.getElementById('front11').submit();"> </form> |
Zo een eerste snelle blik: het input veld van ac heeft geen type.quote:Op vrijdag 8 november 2013 16:18 schreef Swetsenegger het volgende:
Ik ben bezig front-end editting te bouwen in een webshopje wat ik ooit geknutseld heb. Daarin komt nu dit prachtige stukje proza voor
[ code verwijderd ]
Feitelijk veranderd dit een span met een nummertje in een input veld met het nummertje in de value van dat input veld:
[ code verwijderd ]
En onblur moet hij dan het form submitten. Het form ziet er NA de DOM wijziging als volgt uit
[ code verwijderd ]
Het form submit ook keurig, maar... alleen de id value wordt gesubmit en ac value niet.
Iemand een idee?
Klopt, maar ik heb hem voor de zekerheid ook een type toegevoegd met hetzelfde resultaatquote:Op vrijdag 8 november 2013 16:31 schreef KomtTijd... het volgende:
type default naar text, zou geen probleem mogen zijn.
Nee, onclick word de span input, dat zie ik ook als ik het element inspecteer. En pas daarna wordt de onblur getriggerd. Dus in de DOM is het element aangepast voor het form gesubmit wordt. De submit zit ook in de input, dus kan uberhaupt niet onblur getriggerd worden als de input er nog niet is denk ik?quote:misschien wordt de onblur getriggerd vóór de change ofzo?
Weet je zeker dat het formulier er na de DOM-wijziging zo uit ziet als je hier plaatst? Valt het gegenereerde input-element niet per ongeluk buiten het formulier?quote:Op vrijdag 8 november 2013 16:18 schreef Swetsenegger het volgende:
Ik ben bezig front-end editting te bouwen in een webshopje wat ik ooit geknutseld heb. Daarin komt nu dit prachtige stukje proza voor
[ code verwijderd ]
Feitelijk veranderd dit een span met een nummertje in een input veld met het nummertje in de value van dat input veld:
[ code verwijderd ]
En onblur moet hij dan het form submitten. Het form ziet er NA de DOM wijziging als volgt uit
[ code verwijderd ]
Het form submit ook keurig, maar... alleen de id value wordt gesubmit en ac value niet.
Iemand een idee?
Ik ben er al uit. Het form werd gestart in de ene TR en geëindigd in de ander. En dat vinden browsers blijkbaar niet leuk.quote:Op zaterdag 9 november 2013 11:39 schreef papernote het volgende:
[..]
Weet je zeker dat het formulier er na de DOM-wijziging zo uit ziet als je hier plaatst? Valt het gegenereerde input-element niet per ongeluk buiten het formulier?
Als je de inhoud van de onblur nu eens vervangt door iets als alert(this.parent), zit je dan echt in het formulier?
Dat lijkt me inderdaad geen valide HTML. Ik zou de form om je hele tabel heen gooien en/of om de tr-tags heen.quote:Op zaterdag 9 november 2013 11:50 schreef Swetsenegger het volgende:
[..]
Ik ben er al uit. Het form werd gestart in de ene TR en geëindigd in de ander. En dat vinden browsers blijkbaar niet leuk.
Dat gaat niet aangezien er in de tabel nog wat forms staan voor het winkelmandje en wishlist.quote:Op zaterdag 9 november 2013 12:49 schreef papernote het volgende:
[..]
Dat lijkt me inderdaad geen valide HTML. Ik zou de form om je hele tabel heen gooien en/of om de tr-tags heen.
Kun je niet één groot formulier maken met meerdere submit-opties (met dezelfde name en een verschillende value) en dan op de server bepalen wat je wilt doen?quote:Op zaterdag 9 november 2013 12:55 schreef Swetsenegger het volgende:
[..]
Dat gaat niet aangezien er in de tabel nog wat forms staan voor het winkelmandje en wishlist.
Dus ik heb nu per item blok (artikelcode + naam, omschrijving, prijs) een form. Ik submit toch per onderdeel onBlur, dus dat is sowieso geen probleem.
Deze edit mogelijkheid is natuurlijk alleen beschikbaar voor admins die zijn ingelogged. Dus deze wat messy code staat niet in de gebruikers front-end.
Heb ik ook heel even naar gekeken. Vereist wel een compleet andere opbouw en dat valt wel een beetje buiten de scope eigenlijk. Op zich werkt het nu goed. En ik heb het goed commentedquote:Op zaterdag 9 november 2013 13:14 schreef papernote het volgende:
[..]
Kun je niet één groot formulier maken met meerdere submit-opties (met dezelfde name en een verschillende value) en dan op de server bepalen wat je wilt doen?
Prachtige site man, een bookmarkje waard.quote:Op donderdag 24 oktober 2013 14:47 schreef Pakspul het volgende:
[..]
Nou, best aardig van Google om de waarschuwing te geven.
Het is irritant aangezien je de manual nodig hebt http://devdocs.io/php/
Heet de database ook hetzelfde?quote:Op maandag 11 november 2013 16:44 schreef Skunk-m het volgende:
hij staat goed in mysql ja..
Toen ik hier op mijn lokale pc die tabel gekoppeld had aan een verse install (zelfde versie als de oude was.. nou weet ik dit niet zeker maar volgens mij liet ie het toen ook niet zien totdat ik em geupdate had.. maarja nou is ie volledig up to date dus dat schiet niet op.
Onleesbaar.quote:Op woensdag 13 november 2013 19:42 schreef Chandler het volgende:
Wat vinden jullie van me scrippie?
http://pastebin.com/g2xTLLtP
Baggerquote:Op woensdag 13 november 2013 19:42 schreef Chandler het volgende:
Wat vinden jullie van me scrippie?
http://pastebin.com/g2xTLLtP
Lekker vatbaar voor SQL Injectionquote:Op woensdag 13 november 2013 19:42 schreef Chandler het volgende:
Wat vinden jullie van me scrippie?
http://pastebin.com/g2xTLLtP
Niet uitvoerbaar. Als ik de code copy-paste vanaf pastebin, krijg ik de melding "This archive is broken, get a good version". Dat blijkt dan over table structure, table data en file data te gaan.quote:Op woensdag 13 november 2013 19:42 schreef Chandler het volgende:
Wat vinden jullie van me scrippie?
http://pastebin.com/g2xTLLtP
dafuq is this?quote:Op woensdag 13 november 2013 19:42 schreef Chandler het volgende:
Wat vinden jullie van me scrippie?
http://pastebin.com/g2xTLLtP
What did I just read ?quote:Op woensdag 13 november 2013 19:42 schreef Chandler het volgende:
Wat vinden jullie van me scrippie?
http://pastebin.com/g2xTLLtP
Op Debian werkt het niet.quote:Op donderdag 14 november 2013 08:39 schreef Chandler het volgende:
Thanks, kleine vraag; jullie testen vast allemaal in een linux omgeving?
het probleem zit hem in PHP_EOL die in windows omgeving anders is dan in de linux omgeving....
Daar ging ik al vanuit, alles anders dan Windows servers zal deze archive als broken betitelen... komt door PHP_EOL in PHP die onder windows anders is dan linux .....quote:
Ok, reactie in één woord: MVCquote:Op donderdag 14 november 2013 08:08 schreef Chandler het volgende:
@Light: Klopt, dat de data onleesbaar is, moet zo zijn.
@Pakspul; bedankt voor je zeer nuttige reactie van 1 woord..
Juicyhil: Klopt, maar het script heeft ook niet als doel beschikbaar te zijn voor de 'hele' wereld... maar opbouwende tips kan ik altijd wat mee
@Light: Het klopt inderdaad dat het om bestands en mysql data te gaan, en daaromheen zit een installer verwerkt, het rare is alleen dat het bestand bij mij deze melding niet geeft en bij jullie wel...
@Crutch: Versleutelde 'data' met een installer er aan vast geknoopt.
@GI: Read above
Het is vreemd dat de data op jullie systemen als 'broken' wordt weergegeven terwijl hier de code uitgevoerd kan worden, snap niet geheel waar het probleem zit maar daar moet ik dus nog mee spelen..
Now you have two problems? Als in: hoe is MVC een oplossing voor de problemen van Chandler? :-)quote:
Je mag toch op zijn minst wel je templates en je code gescheiden houden, niets problematisch aan hoor.quote:Op donderdag 14 november 2013 17:02 schreef rekenwonder het volgende:
[..]
Now you have two problems? Als in: hoe is MVC een oplossing voor de problemen van Chandler? :-)
Ik moest de cache legen in phpbb en daarna deed ie het..quote:Op woensdag 13 november 2013 13:43 schreef boem-dikkie het volgende:
[..]
Heet de database ook hetzelfde?
Dat is opzich handig, aangezien je dan geen "harde" paden hoeft te gebruiken...quote:Op donderdag 14 november 2013 17:28 schreef Skunk-m het volgende:
[..]
Ik moest de cache legen in phpbb en daarna deed ie het..
Maar nu is mijn vraag waarom phpbb ./ voor de links zet voor smilies, ranks etc.
dus als mn smilie path is ingesteld als images/smilies (gewoon standaard dus)
dan maakt ie er ./images/smilies van waardoor de afbeelding niet word weergegeven.
??
Ja? slaat in mijn ogen compleet de plank mis want het enige wat het script moet doen is steeds het zelfde maar dan voor andere 'data' pakketten. Maar goed, MVC is gewoon een geil woord dat je overal voor moet gebruiken... voor countertjes, voor simpele contact formulieren, voor alles eigenlijkquote:Op donderdag 14 november 2013 17:02 schreef rekenwonder het volgende:
[..]
Now you have two problems? Als in: hoe is MVC een oplossing voor de problemen van Chandler? :-)
Niet als het doel 1 bestand is, zonder includes! of wat voor externe bestanden dan ook zelfs de afbeeldingen staan in CSS in base64 ennuh op zich heb ik mijn html toch grotendeels gescheiden van php, alleen zit het wel verwerkt in het php bestand als 1 lap tekst...quote:Op donderdag 14 november 2013 17:07 schreef KomtTijd... het volgende:
Je mag toch op zijn minst wel je templates en je code gescheiden houden, niets problematisch aan hoor.
T werkt, op je quit knop na. deze brengt alles terug naar de 1e stap van je script.quote:Op zaterdag 16 november 2013 11:39 schreef Chandler het volgende:
LOL wat is dan 2013? gewoon weer ouderwets?
Maaruh een update: http://pastebin.com/VtwXQHur voor diegene die het leuk vind om dingen te testen en opbouwend kritiek wil geven
Oh pass is password123
Je gebruikt twee keer "case 7:". Dat werkt niet, iedere case moet uniek zijn.quote:Op zaterdag 16 november 2013 11:39 schreef Chandler het volgende:
Maaruh een update: http://pastebin.com/VtwXQHur voor diegene die het leuk vind om dingen te testen en opbouwend kritiek wil geven
Je hoeft er m.i. niet per se OOP van te maken, maar het helpt wel (ik ben er wel een voorstander van). Maar je zou wel aparte functies kunnen maken, dat maakt je script makkelijker testbaar. Je kan dan elke functie testen op de werking. Dat lukt niet in je huidige model.quote:Op zondag 17 november 2013 13:30 schreef Chandler het volgende:
Thanks voor jullie inhoudelijke reacties, de installer heeft een datablock en een script onderdeel, het script onderdeel ga ik niet oop maken, zou kunnen maar zie daar zelf het nut niet van in. Een keuze in database systemen ben ik zeker voor en gaat ook zeker verwerkt worden in het script en qua unset moet ik inderdaad nog wel het een en ander aanpassen... oh 2x case 7 had ik blijkbaar over het hoofd gezien... ooeps.. zelfde als set_time_limit, die heb ik gebruikt om te testen, iets wat bij kleine 'installers' echt niet nodig is maar bij installers van 30mb misschien wel, daar moet ik het allemaal nog op testen.
Paar vragen:
- Waarom stappen verminderen? zoveel stapjes zijn het niet? kijk eens naar programma's die je onder windows installeert? die hebben vaak ook vele stappen..
- Waarom OOP? zoveel code zit er niet in zeg maar... op zich zou't wel gemakkelijk zijn als ik er een ander ontwerp omheen wil gooien!
- Andere tips?
Oh de quit button is domweg bedoeld om de installer te resetten... je begint weer bij het begin want echt 'afsluiten' van het script zoals een programma gaat niet werken... tenzij ik window.close() ga gebruiken
thanks voor inhoudelijk feedback, maar hoe voelde de installer verder aan?
1 2 3 4 5 6 7 8 9 | $array = array ( 'ding' => .. , 'dat' => .. , 'zus' => .. , 'zo' => .. ); # zou ik herschrijven naar: $array = array( ding => .., dat => .., zus => .., zo => .., ); |
Mijn OOP is extreem brak, maak daarin vaak fouten en leer daar pas van als iemand er wat over zegt (mijn manier van leren). Ik zal eens kijken wat ik allemaal in functies kan stoppen wat er nu nog niet inzit...quote:Op zondag 17 november 2013 13:36 schreef slacker_nl het volgende:
Je hoeft er m.i. niet per se OOP van te maken, maar het helpt wel (ik ben er wel een voorstander van). Maar je zou wel aparte functies kunnen maken, dat maakt je script makkelijker testbaar. Je kan dan elke functie testen op de werking. Dat lukt niet in je huidige model.
Klopt, daarin heb je totaal gelijk alleen hoeft een gemiddelde gebruiker van dit script niets met de data, zelfde als jij niets moet met de inhoudt van een installer anders dan de installer zijn werk laten doen... dus de data hoeft er niet mooi uit te zien (data block) maar qua scripten werkt het zeker beter...quote:Verder zou ik wel iets aan je code conventies gaan doen:
Dat leest en edit prettiger.
Het gaat me erom dat als je later in dat script kijkt dat het makkelijk edit en leest. Dat de gebruiker er niet in hoeft te lezen.. maar andere coders wel en die wil je wel helpen met schone, zelf-gedocumenteerde code.quote:Op zondag 17 november 2013 14:19 schreef Chandler het volgende:
[..]
Mijn OOP is extreem brak, maak daarin vaak fouten en leer daar pas van als iemand er wat over zegt (mijn manier van leren). Ik zal eens kijken wat ik allemaal in functies kan stoppen wat er nu nog niet inzit...
[..]
Klopt, daarin heb je totaal gelijk alleen hoeft een gemiddelde gebruiker van dit script niets met de data, zelfde als jij niets moet met de inhoudt van een installer anders dan de installer zijn werk laten doen... dus de data hoeft er niet mooi uit te zien (data block) maar qua scripten werkt het zeker beter...
verder nog grote php fouten gezien? nee toch?
1 2 3 4 | $installer = new InstallerClass( # named arguments ); $installer->run(); |
Je moet altijd je documentatie goed op orde hebben. Maar dat staat los van de manier van code. Al helpt het ook dat je code zichzelf uitlegt. Maar je functies moeten gewoon gedocumenteerd zijn.quote:Op zondag 17 november 2013 14:49 schreef Chandler het volgende:
Ook met OOP moet je je inlezen in code want ->run() zegt ook compleet niets, want wat gebeurd er in al die functies? dus denk dat documentatie van het script zelf stukken belangrijker is.. Al zou ik het wel leuk vinden om er een OOP versie van maken maken dat ik zo de schil (layout/vormgeving) on the fly kan aanpassen!
Op m'n werk is het moeten. Want anders zegt de testsuite: je hebt de pod niet op orde en dan falen de tests.quote:Op zondag 17 november 2013 16:19 schreef Chandler het volgende:
moeten is onzin, handig true; zal ik ook zeker gaan doen, maar blijkbaar vinden jullie het idee toch best leuk is een vervolg op een heel oud projectje (php2hex )
Testbaarheid.quote:Op zondag 17 november 2013 18:10 schreef Chandler het volgende:
Waarom in aparte files? leg dat eens uit?
Hoe heb je die code getest?quote:Op maandag 18 november 2013 01:09 schreef Chandler het volgende:
Zo werk ik inderdaad ook al, alle code is gewoon al getest (toen nog niet op meerdere platformen maar goed) met de losse modules die ik toen werkend met elkaar heb verbonden in het huidige script. Ik zal vannacht nog eens naar wat puntjes van het script kijken (heb toch nachtdienst, dus alle tijd)
Nog goede suggesties voor een test-suite?quote:Op zondag 17 november 2013 16:21 schreef slacker_nl het volgende:
[..]
Op m'n werk is het moeten. Want anders zegt de testsuite: je hebt de pod niet op orde en dan falen de tests.
Overigens zeg ik niks over je idee, want ik zou je script en je installer in aparte files frotten, maar dat is mijn mening.
Onder PHP, ik ken er geen. Onder Perl heb je prove.quote:Op maandag 18 november 2013 13:16 schreef HalveZware het volgende:
[..]
Nog goede suggesties voor een test-suite?
Waarom in hemelsnaam een NoSQL database voor een loginsysteemquote:Op maandag 18 november 2013 13:52 schreef RetRy32 het volgende:
Sjooooooooooow ik was aan het kloten met dat MongoDB gebeuren, ik heb dus een Auth template voor mijzelf gemaakt, is wel een beetje rommelig en comments heb ik in het Engels gezet btw...
Voor de liefhebbers...
https://anonfiles.com/file/9e49f9c2059cdd78233e284435781ffa
En dat MongoLab remote hosting is gewoon gratis tot 500MB
[ afbeelding ]
Waarom niet?quote:Op maandag 18 november 2013 14:35 schreef KomtTijd... het volgende:
Waarom in hemelsnaam een NoSQL database voor een loginsysteem
Het is een template, en er staat ook nog een comment erover erbij manquote:Op maandag 18 november 2013 14:35 schreef KomtTijd... het volgende:
[..]
...en zie ik daar MD5 password hashes? , , !!!!!!!!!
Normaliter wil je behoorlijk joinen met je usersquote:
Daar heb ik niet naar gekeken. Maar MD5 gebruiken voor passwordhashes zou gewoon bij wet verboden moeten zijn.quote:[..]
Het is een template, en er staat ook nog een comment erover erbij man
Want met no SQL databases zou je niet kunnen joinen? Ik bel gelijk even Twitter en Facebook dat hun architectuur niet klopt!quote:Op maandag 18 november 2013 15:16 schreef KomtTijd... het volgende:
[..]
Normaliter wil je behoorlijk joinen met je users
Het kan, maar er is geen reden om het jezelf extra moeilijk te maken.quote:Op maandag 18 november 2013 15:22 schreef raptorix het volgende:
[..]
Want met no SQL databases zou je niet kunnen joinen? Ik bel gelijk even Twitter en Facebook dat hun architectuur niet klopt!
Waarom zou het moeilijk zijn? Zo moeilijk is het niet om een simpele join te maken in MongoDbquote:Op maandag 18 november 2013 15:24 schreef KomtTijd... het volgende:
[..]
Het kan, maar er is geen reden om het jezelf extra moeilijk te maken.
En vervolgens heb je die classes en functies naar een ander bestand gekopieerd en dat is je installer? Da's dus niet de code die je getest hebt, da's een kopie van die code. Dat maakt in zoverre verschil dat je aanpassingen twee keer moet doen als je ze ook wilt testen.quote:Op maandag 18 november 2013 10:18 schreef Chandler het volgende:
Gewoon 1 scriptje met daarin de class/functie en daaronder het test gedeelte?
Heb je al iets aan je formatting gedaan?quote:Op maandag 18 november 2013 19:52 schreef Chandler het volgende:
Ja en nee, de installer is een 'front' voor de data... de data en 'front' worden samen gevoegd in het script dat de installer (aan) maakt.
Qua testen heb je gelijk, maar vaak maak ik bv een class/functie en die test ik ook gewoon in het zelfde bestand van de class/functie waarbij ik dan gewoon andere classes/functies include (voor mijn mvc heb ik per functie een apart php bestand, altijd gemakkelijk met debuggen). Dus bijna het zelfde.. In dit project specifiek moet ik inderdaad dan zaken twee keer moet herhalen.
Ik zal eens naar PHPUnit kijken!
Maar heb je voor dit projectje nog suggesties? ideeën? verbeter punten?
Alleen het typen in Sublime vind ik toch ietsiepietsie prettigerquote:
Waar ligt het aan dat het daarin fijner is?quote:Op maandag 18 november 2013 20:51 schreef RetRy32 het volgende:
[..]
Alleen het typen in Sublime vind ik toch ietsiepietsie prettiger
//Feit: ietsiepietsie is een Nederlands woord//
Ik vind die autofill echt tof en voor de rest is het denk ik gewenning.quote:Op maandag 18 november 2013 21:19 schreef Crutch het volgende:
[..]
Waar ligt het aan dat het daarin fijner is?
Hoe bedoel je met formatting? de stijl waarop ik mijn code schrijf? pear style?quote:Op maandag 18 november 2013 19:54 schreef RetRy32 het volgende:
[..]
Heb je al iets aan je formatting gedaan?
Protip: PHPStorm, werkt geweldig met PHPunit trouwens.
1 2 3 4 5 6 7 8 9 10 11 | <?php foreach (array("tables", "tableData", "files" => "files") AS $block => $bTest) { if (isset(${"$block"}, ${"$block" . "CRC"})) { $tested++; if (!testHash(${"$block" . "CRC"}, ${"$block"}, $bTest)) { $_SESSION['installer']['errors'][] = $block . ' block damaged'; $errors++; } } } ?> |
Da's perfect imo, nu ik je code eigenlijk bekijk is er niks mis met de netheid.quote:Op dinsdag 19 november 2013 08:55 schreef Chandler het volgende:
[..]
Hoe bedoel je met formatting? de stijl waarop ik mijn code schrijf? pear style?
gelijk een andere vraag; is dit netjes? of moet/kan het anders?
[ code verwijderd ]
quote:Op dinsdag 19 november 2013 16:41 schreef ursel het volgende:
Ik schrijf de 'as' in een foreach altijd met kleine letters.
Je mixt een indexed met een associative array. Alhoewel het technisch kan is zoiets meestal een recept voor gezeik. Kies het een of het ander, niet mengen.quote:Op dinsdag 19 november 2013 08:55 schreef Chandler het volgende:
[..]
Hoe bedoel je met formatting? de stijl waarop ik mijn code schrijf? pear style?
gelijk een andere vraag; is dit netjes? of moet/kan het anders?
[ code verwijderd ]
Hahaha, zal ongetwijfeld mede mogelijk gemaakt zijn door mijn schrijf style!quote:Op dinsdag 19 november 2013 16:21 schreef RetRy32 het volgende:
[..]
Da's perfect imo, nu ik je code eigenlijk bekijk is er niks mis met de netheid.
Was een illusie
SUPER LOL, eigenlijk moet AS ook met kleine letters, maar schrijf het al jaren als AS (zal wel uit mijn basic tijd komen...) oh nu ik het mij bedenk is het waarschijnlijker dat ik het van SQL heb overgenomen (daar schrijf ik functies altijd in hoofdletters en variabelen/tabellen/velden etc in kleine... ) maar goed... het verduidelijkt wel de leesbaarheid ($vars as $var1 => $var2) is minder leesbaar als ($vars AS $var1 => $var2) ofzo.quote:Op dinsdag 19 november 2013 16:41 schreef ursel het volgende:
Ik schrijf de 'as' in een foreach altijd met kleine letters. Eigenlijk nog nooit met hoofdletters gezien, bhelave in Queries.
Ik heb dit vandaag even in elkaar geflanst van een groter stukje if else statements... scheelt maar 3/4 aan regels.quote:Op dinsdag 19 november 2013 16:51 schreef Boze_Appel het volgende:
Je mixt een indexed met een associative array. Alhoewel het technisch kan is zoiets meestal een recept voor gezeik. Kies het een of het ander, niet mengen.
Wat je zegt is logisch, maar niet voor mijn code.quote:Op dinsdag 19 november 2013 17:36 schreef KomtTijd... het volgende:
Ik moest er 5 keer naar kijken voordat ik begreep wat er nu gebeurde.
En ik zou zeggen dat je die vars direct in een object zet waar je doorheen fietst, mocht je ze stuk voor stuk willen checken. Of je checkt ze op het moment van aanmaken.
1 2 3 4 | <?php foreach (array("tables", "tableData", "files" => "files") AS $block => $bTest) { } ?> |
1 2 3 4 5 | <?php $array = array("tables"=>"tableData", "files"=>"files"); foreach($array AS $block => $bTest){ } ?> |
1 2 3 4 | <?php $explodeIp = explode ( ".", "185.002.241.100" ); $bierentieten = ltrim ( $explodeIp[0], "0" ) . "." . ltrim ( $explodeIp[1], "0" ) . "." . ltrim ( $explodeIp[2], "0" ) . "." . ltrim ( $explodeIp[3], "0" ); ?> |
Het scriptje draait maar 1 keer, het wordt in de database gestopt en daarna zien we de data nooit meer terugquote:
O oke. Er zat ook een foutje in m'n script.quote:Op woensdag 20 november 2013 13:57 schreef wobbel het volgende:
[..]
Het scriptje draait maar 1 keer, het wordt in de database gestopt en daarna zien we de data nooit meer terug
Beunhaasquote:Op woensdag 20 november 2013 13:57 schreef mstx het volgende:
[..]
O oke. Er zat ook een foutje in m'n script.
1 2 3 4 5 | <?php $arr = explode('.',$ip); $arr = array_map(function($a){return (int) $a;}, $arr); $ip = implode('.',$arr); ?> |
Wat is er mis met array_map('intval', $arr); ?quote:Op woensdag 20 november 2013 14:42 schreef KomtTijd... het volgende:
[ code verwijderd ]
Niet IPv6 proof uiteraard.
Dat moet je gewoon weigeren, dat voldoet niet aan de IPv4 syntax.quote:Op woensdag 20 november 2013 13:45 schreef wobbel het volgende:
Oke, long2ip ( ip2long ( "185.002.241.100") ) werkt niet, maar ik zit nog wel met een probleem.
Ik heb "185.002.241.100" aangeleverd gekregen (wel 1503025325 keer) en ik moet alle voorloopnullen verwijderen, in dit geval moet het dus 185.2.241.100 worden. Is daar een manier voor zonder eerst alles te exploden enzo?
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 | { # Stolen from Regexp::IPv6 (to prevent adding a dependency for BSD machines) my $sub = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))'; my $IPv4 = "$sub\\.$sub\\.$sub\\.$sub"; my $G = "[0-9a-fA-F]{1,4}"; my @tail = ( ":", "(:($G)?|$IPv4)", ":($IPv4|$G(:$G)?|)", "(:$IPv4|:$G(:$IPv4|(:$G){0,2})|:)", "((:$G){0,2}(:$IPv4|(:$G){1,2})|:)", "((:$G){0,3}(:$IPv4|(:$G){1,2})|:)", "((:$G){0,4}(:$IPv4|(:$G){1,2})|:)" ); my $IPv6 = $G; $IPv6 = "$G:($IPv6|$_)" for @tail; $IPv6 = qq/:(:$G){0,5}((:$G){1,2}|:$IPv4)|$IPv6/; $IPv6 =~ s/\(/(?:/g; $IPv6 = qr/\A(?:$IPv6|::)\Z/; $IPv4 = qr/\A$IPv4\Z/; use constant CHECK_IP => sub { my $ip = shift; # End with / we are not a valid IP return 0 if ($ip =~ /\/\s*$/); my $mask; ($ip, $mask) = split(/\//, $ip); # If you supply a /32 you supply a single ip, we allow this if (defined $mask && ( $mask !~ /^\d+$/ || $mask != 32)) { return 0 ; } return ($ip =~ m/$IPv4/) ? 1 : 0; }; use constant CHECK_IPV6 => sub { my $range = shift; ($range) = split(/\//, $range); return ($range =~ m/$IPv6/) ? 1 : 0; }; } |
Voetbalquote:Op woensdag 20 november 2013 12:01 schreef Michaelvanb het volgende:
Iemand interesse om een voetbal transfer nieuws website (engelstalig) op te starten?
Ik heb een heel mooi plan liggen, alleen ik heb onderschat hoe moeilijk het is om een team/speler database te maken als je nog nooit met php/mysql hebt gewerkt en alleen wordpress kennis hebt.
50/50 split waarbij ik zorg voor content, seo, 't plan etc en de evt. partner helpt mee met technische gedeelte. theme of psd zijn al redelijk klaar. EMD domeinnaam met 200k exact search
DM voor meer info
Ondanks je edit moet ik toch een beetje huilen van binnen.quote:Op maandag 18 november 2013 15:26 schreef raptorix het volgende:
[..]
Waarom zou het moeilijk zijn? Zo moeilijk is het niet om een simpele join te maken in MongoDb
Edit: ik bedoel dit zul je wel buiten MonngoDB moeten doen met een extra actie.
Overigens niet echt nodig, in no Sql hoef je je niet aan relationele principes te houden, sterker nog het is zelfs erg niet de bedoeling
Omdat?quote:Op donderdag 21 november 2013 02:37 schreef TwenteFC het volgende:
[..]
Ondanks je edit moet ik toch een beetje huilen van binnen.
Als je Wordpress kennis hebt kun je dat daar toch realiseren.quote:Op woensdag 20 november 2013 12:01 schreef Michaelvanb het volgende:
Iemand interesse om een voetbal transfer nieuws website (engelstalig) op te starten?
Ik heb een heel mooi plan liggen, alleen ik heb onderschat hoe moeilijk het is om een team/speler database te maken als je nog nooit met php/mysql hebt gewerkt en alleen wordpress kennis hebt.
50/50 split waarbij ik zorg voor content, seo, 't plan etc en de evt. partner helpt mee met technische gedeelte. theme of psd zijn al redelijk klaar. EMD domeinnaam met 200k exact search
DM voor meer info
Ach, het is slechts 1 keerquote:Op woensdag 20 november 2013 18:26 schreef slacker_nl het volgende:
[..]
Dat moet je gewoon weigeren, dat voldoet niet aan de IPv4 syntax.
'127.000.000.001' is not a valid ipv4 address.# Tests were run but no plan was declared and done_testing() was not seen.
Dit is de Perl-code om IPv4/IPv6 syntax te valideren:
[ code verwijderd ]
Dit, en je kan altijd even "EXPLAIN" uitvoeren om te kijken wat er allemaal gebeurt.quote:Op donderdag 28 november 2013 20:06 schreef KomtTijd... het volgende:
Aangezien WHERE id = 25 al 100% selectief is zal de rest alleen maar ballast zijn en waarschijnlijk genegeerd worden of anders de query vertragen.
run beide queries 10000 keer ofzo en je weet het.
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!quote:Op donderdag 28 november 2013 20:06 schreef KomtTijd... het volgende:
Aangezien WHERE id = 25 al 100% selectief is zal de rest alleen maar ballast zijn en waarschijnlijk genegeerd worden of anders de query vertragen.
run beide queries 10000 keer ofzo en je weet het.
Heb je in de database gekeken of je model überhaupt wordt opgeslagen?quote:Op donderdag 28 november 2013 18:25 schreef TwenteFC het volgende:
Iemand hier die gebruik maakt van Laravel?
Ik wil een child toevoegen aan de parent model en deze opslaan, alleen pakt hij de parentId niet omdat die waarde na het opslaan van de parent verspringt naar 1.
Code:
http://paste.laravel.com/1aMv
Het lijkt je handig met als reden dat het niets toevoegtquote:Op donderdag 28 november 2013 20:31 schreef xaban06 het volgende:
[..]
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!
LIMIT 1 lijkt mij ook handig, niet? id is namelijk uniek.
->push is voor bestaande objecten, heb het ondertussen al opgelost door heel lelijk een AI veld toe te voegen en daar op te koppelen.quote:Op donderdag 28 november 2013 20:31 schreef Crutch het volgende:
[..]
Heb je in de database gekeken of je model überhaupt wordt opgeslagen?
En relationships sla je op met ->push()
Je kan ook even een grote batch insert doen om er mee te testen natuurlijk.quote:Op donderdag 28 november 2013 20:31 schreef xaban06 het volgende:
[..]
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!
LIMIT 1 lijkt mij ook handig, niet? id is namelijk uniek.
"het beste", mijn inziens is het vrij persoonlijk wat voor jou het beste is.quote:Op donderdag 28 november 2013 20:41 schreef RetRy32 het volgende:
Uhm, hey guys wat vinden jullie het beste framework voor PHP?
Ik heb nou al tering veel artikelen gelezen, maar ben nog niet echt wijzer...
Ik dacht dat het wel meerwaarde had, dat het namelijk stopt met verder zoeken wanneer er een match gevonden is. Zonder LIMIT doorzoekt hij alle records dacht ik.quote:Op donderdag 28 november 2013 20:38 schreef KomtTijd... het volgende:
[..]
Het lijkt je handig met als reden dat het niets toevoegt
Niet als je id Unique is, waar ik wel even vanuit ging natuurlijk.quote:Op donderdag 28 november 2013 20:50 schreef xaban06 het volgende:
[..]
Ik dacht dat het wel meerwaarde had, dat het namelijk stopt met verder zoeken wanneer er een match gevonden is. Zonder LIMIT doorzoekt hij alle records dacht ik.
Is het nietquote:Op donderdag 28 november 2013 20:53 schreef KomtTijd... het volgende:
[..]
Niet als je id Unique is, waar ik wel even vanuit ging natuurlijk.
Maar hoe weet je dan dat de eerste het juiste resultaat is? Als het onderscheid gemaakt wordt op category,subcategory dan zou je sowieso de 2e query moeten gebruiken even terug te komen op je eerste vraag.quote:
Ik bedoel, id is altijd uniek, geen duplicates, maar ik heb het niet als unique gedefineerd omdat ik nog niet weet wat unique, primary key, index etc allemaal doen.quote:Op donderdag 28 november 2013 20:56 schreef TwenteFC het volgende:
[..]
Maar hoe weet je dan dat de eerste het juiste resultaat is? Als het onderscheid gemaakt wordt op category,subcategory dan zou je sowieso de 2e query moeten gebruiken even terug te komen op je eerste vraag.
Behalve dat je ze dan weg kan laten in de select, omdat je die waardes al hebt.
Wordt jouw id automatisch opgehoogd wanneer je een nieuwe toevoegt? zoja; dan is het al je PK, en uniek.quote:Op donderdag 28 november 2013 21:00 schreef xaban06 het volgende:
[..]
Ik bedoel, id is altijd uniek, geen duplicates, maar ik heb het niet als unique gedefineerd omdat ik nog niet weet wat unique, primary key, index etc allemaal doen.
Is een auto_increment veld. Wat is PK?quote:Op donderdag 28 november 2013 21:01 schreef TwenteFC het volgende:
[..]
Wordt jouw id automatisch opgehoogd wanneer je een nieuwe toevoegt? zoja; dan is het al je PK, en uniek.
Primary key, en een auto_increment veld is per definitie uniek en onderdeel v/d PK.quote:Op donderdag 28 november 2013 21:02 schreef xaban06 het volgende:
[..]
Is een auto_increment veld. Wat is PK?
Waarom niet gewoon de Price en shipmentCost ( Let even op met dit soort CamelCasing overigens !! ) uit DB trekken en PHP het op laten tellen? dan kun je er ook nog variabele kortingen en dergelijke in mee rekenen als je dit nodig hebt?quote:Op donderdag 28 november 2013 21:25 schreef xaban06 het volgende:
Nog een vraag, ik sla prijzen op als:
199,99
In MySQL doe ik in een SELECT, price+shipmentCost as totalPrice. Dit werkt niet. Het werkt wel wanneer ik de prijzen opsla als:
199.99
Dus een punt in plaats van een komma. Is hier omheen te werken op een nette manier?
Dit inderdaad, dat vind je backend ook stuk toffer! :-)quote:Op donderdag 28 november 2013 21:50 schreef KomtTijd... het volgende:
Al zou het kunnen, dat is toch iets wat je absoluut nooit aan wilt beginnen?
Sowieso, sla gewoon de prijs in centen op als int.
Ja, je waarde altijd opslaan als float of decimal en pas converteren naar #,## wanner je het output naar je template.quote:Op donderdag 28 november 2013 21:25 schreef xaban06 het volgende:
Nog een vraag, ik sla prijzen op als:
199,99
In MySQL doe ik in een SELECT, price+shipmentCost as totalPrice. Dit werkt niet. Het werkt wel wanneer ik de prijzen opsla als:
199.99
Dus een punt in plaats van een komma. Is hier omheen te werken op een nette manier?
quote:Op donderdag 28 november 2013 21:25 schreef xaban06 het volgende:
Nog een vraag, ik sla prijzen op als:
199,99
In MySQL doe ik in een SELECT, price+shipmentCost as totalPrice. Dit werkt niet. Het werkt wel wanneer ik de prijzen opsla als:
199.99
Dus een punt in plaats van een komma. Is hier omheen te werken op een nette manier?
1 2 3 4 5 | $price = 1999.99; $price = number_format($price, 2, ',', '.'); print $price . "\n"; # geeft 1.999,99 |
1 2 3 4 5 6 7 8 | setlocale(LC_ALL, array( 'nl_NL.utf8', 'nl_NL@euro', 'nl_NL.iso885915@euro', 'nl_NL.iso88591', 'nl_NL', 'POSIX', )); |
1 2 3 4 5 6 7 8 9 10 | <?php SELECT * FROM productoffers AS po WHERE po.id IN ( SELECT id FROM productoffers WHERE sellerId =1 ) AND po.sellerId = 2 ?> |
where po.sellerid = 1 and po.sellerid =2?quote:Op donderdag 28 november 2013 22:19 schreef TwenteFC het volgende:
[ code verwijderd ]
Ik wil de productprijzen op halen van producten die zowel bij shop A als bij shop B zijn, waar ga ik de fout in met deze query? Had het ook al met EXISTS geprobeerd maar ik loop even flink te kutten nu
Dan krijg ik alle producten seller 1 en 2, ongeacht of seller 1 en 2 het beide product hebben.quote:Op donderdag 28 november 2013 22:22 schreef slacker_nl het volgende:
[..]
where po.sellerid = 1 and po.sellerid =2?
Thanks, zal daar eens naar kijken. Het is allemaal read, ik doe verder zo goed als geen input/insertquote:Op donderdag 28 november 2013 21:56 schreef slacker_nl het volgende:
[..]
[ code verwijderd ]
Zo kan je het in je weergave aanpassen, ik zou het gewoon goed als float/double opslaan in je DB. En als centen opslaan in je DB.. mja, ik snap die redenatie niet. Alsof floats/doubles zo moeilijk zijn voor een database...
Je kan overigens ook..
[ code verwijderd ]
proberen te gebruiken. Maar dat kan eventueel misgaan bij de input naar de database. Dan moet je binnen je transactie wellicht even de locale terugzetten naar iets Engelsachtig (LC_MONETARY en/of LC_NUMERIC aanpassen helpt al).
hoezo, tis geen or toch? where (po.sellerid = 1 and po.sellerid = 2) and .. zou m.i. moeten werken.quote:Op donderdag 28 november 2013 22:24 schreef TwenteFC het volgende:
[..]
Dan krijg ik alle producten seller 1 en 2, ongeacht of seller 1 en 2 het beide product hebben.
hoe kan één sellerId 1 en 2 zijn dan?quote:Op donderdag 28 november 2013 22:29 schreef slacker_nl het volgende:
[..]
hoezo, tis geen or toch? where (po.sellerid = 1 and po.sellerid = 2) and .. zou m.i. moeten werken.
Owja, das waar, maar je kan ook joinen met jezelf volgens mij.quote:Op donderdag 28 november 2013 22:32 schreef TwenteFC het volgende:
[..]
hoe kan één sellerId 1 en 2 zijn dan?
Maar heb het al opgelost, er was simpelweg geen product dat zowel bij 1 als 2 beschikbaar was Het wordt hoogtijd dat ik ga slapen.
1 2 3 4 5 6 7 8 | SELECT * FROM productoffer AS po JOIN productoffer AS po2 on po2.id = po.id AND po.reseller_id = 1 WHERE po2.reseller_id = 2; |
Heb het nu werkend maar je kan inderdaad gewoon een query in de ON gooien.quote:Op donderdag 28 november 2013 22:37 schreef slacker_nl het volgende:
[..]
Owja, das waar, maar je kan ook joinen met jezelf volgens mij.
dan krijg je iets als
[ code verwijderd ]
Al kan die AND in de JOIN ook een WHERE zijn, over die syntax twijfel ik even..
setlocale lijkt geen verandering er in te brengen.quote:Op donderdag 28 november 2013 21:56 schreef slacker_nl het volgende:
[..]
[ code verwijderd ]
Zo kan je het in je weergave aanpassen, ik zou het gewoon goed als float/double opslaan in je DB. En als centen opslaan in je DB.. mja, ik snap die redenatie niet. Alsof floats/doubles zo moeilijk zijn voor een database...
Je kan overigens ook..
[ code verwijderd ]
proberen te gebruiken. Maar dat kan eventueel misgaan bij de input naar de database. Dan moet je binnen je transactie wellicht even de locale terugzetten naar iets Engelsachtig (LC_MONETARY en/of LC_NUMERIC aanpassen helpt al).
NOT MATCH(...)quote:Op vrijdag 29 november 2013 21:15 schreef TwenteFC het volgende:
Ik wil in SQL met MATCH de overeenkomsten van een zoekopdracht vergelijk met een kolom en daar een percentage uit berekenen, dit werkt nu al goed.
Maar hoe kan ik woorden uitsluiten van deze match?
Een database kan prima floats en doubles opslaan, maar de exacte waarde die je opslaat is niet de waarde die je terugkrijgt. Floats en doubles kunnen namelijk niet ieder getal exact weergeven. 1,99 wordt dan misschien 1,9899999999. En dat gaat vroeg of laat afrondingsproblemen geven die ook nog eens best lastig te vinden zijn. Bij financiele informatie is dat niet wenselijk, dus kun je beter met centen rekenen en pas bij weergave afronden.quote:Op donderdag 28 november 2013 21:56 schreef slacker_nl het volgende:
Zo kan je het in je weergave aanpassen, ik zou het gewoon goed als float/double opslaan in je DB. En als centen opslaan in je DB.. mja, ik snap die redenatie niet. Alsof floats/doubles zo moeilijk zijn voor een database...
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.quote:Op vrijdag 29 november 2013 22:33 schreef Light het volgende:
[..]
Een database kan prima floats en doubles opslaan, maar de exacte waarde die je opslaat is niet de waarde die je terugkrijgt. Floats en doubles kunnen namelijk niet ieder getal exact weergeven. 1,99 wordt dan misschien 1,9899999999. En dat gaat vroeg of laat afrondingsproblemen geven die ook nog eens best lastig te vinden zijn. Bij financiele informatie is dat niet wenselijk, dus kun je beter met centen rekenen en pas bij weergave afronden.
Light overdrijft een beetje, maar heeft wel een puntje.quote:Op vrijdag 29 november 2013 22:35 schreef slacker_nl het volgende:
[..]
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.
Zie bijvoorbeeld ook hier:quote:Op vrijdag 29 november 2013 22:35 schreef slacker_nl het volgende:
[..]
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.
Het is gewoon opletten met wat je doet, bijv round(1.4545,2) geeft 1.45 terug.quote:Op vrijdag 29 november 2013 22:35 schreef slacker_nl het volgende:
[..]
Jij wilt zeggen dat een postgres of mysql or oracle 1,99 als 1,98999 of als 1,97 teruggeeft? Ik geloof daar geen drol van.
Het probleem is niet round(), het probleem is die 1.4545 en de nauwkeurigheid daarvan. Als je alleen dat getal hebt, zal het wel goed gaan. Als je spannende berekeningen doet en verschillende getallen gebruikt, kun je een afwijking krijgen.quote:Op vrijdag 29 november 2013 22:43 schreef TwenteFC het volgende:
[..]
Het is gewoon opletten met wat je doet, bijv round(1.4545,2) geeft 1.45 terug.
Vreemd, hier wel. Wat is de return value van setlocale? Zie de docs even, daar staan wat nuttige dingen in..quote:Op vrijdag 29 november 2013 21:48 schreef xaban06 het volgende:
[..]
setlocale lijkt geen verandering er in te brengen.
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 | CREATE TABLE `group` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `name` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `location` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `group_id` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `room` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `location_id` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `opening_hours` ( `id` TINYINT NULL AUTO_INCREMENT DEFAULT NULL, `open_time` TIME NULL DEFAULT NULL, `close_time` TIME NULL DEFAULT NULL, `weekday` TINYINT NULL DEFAULT NULL, PRIMARY KEY (`id`) ); |
Opzich ook een mooie oplossing inderdaad, alleen heb ik hier een ander probleem, namelijk dat de openingstijden per dag verschillend kunnen zijn (het weekday veld in opening_hours) Dat betekent dat ieder eigenlijk 7 "openingstijden" heeft. Om nou aan elke tabel zeven velden toe te voegen lijkt me ook niet erg mooi.quote:Op zondag 1 december 2013 13:41 schreef papernote het volgende:
Derde optie: een opening_hours_id toevoegen aan group, location en room welke ook NULL kan zijn.
Dan kun je beter aan de tabel opening_hours een kolom location_id (of room_id) toevoegen, om aan te geven voor welke locatie die openingstijden gelden. Dan weet je ook zeker dat je voor iedere lokatie de tijden apart kunt aanpassen zonder dat je tijden van andere lokaties verandert.quote:Op zondag 1 december 2013 13:53 schreef Alfje het volgende:
[..]
Opzich ook een mooie oplossing inderdaad, alleen heb ik hier een ander probleem, namelijk dat de openingstijden per dag verschillend kunnen zijn (het weekday veld in opening_hours) Dat betekent dat ieder eigenlijk 7 "openingstijden" heeft. Om nou aan elke tabel zeven velden toe te voegen lijkt me ook niet erg mooi.
Als je het echt wilt normaliseren ontkomt je daar niet aan, anders gaat het botsen met je business rules. Wat je nog wel zou kunnen doen is een table "opening schema's" maken waarin je dus verschillende sets van openingstijden kunt definieren, eventueel zou je dat ook weer naar 2 tables kunnen normaliseren met weer een opsplitsing per dag.quote:Op zondag 1 december 2013 13:53 schreef Alfje het volgende:
[..]
Opzich ook een mooie oplossing inderdaad, alleen heb ik hier een ander probleem, namelijk dat de openingstijden per dag verschillend kunnen zijn (het weekday veld in opening_hours) Dat betekent dat ieder eigenlijk 7 "openingstijden" heeft. Om nou aan elke tabel zeven velden toe te voegen lijkt me ook niet erg mooi.
1 | PHP Fatal error: Cannot use object of type mysqli_result as array in file.php |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $productQuery = "SELECT ean, name FROM products WHERE category = '$category'"; $productResult = $mysqli->query($productQuery); while ($productRow = $productResult->fetch_assoc()) { $productPriceQuery = "SELECT ean, price+shipmentCost AS totalPrice FROM prices WHERE ean = $productRow[ean] ORDER BY totalPrice ASC"; $productPriceResult = $mysqli->query($productPriceQuery); $totalPrice = $productPriceResult->fetch_assoc(); echo $productPriceResult["productURL"]; } ?> |
quote:Return Values
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
Ik weet dat het efficienter kan dmv een 1 langere query, maar voor nu wil ik het doen zoals ik het heb, moet ook gewoon kunnen toch?quote:Op donderdag 5 december 2013 16:00 schreef zoem het volgende:
Beste oplossing (vziw ik uit de context kan halen): gebruik een JOIN.
Oplossing voor jouw snippet: sla de documentatie erop na
[..]
Natuurlijk, dat gaat ook werken. Alleen kan het aantal queries dan gigantisch oplopen als je een hele reeks aan producten hebt, waardoor de pagina traag wordt en/of de server het (onnodig) druk kan krijgen bij veel bezoekers.quote:Op donderdag 5 december 2013 16:05 schreef xaban06 het volgende:
[..]
Ik weet dat het efficienter kan dmv een 1 langere query, maar voor nu wil ik het doen zoals ik het heb, moet ook gewoon kunnen toch?
Klopt, maar dat is het geval niet En ik wil het liever nu werkend hebben dan dat ik me weer moet inlezen, proberen, repareren, proberen, etc etc. Kost erg veel tijd voor nuquote:Op donderdag 5 december 2013 16:08 schreef zoem het volgende:
[..]
Natuurlijk, dat gaat ook werken. Alleen kan het aantal queries dan gigantisch oplopen als je een hele reeks aan producten hebt, waardoor de pagina traag wordt en/of de server het (onnodig) druk kan krijgen bij veel bezoekers.
En daarbij nog de overhead welke wordt veroorzaakt door het verkeer tussen het script en de MySQL server... Ik zou zelf niet zo snel query's in een loop gaan zetten als dat niet nodig is.quote:Op donderdag 5 december 2013 16:08 schreef zoem het volgende:
[..]
Natuurlijk, dat gaat ook werken. Alleen kan het aantal queries dan gigantisch oplopen als je een hele reeks aan producten hebt, waardoor de pagina traag wordt en/of de server het (onnodig) druk kan krijgen bij veel bezoekers.
quote:Op donderdag 5 december 2013 16:09 schreef xaban06 het volgende:
[..]
Klopt, maar dat is het geval niet En ik wil het liever nu werkend hebben dan dat ik me weer moet inlezen, proberen, repareren, proberen, etc etc. Kost erg veel tijd voor nu
Wat is er precies fout in mijn script?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $productQuery = "SELECT ean, name FROM products WHERE category = '$category'"; $productResult = $mysqli->query($productQuery); while ($productRow = $productResult->fetch_assoc()) { $productPriceQuery = "SELECT ean, price+shipmentCost AS totalPrice FROM prices WHERE ean = $productRow[ean] ORDER BY totalPrice ASC"; $productPriceResult = $mysqli->query($productPriceQuery); $totalPrice = $productPriceResult->fetch_assoc(); echo $productPriceResult["productURL"]; // productPriceResult is dus een mysqli object, geen array echo $totalPrice["productURL"]; // totalPrice moet je hebben, want die had je al omgezet naar een assoc array } ?> |
Je kunt je query simpelweg aanpassen naar:quote:Op donderdag 5 december 2013 16:09 schreef xaban06 het volgende:
[..]
Klopt, maar dat is het geval niet En ik wil het liever nu werkend hebben dan dat ik me weer moet inlezen, proberen, repareren, proberen, etc etc. Kost erg veel tijd voor nu
Wat is er precies fout in mijn script?
1 2 3 4 | $productQuery = "SELECT products.ean, products.name, prices.price+prices.shipmentCost AS totalPrice, products.productURL FROM products JOIN prices ON products.ean = prices.ean WHERE category = '$category'"; |
Hartstikke bedankt voor de query, wordt gewaardeerd, maar mijn query wordt straks nog langer en dan weet ik dat ik er niet meer uit zal komen, vandaar hield ik het simpelquote:Op donderdag 5 december 2013 16:15 schreef bondage het volgende:
[..]
Je kunt je query simpelweg aanpassen naar:
[ code verwijderd ]
De laatste regel in de loop is de verbetering, de voorlaatste regel is foutief.quote:Op donderdag 5 december 2013 16:15 schreef xaban06 het volgende:
[..]
Ik zie geen verschil tussen jouw en mijn code, of wel?
De vraag is of er meerdere prijzen zijn per artikel, want dan moet de code iets aangepast worden. Anders was dit een prima drop-in replacement geweestquote:Op donderdag 5 december 2013 16:15 schreef bondage het volgende:
[..]
Je kunt je query simpelweg aanpassen naar:
[ code verwijderd ]
Per product zijn er meerdere prijzen, ik haal de goedkoopste eruit per product.quote:Op donderdag 5 december 2013 16:17 schreef zoem het volgende:
[..]
De laatste regel in de loop is de verbetering, de voorlaatste regel is foutief.
[..]
De vraag is of er meerdere prijzen zijn per artikel, want dan moet de php code iets aangepast worden.
Deze query zou die data moeten teruggeven. Kan echter niet testen en weet niet zeker of het zo klopt... Misschien dat zoem hier eventueel een aanvulling op kan geven.quote:Op donderdag 5 december 2013 16:18 schreef xaban06 het volgende:
[..]
Per product zijn er meerdere prijzen, ik haal de goedkoopste eruit per product.
1 2 3 4 5 6 7 8 | SELECT * FROM ( SELECT products.ean, products.name, prices.price+prices.shipmentCost AS totalPrice, products.productURL FROM products JOIN prices ON products.ean = prices.ean WHERE category = '$category' ) AS t GROUP BY t.ean HAVING t.totalPrice = MIN(t.totalPrice) |
Dit is inderdaad de juiste manier, en juist op deze manier hou je je queries ook redelijk leesbaar vind ik.quote:Op donderdag 5 december 2013 16:30 schreef bondage het volgende:
[..]
Deze query zou die data moeten teruggeven. Kan echter niet testen en weet niet zeker of het zo klopt... Misschien dat zoem hier eventueel een aanvulling op kan geven.
[ code verwijderd ]
Thanks voor deze reactie.quote:Op donderdag 5 december 2013 16:32 schreef zoem het volgende:
Dat is het bekende groupwise maximum (of minimum) probleem. Via de bekende zoekmachine zijn daar tal voorbeelden en oplossingen over te vinden.
1 2 3 | SELECT products.ean, prices.ean, prices.price FROM products, prices WHERE prices.price=(SELECT MIN(prices.price) FROM prices WHERE products.ean = prices.ean); |
prices.price+prices.shipmentCost AS totalPrice in de select werkt niet? Als het niet werkt zou je je query in een andere query kunnen zetten en dan in de buitenste query de waarden optellen.quote:Op donderdag 5 december 2013 23:51 schreef xaban06 het volgende:
[..]
Thanks voor deze reactie.
Volgens mij moet dit werken:
[ code verwijderd ]
/edit
het lijkt te werken, echter wil ik price+shipmentCost bijelkaar optellen, dan veranderd de WHERE, maar snap m niet helemaal
1 2 3 | # De syntax zal wellicht iets anders zijn, maar gebruik het! $stm = $PDO_object->prepare("SELECT * FROM meuk WHERE iets = ?"); $stm->execute($bla); |
Als je toch PDO gaat gebruiken, gebruikt dan BindParams. Dan je meteen typecasten en andere restricties op je input zetten.quote:Op vrijdag 6 december 2013 10:06 schreef slacker_nl het volgende:
Kennen jullie PDO? Ga het gebruiken!! Die sql die "SELECT * FROM meuk where iets = $bla"; is jakkes. Maak een prepared statement en execute die:
[ code verwijderd ]
Hoe heet je tabel en kolomnamen?quote:Op zondag 8 december 2013 18:28 schreef Onnoman het volgende:
Rij1: |1| |2| |3|
Rij2: |1| |2| |3|
Rij3: |1| |3| |4|
Rij4: |1| |5| |6|
Met bovenstaande tabel wil ik graag het resultaat van de bovenste 2 rijen terug krijgen omdat rij 2 de waarde 2 heeft en rij 3 de waarde 3.
welke query moet ik hiervoor uitvoeren?
alvast bedankt
Wat heb je al geprobeerd?quote:Op zondag 8 december 2013 18:28 schreef Onnoman het volgende:
Rij1: |1| |2| |3|
Rij2: |1| |2| |3|
Rij3: |1| |3| |4|
Rij4: |1| |5| |6|
Met bovenstaande tabel wil ik graag het resultaat van de bovenste 2 rijen terug krijgen omdat rij 2 de waarde 2 heeft en rij 3 de waarde 3.
welke query moet ik hiervoor uitvoeren?
alvast bedankt
Leg eens uit waarom je dit doet. Wat is het echt probleem. Je echte kolomnamen. Dit is namelijk niet erg duidelijk.quote:Op zondag 8 december 2013 18:56 schreef Onnoman het volgende:
ik wil eigenlijk een count doen op het aantal rijen met de zelfde kolom waardes
dus hoeveel rijen uit mijn tabel heeft een overeenkomstige waarde in kolom 2 en 3
ik dacht iets van
Select kolom2, kolom3, count(*) from table
group by kolom2, kolom3
having count(*) > 3;
maar dit gaat niet helemaal goed
is ook niet relevant.. het gaat mij puur om een voorbeeld query volgens mijn omschrijvingquote:Op zondag 8 december 2013 18:59 schreef totalvamp het volgende:
[..]
Leg eens uit waarom je dit doet. Wat is het echt probleem. Je echte kolomnamen. Dit is namelijk niet erg duidelijk.
Misschien is je tabel opzet wel verkeerd en ben je op de verkeerde wijze bezig.quote:Op zondag 8 december 2013 19:00 schreef Onnoman het volgende:
[..]
is ook niet relevant.. het gaat mij puur om een voorbeeld query volgens mijn omschrijving
ik wil namelijk de relatie met andere tabellen achterhalen
nou ik heb een kolom met de naam: straatnaam, huisnummer, en kamernummerquote:Op zondag 8 december 2013 19:02 schreef totalvamp het volgende:
[..]
Misschien is je tabel opzet wel verkeerd en ben je op de verkeerde wijze bezig.
Daarom is het relevant zodat ik een algemeen idee kan krijgen wat je wilt met je query
Geen manier om het te testen maar zoiets zou kunnen werken.quote:Op zondag 8 december 2013 19:10 schreef Onnoman het volgende:
[..]
nou ik heb een kolom met de naam: straatnaam, huisnummer, en kamernummer
ik wil een count doen op alle rijen die dezelfde straatnaam en huisnummer hebben
Dat is mooi!quote:Op zondag 8 december 2013 19:20 schreef Onnoman het volgende:
heb het trouwens al gevonden
mijn eerste query was toch goed
Ook goed!quote:Op vrijdag 6 december 2013 11:00 schreef Boze_Appel het volgende:
[..]
Als je toch PDO gaat gebruiken, gebruikt dan BindParams. Dan je meteen typecasten en andere restricties op je input zetten.
Standaardgedrag van exit() en (die(), want dat is een alias voor exit() ) als de parameter een string is. Als je een integer als parameter geeft, wordt dat de exit code. Maar daar heb je niets aan bij webpagina's.quote:Op zondag 8 december 2013 19:00 schreef Robuustheid het volgende:
[..]
Waarom toont de exit-functie de parameter?
Edit, laat maar.quote:Op zondag 8 december 2013 19:00 schreef Onnoman het volgende:
[..]
is ook niet relevant.. het gaat mij puur om een voorbeeld query volgens mijn omschrijving
ik wil namelijk de relatie met andere tabellen achterhalen
Of stored procedures, zijn ook nog eens makkelijker te testen.quote:
http://www.mysql.com/products/workbench/quote:Op donderdag 12 december 2013 14:35 schreef Onnoman het volgende:
Kent iemand een tooltje waarmee je van een sql of xml bestand een database diagram kan genereren?
Dus met relatie lijntjes enzo?
alvast bedankt!
quote:Op donderdag 12 december 2013 15:31 schreef Aether het volgende:
[..]
http://www.mysql.com/products/workbench/
http://www.fabforce.net/dbdesigner4/
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |