abonnement Unibet Coolblue
pi_145415554
quote:
1s.gif Op woensdag 8 oktober 2014 17:04 schreef slacker_nl het volgende:
[..]
Klopt. Op mijn werk is het Perl en JS (angular) wat de klok slaat.
Een van de weinige bedrijven waar nog het een en ander met Perl gedaan wordt, denk ik.
  zaterdag 11 oktober 2014 @ 06:43:08 #227
187069 slacker_nl
Sicko pur sang
pi_145421005
quote:
0s.gif Op vrijdag 10 oktober 2014 23:11 schreef Light het volgende:

[..]

Een van de weinige bedrijven waar nog het een en ander met Perl gedaan wordt, denk ik.
Valt mee. Krijg geregeld aanbiedingen van head hunters/recruiters.
In theory there is no difference between theory and practice. In practice there is.
pi_145421094
1
2
3
<?php
date_format
(new DateTime($test->datum), 'd F Y');
?>

Wordt weergegeven als: 27 January 2014
Dit wil ik vertalen naar het Nederlands, dus: 27 januari 2014

Volgens mij moet dit met setlocale(LC_TIME, "nl_NL"); + strftime();

Ik kom er echter niet uit om strftime(); te gebruiken zonder een extra regel hoeven te gebruiken. Of ontkom ik daar niet aan?

[ Bericht 0% gewijzigd door xaban06 op 11-10-2014 07:38:13 ]
  zaterdag 11 oktober 2014 @ 09:29:53 #229
187069 slacker_nl
Sicko pur sang
pi_145421702
quote:
0s.gif Op zaterdag 11 oktober 2014 07:32 schreef xaban06 het volgende:
[ code verwijderd ]
Wordt weergegeven als: 27 January 2014
Dit wil ik vertalen naar het Nederlands, dus: 27 januari 2014
Volgens mij moet dit met setlocale(LC_TIME, "nl_NL"); + strftime();
Ik kom er echter niet uit om strftime(); te gebruiken zonder een extra regel hoeven te gebruiken. Of ontkom ik daar niet aan?
1
2
3
4
5
6
7
8
9
10
date_default_timezone_set("Europe/Amsterdam");
# Ik zet alles om naar NL, jij alleen je tijd. Pick any.
setlocale(LC_ALL, array(
    'nl_NL.utf8',
    'nl_NL@euro',
    'nl_NL.iso885915@euro',
    'nl_NL.iso88591',
    'nl_NL',
    'POSIX',
));
Zoiets? Nee, je moet inderdaad de strftime gebruiken, die maakt gebruik van de locale setting.

1
2
setlocale(LC_TIME, "de_DE"); //only necessary if the locale isn't already set
$formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp())
http://stackoverflow.com/(...)ing-localegetdefault

[ Bericht 16% gewijzigd door slacker_nl op 11-10-2014 09:47:44 ]
In theory there is no difference between theory and practice. In practice there is.
pi_145421798
quote:
0s.gif Op zaterdag 11 oktober 2014 09:29 schreef slacker_nl het volgende:
[..]
[ code verwijderd ]
Zoiets?
Volgens mij ben ik onduidelijk geweest met mijn vraag :P

Dit wordt in het Engels weergegeven:
1
2
3
<?php
date_format
(new DateTime($test->datum), 'd F Y');
?>

Dat wil ik in het Nederlands, daarvoor moet ik functie strftime(); gebruiken, maar krijg het niet helemaal geimplementeerd. Of ik moet met extra regels en $vars werken.
  zaterdag 11 oktober 2014 @ 09:49:00 #231
187069 slacker_nl
Sicko pur sang
pi_145421924
In theory there is no difference between theory and practice. In practice there is.
pi_145421925
Opgelost :)
1<?php echo strftime("%e %B %Y"strtotime($test->datum)); ?>
  zaterdag 11 oktober 2014 @ 09:52:43 #233
187069 slacker_nl
Sicko pur sang
pi_145421961
quote:
0s.gif Op zaterdag 11 oktober 2014 09:49 schreef xaban06 het volgende:
Opgelost :)
[ code verwijderd ]
Dat zou ik die strtotime weglaten en gelijk $test->datum->getTimestamp doen.
In theory there is no difference between theory and practice. In practice there is.
pi_145453078
Mijn website wordt op het moment zo opgebouwd (index.php):

- include controller.php (deze checkt in de URI welke pagina geladen moet worden en slaat dit op als $show == "blog" of $show == "contact".)
- include "inc/header-html.php";
- if ($show == "blog") { include "inc/blog.php"; }
- if ($show == "contact") { include "inc/contact.php"; }
- include "inc/footer-html.php";

Het probleem hierbij is dat de <meta> en <title> altijd hetzelfde is, omdat ik in blog.php/contact.php pas weet welke data er getoond zal worden, terwijl de <meta>/<title> in "inc/header-html.php" zit.

Dit dacht ik op te lossen door mijn index.php aan te passen naar:
- include functions.php
- include controller.php (deze checkt in de URI welke pagina geladen moet worden en slaat dit op als $show == "blog" or $show == "contact")
- if ($show == "blog") { include "inc/blog.php"; }
- if ($show == "contact") { include "inc/contact.php"; }

Het verschil zit hem in dat de header-html.php wordt geladen in blog.php/contact.php.

functions.php:
1
2
3
4
5
6
7
8
9
10
11
<?php
function showPage($page) {
    
$inc    "inc/";

    include 
$inc .'header-html.php';
    
    include 
$inc ."$page";
    
    include 
$inc .'footer-html.php';
}
?>
En in blog.php/contact.php heb ik dan:
// hoop php script, waar ik dus ook gelijk <meta>/<title> definieer en onderaan heb ik dan:
showPage("blog-html.php");

