Die geeft de API van de RDW zelf al mee, maar dat is het moment van opvragen van de gegevens, niet van de laatste actualisatiequote:Op vrijdag 3 oktober 2014 18:22 schreef Monolith het volgende:
[..]
Je kunt in je insert en on update gewoon de curdate() meegeven.
Ah je bedoelt daadwerkelijke wijzigingen ipv een update met dezelfde data. Ik weet niet of dat vereist is.quote: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.
Dat is wel hoe ik de vraag interpreteerde.quote: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.
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
Een update wordt niet uitgevoerd als de data die in de tabel staat hetzelfde is.quote: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.
Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.quote: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.
Bovendien geef je de curdate mee bij de update dus dan is ie altijd anders.quote:Op vrijdag 3 oktober 2014 19:00 schreef slacker_nl het volgende:
[..]
Bij MySQL wel, ik weet niet hoe andere databases hiermee omgaan.
Nee bij MySQL niet, letterlijk net getest.quote: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..
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' |
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'); |
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' |
Niet alleen DEFAULT, ook ON UPDATE CURRENT_TIMESTAMP.quote: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..
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(NULL, array_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); ?> |
Tip: gebruik PDO.quote: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
Waarom?quote:
Als je wilt switchen van database is het veel makkelijker.quote:
Of je gebruikt gewoon de INSERT en dan ON DUPLICATE KEY UPDATEquote: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
Wat is PDO?quote:
Optimalisatie was de volgende stap jaquote: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.
http://bit.ly/1uJOkmdquote:
Volgens mij kun je dat allemaal in je .htaccess regelen.quote: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.
Er moet dus ook een .htaccess in de root komen?quote:Op zaterdag 4 oktober 2014 14:10 schreef robin007bond het volgende:
[..]
Volgens mij kun je dat allemaal in je .htaccess regelen.
1 2 3 4 | [..] RewriteEngine On RewriteBase /public/ [..] |
Dat bedacht ik me gisteravond ook, maar toen vond ik een reden om dat niet te doen.quote: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...
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.quote:Op zaterdag 4 oktober 2014 14:13 schreef pascal08 het volgende:
[..]
Er moet dus ook een .htaccess in de root komen?
[ code verwijderd ]
Zoiets?
Luiheid ?quote: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
Nee, want ik dacht juist eerst aan INSERT ON DUPLICATE UPDATEquote:
Ah, ik weet t al!quote:
Met mysqli kun je ook gewoon parameters binden, en wie switcht er in de praktijk nou echt van database?quote: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.
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.quote: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 PDOquote: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?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |