abonnement Unibet Coolblue
  vrijdag 3 oktober 2014 @ 18:26:33 #121
62215 qu63
..de tijd drinkt..
pi_145161781
quote:
1s.gif Op vrijdag 3 oktober 2014 18:22 schreef Monolith het volgende:

[..]

Je kunt in je insert en on update gewoon de curdate() meegeven.
Die geeft de API van de RDW zelf al mee, maar dat is het moment van opvragen van de gegevens, niet van de laatste actualisatie
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145161812
quote:
0s.gif Op vrijdag 3 oktober 2014 18:25 schreef slacker_nl het volgende:

[..]

Maar als je gewoon klakkeloos importeert zijn de gegevens zonder te checken of de data veranderd is staat curdate altijd op het import-moment.
Ah je bedoelt daadwerkelijke wijzigingen ipv een update met dezelfde data. Ik weet niet of dat vereist is.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 18:31:29 #123
187069 slacker_nl
Sicko pur sang
pi_145161897
quote:
1s.gif Op vrijdag 3 oktober 2014 18:27 schreef Monolith het volgende:

[..]

Ah je bedoelt daadwerkelijke wijzigingen ipv een update met dezelfde data. Ik weet niet of dat vereist is.
Dat is wel hoe ik de vraag interpreteerde.
quote:
Hoe kan ik nu de ongeveer 10.000 records uit hun API plukken, checken of het kenteken (het enige unieke record) al bestaat en if so, checken of er wijzigingen zijn, en if so de wijzigingen doorvoeren in mijn tabel. Ik kan dan zelf mijn eigen 'updated on' veld wel aanpassen


[ Bericht 24% gewijzigd door slacker_nl op 03-10-2014 18:36:44 ]
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 3 oktober 2014 @ 18:35:14 #124
62215 qu63
..de tijd drinkt..
pi_145161994
We kunnen het ook anders doen :P

Met mijn script haal ik een deel van de gegevens van de RDW op via Azure: https://datamarket.azure.(...)rtg.open.data#schema

Deze gegevens wil ik verrijken met mijn eigen data en opslaan in mijn eigen database.

Omdat de voertuigen die ik check niet veel verhandeld worden is een wekelijkse check voldoende. Helaas kan ik dus alleen de complete set opvragen. Deze set wil ik dus vergelijken met mijn database en alleen de updates verwerken in mijn database.

Als de gegevens bij de RDW geupdate zijn, wil ik mijn verrijkingen ook checken en updaten.

Daarnaast periodieke updates van mijn verrijkingen. Dit moet alleen in kleine batches gedaan worden, dus ik wil steeds de oudste 5 (ofzo) records updaten (dus degene die t langs geleden gewijzigd zijn).

Hoe zouden jullie de tabellen opzetten?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145162472
quote:
0s.gif Op vrijdag 3 oktober 2014 18:25 schreef slacker_nl het volgende:

[..]

Maar als je gewoon klakkeloos importeert zijn de gegevens zonder te checken of de data veranderd is staat curdate altijd op het import-moment.
Een update wordt niet uitgevoerd als de data die in de tabel staat hetzelfde is.
Dan heb je daar dus geen last van.
  vrijdag 3 oktober 2014 @ 19:00:36 #126
187069 slacker_nl
Sicko pur sang
pi_145162746
quote:
0s.gif Op vrijdag 3 oktober 2014 18:51 schreef totalvamp het volgende:

[..]

Een update wordt niet uitgevoerd als de data die in de tabel staat hetzelfde is.
Dan heb je daar dus geen last van.
Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.

Hij update de values niet, maar hij triggert mogelijk wel de iets als je die update doet.. Wij doen bijv dit: last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP, waardoor de last_modified aanpast na een update. Of de waardes daadwerkelijk zijn aangepast is niet van belang, de call werd gedaan en wordt zo zichtbaar. Dus..

[ Bericht 11% gewijzigd door slacker_nl op 03-10-2014 19:09:29 ]
In theory there is no difference between theory and practice. In practice there is.
pi_145163006
quote:
0s.gif Op vrijdag 3 oktober 2014 19:00 schreef slacker_nl het volgende:

[..]

Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.
Bovendien geef je de curdate mee bij de update dus dan is ie altijd anders. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_145163694
quote:
0s.gif Op vrijdag 3 oktober 2014 19:00 schreef slacker_nl het volgende:

[..]

Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.

Hij update de values niet, maar hij triggert mogelijk wel de iets als je die update doet.. Wij doen bijv dit: last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP, waardoor de last_modified aanpast na een update. Of de waardes daadwerkelijk zijn aangepast is niet van belang, de call werd gedaan en wordt zo zichtbaar. Dus..
Nee bij MySQL niet, letterlijk net getest.
zelfde data invoegen met een INSERT + UPDATE
1
2
3
4
5
6
7
8
9
Veranderd de update tijd niet:
INSERT INTO test
(name, username) VALUES ('b', 'b')
ON DUPLICATE KEY UPDATE name = 'b', username='b'