De HTML wordt netjes opgebouwd, maar veel $vars/$objects worden genegeerd. Heeft dat te maken met de functie die ik gebruik? Kan je geen bestanden includen binnen een functie oid?
pi_145453804
Zie http://php.net/manual/en/function.include.php en http://php.net/manual/en/language.variables.scope.php

Als je include aanroept, dan heb je in het geïncludeerde bestand de beschikking over de variablen die binnen scope vallen op de regel van de include. Dus in jouw geval: alle variabelen die binnen de functie showPage beschikbaar zijn. Daar vallen variabelen uit blog.php/contact.php waarschijnlijk niet onder.

Overigens kun je jouw probleem wellicht beter oplossen middels output buffering. Voorbeeld:

1
2
3
4
5
6
7
8
9
<?php
ob_start
();
include 
'blog.php'// Zet ook de meta/title objecten
$content ob_get_clean();

include 
'header-html.php';
echo 
$content;
include 
'footer-html.php';
?>
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_145454285
quote:
2s.gif Op zondag 12 oktober 2014 13:54 schreef papernote het volgende:
Zie http://php.net/manual/en/function.include.php en http://php.net/manual/en/language.variables.scope.php
Als je include aanroept, dan heb je in het geïncludeerde bestand de beschikking over de variablen die binnen scope vallen op de regel van de include. Dus in jouw geval: alle variabelen die binnen de functie showPage beschikbaar zijn. Daar vallen variabelen uit blog.php/contact.php waarschijnlijk niet onder.
Overigens kun je jouw probleem wellicht beter oplossen middels output buffering. Voorbeeld:
[ code verwijderd ]
Als ik het goed begrijp alles wat tussen ob_start(); en ob_get_clean(); staat wordt niet verzonden, maar vastgehouden in een buffer? Tot dat je het zelf echo'd? Maar je kan de data die worden genereerd in je buffer wel gewoon gebruiken zonder te verzenden?

Ben een vrij rookie met php en nog nooit output buffering gebruikt.
pi_145454397
Correct. Alle php-code tussen ob_start en ob_get_clean wordt uitgevoerd, maar de output wordt gebufferd (in het voorbeeld sla ik het op in $content).

Als je dus in blog.php iets doet als: $meta = "lalala"; $title = "lololo"; , dan kun je dat verderop gebruiken.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  zondag 12 oktober 2014 @ 14:24:35 #238
187069 slacker_nl
Sicko pur sang
pi_145454693
Maar om dit soort problemen te voorkomen hebben we toch templating engines?
In theory there is no difference between theory and practice. In practice there is.
pi_145454900
quote:
0s.gif Op zondag 12 oktober 2014 14:24 schreef slacker_nl het volgende:
Maar om dit soort problemen te voorkomen hebben we toch templating engines?
Geen ervaring mee. Ik doe het in mijn vrije tijd en helaas te weinig tijd om het allemaal te leren.
  zondag 12 oktober 2014 @ 14:32:42 #240
12221 Tijn
Powered by MS Paint
pi_145454975
quote:
1s.gif Op zondag 12 oktober 2014 14:30 schreef xaban06 het volgende:

[..]

Geen ervaring mee. Ik doe het in mijn vrije tijd en helaas te weinig tijd om het allemaal te leren.
Juist als je er weinig tijd in wil steken zou ik gebruik maken van bestaande systemen dan zelf iets in elkaar te gaan rommelen.
  maandag 13 oktober 2014 @ 15:42:59 #241
37634 wobbel
Da WoBBeL King
pi_145494353
Hoe krijg ik van onderstaande XML alle nummers in een array? Soms zijn het 10 nummers, soms is het er maar 1....

Met simplexml_load_string weet ik niet hoe ik hiervan een array moet bakken waar ik vervolgens iets mee kan :@ ik kan dan niet met een foreach loopen door de nummers bijvoorbeeld

Na het laden van simplexml_load_string kan ik er wel een array van printen met print_r ( $xml->messagebody->order->mobilenumbers ); maar dan kan ik er geen foreachje mee doen

[update]
Op de volgende manier is het gelukt. Is dit netjes of is dit om te janken?

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
foreach($xml->messagebody->order->mobilenumbers as $nummer)
{
    
    foreach ( 
$nummer->number as $value )
    {
        
        echo 
"Nummer: " $value "<br /><br />";    
        
    }
    
}    
?>

Voorbeeld met 1 nummer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<mobile_orderdetail_ack xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <messageheader>
    <messagetype>mobile_orderdetail_ack</messagetype>
    <messageversion>01</messageversion>
    <timestamp>2014-10-13T15:28:04+02:00</timestamp>
    <reference>abchenkdetank</reference>
    <requestid>12345-REQUEST-ID</requestid>
  </messageheader>
  <messagebody>
    <order>
      <general>
        <customer>Klantnaam</customer>
        <orderdate>2014-06-24</orderdate>
        <msub>msub1337</msub>
      </general>
      <mobilenumbers>
        <number>0612345678</number>
      </mobilenumbers>
      </orders>
    </order>
  </messagebody>
</mobile_orderdetail_ack>

Voorbeeld met 3 nummers

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
<?xml version="1.0" encoding="UTF-8"?>
<mobile_orderdetail_ack xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <messageheader>
    <messagetype>mobile_orderdetail_ack</messagetype>
    <messageversion>01</messageversion>
    <timestamp>2014-10-13T15:28:04+02:00</timestamp>
    <reference>abchenkdetank</reference>
    <requestid>12345-REQUEST-ID</requestid>
  </messageheader>
  <messagebody>
    <order>
      <general>
        <customer>Klantnaam</customer>
        <orderdate>2014-06-24</orderdate>
        <msub>msub1337</msub>
      </general>
      <mobilenumbers>
        <number>0612345678</number>
        <number>0612341234</number>
        <number>0687654321</number>
      </mobilenumbers>
      </orders>
    </order>
  </messagebody>
</mobile_orderdetail_ack>


[ Bericht 4% gewijzigd door wobbel op 13-10-2014 15:58:11 ]
pi_145499094
quote:
0s.gif Op maandag 13 oktober 2014 15:42 schreef wobbel het volgende:
Hoe krijg ik van onderstaande XML alle nummers in een array? Soms zijn het 10 nummers, soms is het er maar 1....
Met simplexml_load_string weet ik niet hoe ik hiervan een array moet bakken waar ik vervolgens iets mee kan :@ ik kan dan niet met een foreach loopen door de nummers bijvoorbeeld
Na het laden van simplexml_load_string kan ik er wel een array van printen met print_r ( $xml->messagebody->order->mobilenumbers ); maar dan kan ik er geen foreachje mee doen
[update]
Op de volgende manier is het gelukt. Is dit netjes of is dit om te janken?
[ code verwijderd ]
Voorbeeld met 1 nummer
[ code verwijderd ]
Voorbeeld met 3 nummers
[ code verwijderd ]
Kan dat niet korter?

1
2
3
4
5
<?php
foreach($xml->messagebody->order->mobilenumbers->number as $value ) {
  echo 
"Nummer: " $value "<br /><br />";    
}
?>

edit: je voorbeeld XML is invalid (er staat een </orders> die daar niet hoort).
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  maandag 13 oktober 2014 @ 18:07:24 #243
187069 slacker_nl
Sicko pur sang
pi_145499591
quote:
5s.gif Op maandag 13 oktober 2014 17:53 schreef papernote het volgende:
[..]
Kan dat niet korter?
[ code verwijderd ]
edit: je voorbeeld XML is invalid (er staat een </orders> die daar niet hoort).
Dat ligt eraan, als mobilenumbers een scalar value teruggeeft is jouw voorbeeld goed, maar als ie in list-context iets teruggeeft gaat het fout, want dat zit je op een lijst ->number uit te voeren en volgens mij kent een php array geen 'number' method.

Mogelijk kan je array_map gebruiken, http://stackoverflow.com/(...)rray-using-array-map
In theory there is no difference between theory and practice. In practice there is.
pi_145500820
quote:
0s.gif Op maandag 13 oktober 2014 18:07 schreef slacker_nl het volgende:
[..]
Dat ligt eraan, als mobilenumbers een scalar value teruggeeft is jouw voorbeeld goed, maar als ie in list-context iets teruggeeft gaat het fout, want dat zit je op een lijst ->number uit te voeren en volgens mij kent een php array geen 'number' method.
Mogelijk kan je array_map gebruiken, http://stackoverflow.com/(...)rray-using-array-map
Dat "number" is een onderdeel van de XML, geen PHP aanroep. Zie de voorbeeld XML in de post van wobbel. Mijn code werkt op beide voorbeelden (na de aanpassing van de edit).

Of begrijp ik je niet goed?
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_145504275
1
2
REPLACE INTO tabel(naam,stad,leeftijd)
VALUES('Jan','Rotterdam','18')

1
2
REPLACE INTO tabel(naam,stad,leeftijd)
VALUES('Jan','Amsterdam','18')

1
2
REPLACE INTO tabel(naam,stad,leeftijd)
VALUES('Jan','Rotterdam','20')

Wat doet dit? Maakt het 3 nieuwe records aan? Of wordt er met de eerste query een record aangemaakt en de tweede+derde record passen het aan?

Of is het mogelijk om aan te geven op welke veld hij moet matchen en aan de hand daarvan kiest om een record te updaten of een record toe te voegen?
pi_145505728
Als er een duplicate key zou zijn doet hij een DELETE en daarna alsnog een INSERT.

Als je wilt update moet je ON DUPLICATE KEY UPDATE gebruiken.
pi_145522193
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
  dinsdag 14 oktober 2014 @ 10:52:12 #248
187069 slacker_nl
Sicko pur sang
pi_145523904
quote:
2s.gif Op maandag 13 oktober 2014 18:42 schreef papernote het volgende:
[..]
Dat "number" is een onderdeel van de XML, geen PHP aanroep. Zie de voorbeeld XML in de post van wobbel. Mijn code werkt op beide voorbeelden (na de aanpassing van de edit).
Of begrijp ik je niet goed?
Waar ik over val is niet bestaand zie ik. Ik vond het nogal vreemd dat je $xml->mobilenumbers->number doet en dat ie dan over alle mobile numbers loopt. Daar had ik namelijk een lijst verwacht. Maar kennelijk is dat niet zo zie ik hier.
In theory there is no difference between theory and practice. In practice there is.
pi_145561504
Iemand hier bekend met Laravel Eloquent?
Ik heb 3 tabellen:
users
permissions
user_permissions

Nu wil ik met eagerloading een query maken hierop, waarbij permissions.name gebruikt wordt.

Normaal:
1
2
3
4
5
6
7
8
9
10
SELECT * 
FROM permissions
LEFT JOIN user_permissions
ON permissions.id = user_permissions.permission_id
LEFT JOIN users
ON user_permissions.user_id = users.id
WHERE
permissions.name = 'name.of.permission'
AND
users.id = 15
pi_145571268
weet iemand hoe ik een htaccess bestand uit een 'parent' directory kan laten negeren? bv:

public_html/www/index.php
public_html/www/.htaccess
public_html/www/blog/