Veranderd hem wel:
INSERT INTO test
(name, username) VALUES ('b', 'a')
ON DUPLICATE KEY UPDATE name = 'b', username='a'

Als je het zelf wilt testen kun je deze tabel invoegen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Gegevens worden uitgevoerd voor tabel `test`
--

INSERT INTO `test` (`id`, `name`, `username`, `last_update`) VALUES
(1, 'a', 'a', '0000-00-00 00:00:00'),
(2, 'b', 'a', '0000-00-00 00:00:00');

Om daarna eerst deze query uit te voeren:
1
2
3
4
5
6
7
8
9
10
11
Deze zal niks doen:

INSERT INTO test
(name, username) VALUES ('a', 'a')
ON DUPLICATE KEY UPDATE name = 'a', username='a'


Deze wel:
INSERT INTO test
(name, username) VALUES ('b', 'a')
ON DUPLICATE KEY UPDATE name = 'b', username='a'


[ Bericht 39% gewijzigd door #ANONIEM op 03-10-2014 19:27:03 ]
pi_145163836
quote:
0s.gif Op vrijdag 3 oktober 2014 19:00 schreef slacker_nl het volgende:

[..]

Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.

Hij update de values niet, maar hij triggert mogelijk wel de iets als je die update doet.. Wij doen bijv dit: last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP, waardoor de last_modified aanpast na een update. Of de waardes daadwerkelijk zijn aangepast is niet van belang, de call werd gedaan en wordt zo zichtbaar. Dus..
Niet alleen DEFAULT, ook ON UPDATE CURRENT_TIMESTAMP.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 3 oktober 2014 @ 23:40:18 #130
62215 qu63
..de tijd drinkt..
pi_145174772
Aangezien ik het toch rij voor rij uit zou moeten voeren, kan ik net zo goed eerst een "SELECT * FROM voertuigen WHERE kenteken=$kenteken" doen en op basis daarvan INSERT of UPDATE doen.

Toch :?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 01:26:34 #131
62215 qu63
..de tijd drinkt..
pi_145177855
Dit lijkt mij nu wel een redelijke oplossing:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$columns 
implode(", ",array_keys($code));
$escaped_values array_map(NULLarray_values($code));
$values  implode(", "$escaped_values);
$sql "SELECT kenteken FROM voertuigen WHERE kenteken='".$item["M:PROPERTIES"]["D:KENTEKEN"]."1'";
$result mysqli_query($con$sql);
if(
mysqli_num_rows($result)>0)
    {
    
$sql "UPDATE voertuigen SET Updated='".$item['UPDATED']."', Datumaanvangtenaamstelling='".strtotime($item["M:PROPERTIES"]["D:DATUMAANVANGTENAAMSTELLING"])."', VervaldatumAPK='".strtotime($item["M:PROPERTIES"]["D:VERVALDATUMAPK"])."', Wachtopkeuren='".$item["M:PROPERTIES"]["D:WACHTOPKEUREN"]."' WHERE kenteken='".$item["M:PROPERTIES"]["D:KENTEKEN"]."'";
    
$query mysqli_query($con,$sql);
    }
    else
    {
    
$sql "INSERT INTO `voertuigen` ($columns) VALUES ($values)";
    
$query mysqli_query($con,$sql);
    list(
$klasse$category$EigenarenP$EigenarenZ$CarrosserieOmschrijving$Type$Variant$Uitvoering$Typegoedkeuring$VervalDatTachograaf$TijdAanvangTenaamstelling$Gestolen$Geexporteerd$WAVerzekerd$BijzonderheidTekst$Lengte$Breedte$AantalAssen$AantalWielen$Wielbasis$AfwijkendeMaxSnelheid$AfstandVoorzijdeVrtgTotHartkoppeling) = get_ovi($item["M:PROPERTIES"]["D:KENTEKEN"]);
    
$sql "Update voertuigen SET klasse='".$klasse."', Categorie='".$category."', EigenarenP='".$EigenarenP."', EigenarenZ='".$EigenarenZ."', CarrosserieOmschrijving='".$CarrosserieOmschrijving."', Type='".$Type."', Variant='".$Variant."', Uitvoering='".$Uitvoering."', Typegoedkeuring='".$Typegoedkeuring."', VervalDatTachograaf='".strtotime($VervalDatTachograaf)."', TijdAanvangTenaamstelling='".$TijdAanvangTenaamstelling."', Gestolen='".$Gestolen."', Geexporteerd='".$Geexporteerd."', WAVerzekerd='".$WAVerzekerd."', BijzonderheidTekst='".$BijzonderheidTekst."', Lengte='".$Lengte."', Breedte='".$Breedte."', AantalAssen='".$AantalAssen."', AantalWielen='".$AantalWielen."', Wielbasis='".$Wielbasis."', AfwijkendeMaxSnelheid='".$AfwijkendeMaxSnelheid."', AfstandVoorzijdeVrtgTotHartkoppeling='".$AfstandVoorzijdeVrtgTotHartkoppeling."' WHERE Kenteken = '".$item["M:PROPERTIES"]["D:KENTEKEN"]."'";
    
$query mysqli_query($con,$sql);
?>
$con en $code worden eerder al gedefineerd :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145181669
quote:
0s.gif Op zaterdag 4 oktober 2014 01:26 schreef qu63 het volgende:
Dit lijkt mij nu wel een redelijke oplossing:
[ code verwijderd ]

$con en $code worden eerder al gedefineerd :)
Tip: gebruik PDO. :)
  zaterdag 4 oktober 2014 @ 11:37:50 #133