en als dan public_html/www/blog/index.php wordt opgevraagd dat het bovenliggende .htaccess bestand geheel genegeerd wordt, is dat mogelijk?
..///
pi_145571906
quote:
0s.gif Op woensdag 15 oktober 2014 16:23 schreef wipes66 het volgende:
weet iemand hoe ik een htaccess bestand uit een 'parent' directory kan laten negeren? bv:
public_html/www/index.php
public_html/www/.htaccess
public_html/www/blog/
en als dan public_html/www/blog/index.php wordt opgevraagd dat het bovenliggende .htaccess bestand geheel genegeerd wordt, is dat mogelijk?
Een .htaccess in blog maken met:
1RewriteEngine Off
óf in de .htaccess toevoegen (uit m'n hoofd):
1RewriteConf %{REQUEST_URI} !^/blog/?
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_145572017
quote:
7s.gif Op woensdag 15 oktober 2014 16:39 schreef Aether het volgende:
[..]
Een .htaccess in blog maken met:
[ code verwijderd ]
óf in de .htaccess toevoegen (uit m'n hoofd):
[ code verwijderd ]
het gaat helaas niet alleen om rewrite rules, maar ook allerlei andere regels (white listing van bestanden etc). het hele htaccess moet dus genegeerd worden.
..///
pi_145579651
quote:
0s.gif Op woensdag 15 oktober 2014 16:42 schreef wipes66 het volgende:
[..]
het gaat helaas niet alleen om rewrite rules, maar ook allerlei andere regels (white listing van bestanden etc). het hele htaccess moet dus genegeerd worden.
Voor zover ik weet is dat niet mogelijk. Je zou in de bovenliggende htaccess moeten opgeven dat de regels daarin niet gelden voor een specifieke onderliggende map. Voorbeeld: http://stackoverflow.com/(...)ules-in-root-htacces
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  FOK!mycroftheld zondag 19 oktober 2014 @ 01:16:29 #254
128465 verified  bondage
niet meer aanwezig op FOK!
pi_145689110
MySQL query vraagje. Stel ik heb de volgende tekst:

quote:
bla
<blockquote>bla bla bla</blockquote>

bla bla
Ik wil daaruit de tekst tussen <blockquote> en </blockquote> hebben zodat ik tekst tussen tags apart van de rest kan verkrijgen, hiervoor heb ik het volgende bedacht:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   MID(
      `contents`, 
      LOCATE( '<blockquote>', `contents` ) + 12,
      (LOCATE( '</blockquote>', `contents` ) - LOCATE( '<blockquote>', `contents` )) - 12
   ) 
ELSE 
   '' 
END AS post_quote, 
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   CONCAT_WS(
      LEFT( `contents` , LOCATE( '<blockquote>', `contents`) - 1), ' ',
      RIGHT( `contents` , LENGTH(`contents`) - (LOCATE( '</blockquote>', `contents` ) + 12))
   )
ELSE 
   `contents` 
END AS post_contents 

Bovenstaande kan een kind van 4 nog bedenken en werkt prima zolang er slechts één quote in de tekst staat, zodra er meerdere in de tekst voorkomen gaat het mis.

Dit werkt bijvoorbeeld niet correct omdat er meerdere quotes in staan. De eerste quote gaat prima maar de rest wordt als post_contents gerekend.
quote:
<blockquote>quote 1</blockquote>

reactie 1

<blockquote>quote 2</blockquote>

reactie 2
Hier zou het volgende uit moeten komen:
In het veld post_contents: reactie 1 reactie 2
In het veld post_quote: quote 1 quote 2

Is dit überhaupt mogelijk met de string functies die MySQL beschikbaar heeft? Zo ja; hoe doe ik dit? Indien het niet mogelijk is jammer dan, maar kan altijd proberen. Ik kom er in ieder geval niet uit.

Testcase:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   MID(
      `contents`, 
      LOCATE( '<blockquote>', `contents` ) + 12,
      (LOCATE( '</blockquote>', `contents` ) - LOCATE( '<blockquote>', `contents` )) - 12
   ) 
ELSE 
   '' 
END AS post_quote, 
CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
   CONCAT_WS(
      LEFT( `contents` , LOCATE( '<blockquote>', `contents`) - 1), ' ',
      RIGHT( `contents` , LENGTH(`contents`) - (LOCATE( '</blockquote>', `contents` ) + 12))
   )
ELSE 
   `contents` 
END AS post_contents
FROM (
   SELECT 'bla bla bla <blockquote>quote 1</blockquote>reactie 1<blockquote>quote 2</blockquote> reactie 2' AS `contents`
) AS dummy
pi_145692106
Dat het kan betekent niet dat je het ook moet willen. Dit lijkt me typisch iets wat je in je businesslogic afhandelt ipv in een query.
  zondag 19 oktober 2014 @ 09:01:00 #256
187069 slacker_nl
Sicko pur sang
pi_145692186
Hij vind het leuk om zich in moeilijke situaties te knopen.

Maar agreed, dit moet je denk ik niet in je SQL stoppen, maar erbuiten.
In theory there is no difference between theory and practice. In practice there is.
  FOK!mycroftheld zondag 19 oktober 2014 @ 09:08:28 #257
128465 verified  bondage
niet meer aanwezig op FOK!
pi_145692223
quote:
14s.gif Op zondag 19 oktober 2014 08:47 schreef KomtTijd... het volgende:
Dat het kan betekent niet dat je het ook moet willen. Dit lijkt me typisch iets wat je in je businesslogic afhandelt ipv in een query.
Deze query wordt door Sphinx gebruikt om data te indexeren, ik moet deze data in twee velden in de index hebben zodat ze los van elkaar doorzocht kunnen worden. Ik kan in dit geval niets anders doen dan het in de query afhandelen.

quote:
3s.gif Op zondag 19 oktober 2014 09:01 schreef slacker_nl het volgende:
Hij vind het leuk om zich in moeilijke situaties te knopen.

Maar agreed, dit moet je denk ik niet in je SQL stoppen, maar erbuiten.
Eens, maar gaat in dit geval niet ;(
pi_145714105
Normaal heb ik bij een database tabel een veld genaamd 'id' met auto increment. Dit keer heb ik een andere veld welke uniek is en nooit dubbel kan zijn. Is het dan nog steeds handig/nodig om een id veld te hebben?
  zondag 19 oktober 2014 @ 21:25:47 #259
230788 n8n
Pragmatisch
pi_145714512
Hoe zet je tekstuele content in een database met behoud van opmaak? Html in de database lijkt me niet handig, stel dat je een keer van markup veranderd. Bbtags kan maar dat zal ook een keer veranderen, plus je moet alles vertalen. Ik zou zeggen bbtags als archivering, platte teksts om te zoeken en een gedeelte inclusief html markup in een cache. 3 keer opslaan dus of mis ik wat?
Specialization is for insects”.—Robert Heinlein
pi_145715567
quote:
0s.gif Op zondag 19 oktober 2014 21:19 schreef xaban06 het volgende:
Normaal heb ik bij een database tabel een veld genaamd 'id' met auto increment. Dit keer heb ik een andere veld welke uniek is en nooit dubbel kan zijn. Is het dan nog steeds handig/nodig om een id veld te hebben?
Nodig niet, of het handig is hangt af van je toepassing.
pi_145715645
quote:
0s.gif Op zondag 19 oktober 2014 21:19 schreef xaban06 het volgende:
Normaal heb ik bij een database tabel een veld genaamd 'id' met auto increment. Dit keer heb ik een andere veld welke uniek is en nooit dubbel kan zijn. Is het dan nog steeds handig/nodig om een id veld te hebben?
Gebruikelijk is om zowel de ruwe input als de HTML op te slaan. Waarom je ook nog platte tekst op zou willen slaan zou ik niet weten. Je kunt toch ook zoeken op de html/txt velden?
  zondag 19 oktober 2014 @ 21:54:40 #262
230788 n8n
Pragmatisch
pi_145716172
quote:
1s.gif Op zondag 19 oktober 2014 21:44 schreef KomtTijd... het volgende:

[..]

Gebruikelijk is om zowel de ruwe input als de HTML op te slaan. Waarom je ook nog platte tekst op zou willen slaan zou ik niet weten. Je kunt toch ook zoeken op de html/txt velden?
ik dacht anders zoekt ie de tags ook gezellig mee. Ok cool dankje
Specialization is for insects”.—Robert Heinlein
pi_145716265
quote:
1s.gif Op zondag 19 oktober 2014 21:44 schreef KomtTijd... het volgende:

[..]

Gebruikelijk is om zowel de ruwe input als de HTML op te slaan. Waarom je ook nog platte tekst op zou willen slaan zou ik niet weten. Je kunt toch ook zoeken op de html/txt velden?
Whut?
pi_145716484
quote:
1s.gif Op zondag 19 oktober 2014 21:54 schreef n8n het volgende:

[..]

ik dacht anders zoekt ie de tags ook gezellig mee. Ok cool dankje
Daar heb je zeker een punt ja. Je zou kunnen overwegen ook de platte tekst op te slaan idd, maar als je echt een fatsoenlijke zoekfunctie wilt maken komt daar nog heel wat meer bij kijken. Ik heb er geen ervaring me maar weet dat er hele studies maar verricht zijn.
  † In Memoriam † maandag 20 oktober 2014 @ 00:00:16 #265
159335 Boze_Appel
Vrij Fruit
pi_145719948
quote:
1s.gif Op zondag 19 oktober 2014 21:42 schreef KomtTijd... het volgende:

[..]

Nodig niet, of het handig is hangt af van je toepassing.
Als je id hebt buiten je primary doe je wat fout.
Carpe Libertatem
  maandag 20 oktober 2014 @ 11:10:12 #266
230788 n8n
Pragmatisch
pi_145726981
quote:
1s.gif Op maandag 20 oktober 2014 00:00 schreef Boze_Appel het volgende:

[..]

Als je id hebt buiten je primary doe je wat fout.
een id is toch nooit weg?
Specialization is for insects”.—Robert Heinlein
  maandag 20 oktober 2014 @ 11:11:40 #267
12221 Tijn
Powered by MS Paint
pi_145727030
quote:
7s.gif Op maandag 20 oktober 2014 11:10 schreef n8n het volgende:

[..]

een id is toch nooit weg?
Hij bedoelt denk ik een extra id buiten je primary key.
  maandag 20 oktober 2014 @ 11:11:45 #268
230788 n8n
Pragmatisch
pi_145727034
quote:
1s.gif Op zondag 19 oktober 2014 22:00 schreef KomtTijd... het volgende:

[..]

Daar heb je zeker een punt ja. Je zou kunnen overwegen ook de platte tekst op te slaan idd, maar als je echt een fatsoenlijke zoekfunctie wilt maken komt daar nog heel wat meer bij kijken. Ik heb er geen ervaring me maar weet dat er hele studies maar verricht zijn.
ongetwijfeld, denk voor de html-variant dat in veel gevallen ook op hele pagina’s gecached kan worden. Geeft een mooi beeld van wat er nou allemaal onderhouden/aangepast moet worden met een update ;(
Specialization is for insects”.—Robert Heinlein
  maandag 20 oktober 2014 @ 11:13:35 #269
230788 n8n
Pragmatisch
pi_145727087
quote:
2s.gif Op maandag 20 oktober 2014 11:11 schreef Tijn het volgende:

[..]

Hij bedoelt denk ik een extra id buiten je primary key.
ik heb op een site een unieke hash die ik als slug gebruik maar daarnaast ook een id, momenteel omdat ik daar nog op sorteer (oud naar nieuw, wordt nog aangepast). Een id veld maakt verder toch geen reet uit, als in een id is 'gratis'?
Specialization is for insects”.—Robert Heinlein
pi_145727148
quote:
1s.gif Op zondag 19 oktober 2014 22:00 schreef KomtTijd... het volgende:

[..]

Daar heb je zeker een punt ja. Je zou kunnen overwegen ook de platte tekst op te slaan idd, maar als je echt een fatsoenlijke zoekfunctie wilt maken komt daar nog heel wat meer bij kijken. Ik heb er geen ervaring me maar weet dat er hele studies maar verricht zijn.
Het valt heel erg mee, maar ik zou voor een beetje fatsoenlijke zoekfunctie inderdaad gewoon fatsoenlijke search software gebruiken zoals bijvoorbeeld Apache Solr.Standaard relevantie scoring obv TF/IDF, allerhande mogelijkheden voor stopwords filtering, stemming, synoniemen, enzovoort.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  maandag 20 oktober 2014 @ 11:17:48 #271
12221 Tijn
Powered by MS Paint
pi_145727203
quote:
7s.gif Op maandag 20 oktober 2014 11:13 schreef n8n het volgende:

[..]

ik heb op een site een unieke hash die ik als slug gebruik maar daarnaast ook een id, momenteel omdat ik daar nog op sorteer (oud naar nieuw, wordt nog aangepast). Een id veld maakt verder toch geen reet uit, als in een id is 'gratis'?
Ik heb zelf vaak ook een public hash voor het exposen van records aan de buitenwereld, zodat ik niet de interne ids hoef te delen. Ik zou ook niet direct weten waarom dat erg is, maar ik kan me voorstellen dat het geen handig databaseontwerp is als je hetzelfde record via allerlei verschillende ids kan terugvinden.
  maandag 20 oktober 2014 @ 11:20:57 #272
230788 n8n
Pragmatisch
pi_145727292
quote:
2s.gif Op maandag 20 oktober 2014 11:17 schreef Tijn het volgende:

[..]

Ik heb zelf vaak ook een public hash voor het exposen van records aan de buitenwereld, zodat ik niet de interne ids hoef te delen. Ik zou ook niet direct weten waarom dat erg is, maar ik kan me voorstellen dat het geen handig databaseontwerp is als je hetzelfde record via allerlei verschillende ids kan terugvinden.
op die manier, ik heb alleen een hash van 4 karakters, eerste altijd alpha dus 1.213.056 combinaties wat voor dit project ruim voldoende is. Browsers tonen toch steeds vaker naar een versimpelde url, verder is er geen manier om content er uit te persen voor publiek
Specialization is for insects”.—Robert Heinlein
pi_145743827
Wat is MySQL trouwens snel zeg als je de juiste indexes toepast :P factor 10 kwa snelheidswinst :D
pi_145744893
quote:
0s.gif Op maandag 20 oktober 2014 18:53 schreef xaban06 het volgende:
Wat is MySQL trouwens snel zeg als je de juiste indexes toepast :P factor 10 kwa snelheidswinst :D
Bij grote hoeveelheden data scheelt het nog veel meer, zeker in de worst case scenario's.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145754922
quote:
1s.gif Op maandag 20 oktober 2014 19:16 schreef Monolith het volgende:

[..]

Bij grote hoeveelheden data scheelt het nog veel meer, zeker in de worst case scenario's.
Tabel heeft nu 50.000 records, binnen enkele weken wordt dat een paar miljoen en zal vanaf dan dagelijks met ~800 records groeien.
pi_145755236
quote:
0s.gif Op maandag 20 oktober 2014 22:15 schreef xaban06 het volgende:

[..]

Tabel heeft nu 50.000 records, binnen enkele weken wordt dat een paar miljoen en zal vanaf dan dagelijks met ~800 records groeien.
Dan ga je dat verschil wel merken. Eigenlijk zou je alle (select)queries een keer met explain moeten bekijken om te zien waar je nog winst kunt behalen.
  † In Memoriam † maandag 20 oktober 2014 @ 22:26:10 #277
159335 Boze_Appel
Vrij Fruit
pi_145755553
quote:
0s.gif Op maandag 20 oktober 2014 18:53 schreef xaban06 het volgende:
Wat is MySQL trouwens snel zeg als je de juiste indexes toepast :P factor 10 kwa snelheidswinst :D
De juiste engine toepassen scheelt ook enorm. Veel mensen geilen op InnoDB vanwege contrainsts en dergelijke, maar gebruiken het niet of passen het toe op tabellen die amper inserts/updates krijgen maar enkel selects. Dan gewoon lekker naar MyIsam gaan en het scheelt een factor veel in snelheid.

Degelijke DBA bij grotere hoeveelheden is een kunstje apart.
Carpe Libertatem
pi_145755735
quote:
7s.gif Op maandag 20 oktober 2014 22:26 schreef Boze_Appel het volgende:

[..]

De juiste engine toepassen scheelt ook enorm. Veel mensen geilen op InnoDB vanwege contrainsts en dergelijke, maar gebruiken het niet of passen het toe op tabellen die amper inserts/updates krijgen maar enkel selects. Dan gewoon lekker naar MyIsam gaan en het scheelt een factor veel in snelheid.

Degelijke DBA bij grotere hoeveelheden is een kunstje apart.
Professionals zullen het fijne er van weten verwacht ik. Ik doe het gewoon als hobby, op werk heb ik er niks mee te maken.
Ik gebruik ook InnoDB :@

Verhouding is bij mij denk ik 2-3:1 (select:insert).
pi_145756063
quote:
7s.gif Op maandag 20 oktober 2014 22:26 schreef Boze_Appel het volgende:

[..]

De juiste engine toepassen scheelt ook enorm. Veel mensen geilen op InnoDB vanwege contrainsts en dergelijke, maar gebruiken het niet of passen het toe op tabellen die amper inserts/updates krijgen maar enkel selects. Dan gewoon lekker naar MyIsam gaan en het scheelt een factor veel in snelheid.

Degelijke DBA bij grotere hoeveelheden is een kunstje apart.
De vraag is niet zozeer wat de verhouding is tussen selects en inserts / updates. MyISAM kent bijvoorbeeld geen transacties. Die heb je soms gewoon nodig.
Daarnaast kun je in plaats van MySQL ook gewoon bijvoorbeeld Postgresql gebruiken.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  † In Memoriam † maandag 20 oktober 2014 @ 22:46:50 #280
159335 Boze_Appel
Vrij Fruit
pi_145756737
quote:
1s.gif Op maandag 20 oktober 2014 22:35 schreef Monolith het volgende:

[..]

De vraag is niet zozeer wat de verhouding is tussen selects en inserts / updates. MyISAM kent bijvoorbeeld geen transacties. Die heb je soms gewoon nodig.
Voor veel dingen dan ook weer niet. Het is uiteraard net de toepassing wat je nodig hebt.

quote:
Daarnaast kun je in plaats van MySQL ook gewoon bijvoorbeeld Postgresql gebruiken.
Zeker, of het alternatief voor MySQL, MariaDB.
Carpe Libertatem
pi_145757250
quote:
0s.gif Op maandag 20 oktober 2014 22:20 schreef Light het volgende:

[..]

Dan ga je dat verschil wel merken. Eigenlijk zou je alle (select)queries een keer met explain moeten bekijken om te zien waar je nog winst kunt behalen.
idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
  † In Memoriam † maandag 20 oktober 2014 @ 23:01:59 #282
159335 Boze_Appel
Vrij Fruit
pi_145757480
quote:
14s.gif Op maandag 20 oktober 2014 22:56 schreef KomtTijd... het volgende:

[..]

idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
En je buffers goed instellen. Van de standaard configs van MySQL of PostgreSQL wordt geen grotere hoeveelheid data vrolijk.

Zonder indexes heb je gewoon een kaartenbak.
Carpe Libertatem
pi_145757571
quote:
7s.gif Op maandag 20 oktober 2014 23:01 schreef Boze_Appel het volgende:

[..]

En je buffers goed instellen. Van de standaard configs van MySQL of PostgreSQL wordt geen grotere hoeveelheid data vrolijk.

Zonder indexes heb je gewoon een kaartenbak.
Een kaartenbak heeft nou meestal juist wel een vorm van indexering. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145757590
Straks heb ik dus een paar miljoen aan records, deze records haal ik extern op (via http). Deze externe records kunnen dagelijks wijzigen. Deze wijzigingen wil ik meenemen in mijn database.

Per HTTP request kan ik maar 1 record checken, ik kan dus niet meedere records tegelijk controleren.

Ik dacht aan:
De hele dataset poepen naar een array.

Vervolgens met een loop over de array gaan, iedere keer wordt de data in de array vergeleken met de externe data.

Dus ja, er moet een paar miljoen HTTP requests plaatsvinden. Hier ontkom ik niet aan, maar het probleem zit hem in: De externe server is vrij traag, meestal resultaat na 1 seconde, maar soms ook 3-4 seconde.

Met een gemiddelde van 2s response tijd kom ik aan 43.200 requests per dag. Bij een dataset van 10.000.000 records heb ik dus 232 dagen nodig om de volledige dataset te controleren.

Oplossing?

/edit
Nu ik dit schrijf, meerdere HTTP requests tegelijk uitvoeren misschien?
pi_145757602
quote:
14s.gif Op maandag 20 oktober 2014 22:56 schreef KomtTijd... het volgende:

[..]

idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
Tegen die tijd is het misschien sowieso een idee om een aparte database server te hebben.
  † In Memoriam † maandag 20 oktober 2014 @ 23:05:38 #286
159335 Boze_Appel
Vrij Fruit
pi_145757647
quote:
1s.gif Op maandag 20 oktober 2014 23:04 schreef Monolith het volgende:

[..]

Een kaartenbak heeft nou meestal juist wel een vorm van indexering. :P
Punt, maar je kan niet zoeken op de inhoud van de kaartenbak, alleen wat op het labeltje staat. Dat is an sich een index, maar alleen een primary dan. :P
Carpe Libertatem
pi_145758019
quote:
14s.gif Op maandag 20 oktober 2014 22:56 schreef KomtTijd... het volgende:

[..]

idd, zonder de juiste indexes wordt iedere database onwerkbaar traag met datsoort datasets.
Een flinke sloot geheugen in je server helpt ook.
Een sloot geheugen is alleen zinvol als je ook goede indexes hebt.
pi_145758311
Sowieso kun je bij grote hoeveelheden data beter eens kijken of er niet een geschikt NoSQL database is waar je gebruik van kunt maken.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  dinsdag 21 oktober 2014 @ 14:55:03 #289
59269 Drakire
May Lyssa aid you
pi_145776072
Vraagje:
Ik haal via een api bitcoinprijzen in USD op alsmede de exchange rate van USD naar EUR

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
    <?php
header
('Content-Type: text/html; charset=utf-8');
function 
extractData($url$clientName$curr)
{
$ch curl_init($url);
curl_setopt($chCURLOPT_REFERER'Mozilla/5.0 (compatible; ' $clientName' PHP client; '.php_uname('s').'; PHP/'.phpversion().')');
curl_setopt($chCURLOPT_USERAGENT"CakeScript/0.1");
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
$json curl_exec($ch);
curl_close($ch);
$array json_decode($json,true);
return 
$array;

}

$url 'http://www.bitstamp.net/api/ticker/';
$clientName 'Bitstamp';
$bitstamp extractData($url,$clientName);
$url 'https://www.bitstamp.net/api/eur_usd/';
$clientName 'Blockchain';
$blockchain extractData($url,$clientName);
echo 
"<pre>";
print_r($bitstamp);

print_r($blockchain);
echo 
"</pre>";

?> 

Dit geeft het volgende resultaat:


Nu wil ik het getal dat al resultaat bij high komt (388.00) delen door het getal dat bij sell staat (1.2771)

Alleen weet ik niet hoe ik deze waardes los terugkrijg in php zodat ik bijvoorbeeld
1
2
3
<?php
$price
$high $sell;
?>
kan doen.
pi_145776232
quote:
0s.gif Op dinsdag 21 oktober 2014 14:55 schreef Drakire het volgende:
Vraagje:
Ik haal via een api bitcoinprijzen in USD op alsmede de exchange rate van USD naar EUR
[ code verwijderd ]

Dit geeft het volgende resultaat:
[ afbeelding ]

Nu wil ik het getal dat al resultaat bij high komt (388.00) delen door het getal dat bij sell staat (1.2771)

Alleen weet ik niet hoe ik deze waardes los terugkrijg in php zodat ik bijvoorbeeld
[ code verwijderd ]

kan doen.
$bitstamp en $blockchain zijn beide array. Met $bitstamp['high'] kun je een waarde uitlezen:
1$price = $bitstamp['high'] / $bitchain['sell']
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
  dinsdag 21 oktober 2014 @ 15:06:55 #292
59269 Drakire
May Lyssa aid you
pi_145776540
quote:
Had al gezocht maar kwam er niet uit vanwege de 2 verschillende arrays, achteraf is het toch best simpel :P.
quote:
7s.gif Op dinsdag 21 oktober 2014 14:59 schreef Aether het volgende:

[..]

$bitstamp en $blockchain zijn beide array. Met $bitstamp['high'] kun je een waarde uitlezen:
[ code verwijderd ]

thx.
pi_145827955
heeft iemand verstand van timezones? ik probeer "today 00:00" om te zetten in een timestamp, maar wel afhankelijk van een tijdzone (via DateTime). in de unittest vergelijk ik new-york, amsterdam en die van sydney. maar die van amsterdam blijkt lager te zijn dan die van new-york?

dit is de uitkomt:

America/New_York
string(31) "Wed, 22 Oct 2014 13:34:42 -0400"
int(1413950400)

Europe/Amsterdam
string(31) "Wed, 22 Oct 2014 19:34:42 +0200"
int(1413928800)

Australia/Sydney
string(31) "Thu, 23 Oct 2014 04:34:42 +1100"
int(1413982800)

new-york zou toch het laagst moeten zijn omdat daar het "begin van de dag" het meeste achterloopt?
..///
pi_145828716
Wat doe je precies dan?

Als ik het zo bekijk zouden ze allemaal dezelfde timestamp moeten hebben. Maar de timestamps die jij toont komen in de verste verte niet overeen met de daarbij genoemde datum/tijd, ook de minuten en secondes niet.
pi_145828909
quote:
14s.gif Op woensdag 22 oktober 2014 20:06 schreef KomtTijd... het volgende:
Wat doe je precies dan?

Als ik het zo bekijk zouden ze allemaal dezelfde timestamp moeten hebben. Maar de timestamps die jij toont komen in de verste verte niet overeen met de daarbij genoemde datum/tijd, ook de minuten en secondes niet.
nee de timestamp moet verschillend zijn want ik gebruik "today 00:00" en geen "today" of "-24 hours". de laatste 2 zijn relatief (in verhouding met de huidige timestamp) en zijn voor alle tijdzones hetzelfde, maar het moment van de eerste seconden van de dag moet per tijdzone verschillend zijn. ik dacht dat het westen dan het laagste moest zijn en meer richting het oosten hoger. je kan het zelf testen met:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$timezone 
= new DateTimeZone('America/New_York');
$date =  new DateTime('today 00:00'$timezone);
var_dump($date->format('r'));
var_dump($date->getTimestamp());
echo 
"\n\n";
            
$timezone = new DateTimeZone('Europe/Amsterdam');
$date =  new DateTime('today 00:00'$timezone);
var_dump($date->format('r'));
var_dump($date->getTimestamp());
echo 
"\n\n";
            
$timezone = new DateTimeZone('Australia/Sydney');
$date =  new DateTime('today 00:00'$timezone);
var_dump($date->format('r'));
var_dump($date->getTimestamp());
echo 
"\n\n";            
?>
..///
pi_145829041
Laatste keer dat ik checkte kwam de zon in het oosten op en ging deze in het westen onder :P Dus in het oosten is het eerder middennacht dan in het westen.
pi_145829503
quote:
14s.gif Op woensdag 22 oktober 2014 20:15 schreef KomtTijd... het volgende:
Laatste keer dat ik checkte kwam de zon in het oosten op en ging deze in het westen onder :P Dus in het oosten is het eerder middennacht dan in het westen.
maar de volgorde van de timestamp komt niet overeen met de volgorde van oost naar west, dat is wat ik niet snap :P
..///
pi_145829754
Gezien de tijden in je resultaten wordt 00:00 niet meegenomen.

Afgezien daarvan, wordt de string niet omgezet naar GMT oid en vervolgens omgerekend met de timezone, waarbij vervolgens de timestamp enkel de datum en tijd, maar niet de timezone meerekent?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145830692
quote:
0s.gif Op woensdag 22 oktober 2014 20:33 schreef Monolith het volgende:
Gezien de tijden in je resultaten wordt 00:00 niet meegenomen.

Afgezien daarvan, wordt de string niet omgezet naar GMT oid en vervolgens omgerekend met de timezone, waarbij vervolgens de timestamp enkel de datum en tijd, maar niet de timezone meerekent?
Een timestamp kent geen tijdzone, maar als je van een tijd naar een timestamp gaat heb je die tijdzone wel nodig. De timestamp van 2014-10-22 18:00:00+0200 (Amsterdam) is anders dan die van 2014-10-22 18:00:00+0100 (Londen), hoewel het beide keren 18:00 vandaag is.
pi_145830941
quote:
0s.gif Op woensdag 22 oktober 2014 20:52 schreef Light het volgende:

[..]

Een timestamp kent geen tijdzone
Een timestamp is altijd UTC.
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')