91039 mstx
2x1/2 = 1/2 x 1/2
pi_145182030
quote:
1s.gif Op zaterdag 4 oktober 2014 11:17 schreef robin007bond het volgende:

[..]

Tip: gebruik PDO. :)
Waarom?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_145183158
quote:
0s.gif Op zaterdag 4 oktober 2014 11:37 schreef mstx het volgende:

[..]

Waarom?
Als je wilt switchen van database is het veel makkelijker.

Plus er zitten handige dingen in injecties te voorkomen. BindParam etc.
pi_145184582
quote:
0s.gif Op zaterdag 4 oktober 2014 01:26 schreef qu63 het volgende:
Dit lijkt mij nu wel een redelijke oplossing:
[ code verwijderd ]

$con en $code worden eerder al gedefineerd :)
Of je gebruikt gewoon de INSERT en dan ON DUPLICATE KEY UPDATE

waarom zou je daar omheen werken met een constructie die alleen maar meer queries oplevert...

[ Bericht 0% gewijzigd door #ANONIEM op 04-10-2014 13:30:23 ]
pi_145184780
Je kunt ook een Stored procedure schrijven en zo zijn er nog 101 opties. Kies gewoon iets dat werkt, aangezien het voor zover ik kan zien toch niet een of ander enorm project is waarbij de architectuur enorm belangrijk is. Hooguit moet je op een gegeven moment naar performance gaan kijken, maar zolang je nog hele datasets uit een API trekt ligt de bottleneck niet bij wat database interacties.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  zaterdag 4 oktober 2014 @ 14:02:50 #137
62215 qu63
..de tijd drinkt..
pi_145185485
quote:
1s.gif Op zaterdag 4 oktober 2014 11:17 schreef robin007bond het volgende:

[..]

Tip: gebruik PDO. :)
Wat is PDO?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 14:03:15 #138
62215 qu63
..de tijd drinkt..
pi_145185498
quote:
0s.gif Op zaterdag 4 oktober 2014 13:36 schreef Monolith het volgende:
Je kunt ook een Stored procedure schrijven en zo zijn er nog 101 opties. Kies gewoon iets dat werkt, aangezien het voor zover ik kan zien toch niet een of ander enorm project is waarbij de architectuur enorm belangrijk is. Hooguit moet je op een gegeven moment naar performance gaan kijken, maar zolang je nog hele datasets uit een API trekt ligt de bottleneck niet bij wat database interacties.
Optimalisatie was de volgende stap ja :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145185589
quote:
0s.gif Op zaterdag 4 oktober 2014 14:02 schreef qu63 het volgende:

[..]

Wat is PDO?
http://bit.ly/1uJOkmd
pi_145185627
Ik zit met een vaag probleem. Ik heb een production server waarop ik een website live wil gooien. Ik heb de bestanden in de root van de webserver geüpload.

De folder structure ziet er ongeveer zo uit:

/ root
- application
- system
- public
---- assets
---- index.php
---- .htaccess

Als ik nu naar het domein ga krijg ik de melding dat er geen content geüpload is. Ik snap dat er geen index.php in de root staat en dat dat wel nodig is, maar hoe hou ik dan de private en public content gescheiden? Ik gebruik CodeIgniter trouwens.
pi_145185673
quote:
0s.gif Op zaterdag 4 oktober 2014 14:08 schreef pascal08 het volgende:
Ik zit met een vaag probleem. Ik heb een production server waarop ik een website live wil gooien. Ik heb de bestanden in de root van de webserver geüpload.

De folder structure ziet er ongeveer zo uit:

/ root
- application
- system
- public
---- assets
---- index.php
---- .htaccess

Als ik nu naar het domein ga krijg ik de melding dat er geen content geüpload is. Ik snap dat er geen index.php in de root staat en dat dat wel nodig is, maar hoe hou ik dan de private en public content gescheiden? Ik gebruik CodeIgniter trouwens.
Volgens mij kun je dat allemaal in je .htaccess regelen. :)
pi_145185759
quote:
1s.gif Op zaterdag 4 oktober 2014 14:10 schreef robin007bond het volgende:

[..]

Volgens mij kun je dat allemaal in je .htaccess regelen. :)
Er moet dus ook een .htaccess in de root komen?

1
2
3
4
[..]
RewriteEngine On
RewriteBase /public/
[..]

Zoiets?

[ Bericht 20% gewijzigd door pascal08 op 04-10-2014 14:20:26 ]
  zaterdag 4 oktober 2014 @ 14:30:59 #143
62215 qu63
..de tijd drinkt..
pi_145186194
quote:
0s.gif Op zaterdag 4 oktober 2014 13:30 schreef totalvamp het volgende:

[..]

Of je gebruikt gewoon de INSERT en dan ON DUPLICATE KEY UPDATE

waarom zou je daar omheen werken met een constructie die alleen maar meer queries oplevert...
Dat bedacht ik me gisteravond ook, maar toen vond ik een reden om dat niet te doen.

Geen idee meer wat die reden was -O- :D
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_145186842
quote:
0s.gif Op zaterdag 4 oktober 2014 14:13 schreef pascal08 het volgende:

[..]

Er moet dus ook een .htaccess in de root komen?
[ code verwijderd ]

Zoiets?

De melding is nu weg. Ik heb enkel nog een lege witte pagina nu. Ik heb de bestanden gewoon 1:1 gekopieerd vanuit m'n local environment. Ik snap niet wat er nou fout gaat. :?

Help? :'(
pi_145187358
quote:
0s.gif Op zaterdag 4 oktober 2014 14:30 schreef qu63 het volgende:

[..]

Dat bedacht ik me gisteravond ook, maar toen vond ik een reden om dat niet te doen.

Geen idee meer wat die reden was -O- :D
Luiheid :P?
  zaterdag 4 oktober 2014 @ 15:38:18 #146
62215 qu63
..de tijd drinkt..
pi_145187905
quote:
1s.gif Op zaterdag 4 oktober 2014 15:18 schreef totalvamp het volgende:

[..]

Luiheid :P?
Nee, want ik dacht juist eerst aan INSERT ON DUPLICATE UPDATE :P

t zal de drank wel zijn geweest :')
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 16:52:26 #147
62215 qu63
..de tijd drinkt..
pi_145189407
quote:
1s.gif Op zaterdag 4 oktober 2014 15:18 schreef totalvamp het volgende:

[..]

Luiheid :P?
Ah, ik weet t al!

Mijn script poepte eerst alle velden uit, en maakte daarna een hele lange rij van alle waarden zodat ik het in één query kon doen. Dat zou dus niet meer lukken met een INSERT ON DUPLICATE UPDATE :)

Maar goed, soms is het nodig om je script eens te herzien :P
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zaterdag 4 oktober 2014 @ 17:46:38 #148
91039 mstx
2x1/2 = 1/2 x 1/2
pi_145190876
quote:
1s.gif Op zaterdag 4 oktober 2014 12:29 schreef robin007bond het volgende:

[..]

Als je wilt switchen van database is het veel makkelijker.

Plus er zitten handige dingen in injecties te voorkomen. BindParam etc.
Met mysqli kun je ook gewoon parameters binden, en wie switcht er in de praktijk nou echt van database?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  zaterdag 4 oktober 2014 @ 19:51:11 #149
187069 slacker_nl
Sicko pur sang
pi_145194028
quote:
0s.gif Op zaterdag 4 oktober 2014 17:46 schreef mstx het volgende:

[..]

Met mysqli kun je ook gewoon parameters binden, en wie switcht er in de praktijk nou echt van database?
Bij mijn vorige werkgever gebruikte we sqlite voor de testsuite en postgres voor het echte werk. Of je hebt apps waarbij je een db nodig hebt en die moeten werken of je nu mysql, berkely, postgres of Oracle hebt... shit must work yo.
In theory there is no difference between theory and practice. In practice there is.
pi_145194349
quote:
0s.gif Op zaterdag 4 oktober 2014 17:46 schreef mstx het volgende:

[..]

Met mysqli kun je ook gewoon parameters binden, en wie switcht er in de praktijk nou echt van database?
Ik heb het al degelijk wel eens meegemaakt. Switchen van database (van MySQL naar Postgres) en helaas was er geen gebruik gemaakt van PDO -O-
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')