Een hoop items updaten en de performance
In de uberl33t-admin backend van mijn site heb ik een beheerpagina gebouwd waarin ik alle items (laten we maar zeggen, de nummers van de treinen kan bewerken.)
Nu vroeg ik me af. Als ik maar enkele aanpas dan update hij ook alle velden. Ook die weer niet aangepast zijn.
Nu vroeg ik me af, kost dit niet extra belasting voor de database om dingen te updaten die niet aangepast zijn (dezelfde waardes), of kan ik beter iets maken die ocntroleert wat er gewijzigd is, en dat alleen maar update?
En hoe zou je zoiets makkelijk kunnen maken?
Ik heb nu even geen toegang tot de code, maar uit mijn hoofd hebben de formulier-veldnamen deze opbouw:
materieel[2][indienst].
Eeste nummer is het ID, en het tweede deel is het type veld uit de database (kan ook bijv. 'gesloopt zijn')
Iemand enig idee?
Gewijzigd op 24/05/2010 13:38:11 door - Ariën -
array_unique? deze functie geeft een nieuwe array terug met de wijzigingen. Hier kan dan mee verder werken.
Kan je niet vantevoren een array maken die alle data bevat + eentje bij het opslaan en deze vergelijken dmv foreach loopje van maken die vervolgens dmv array_key_exists checked of hij bestaat. Zo niet, dan een query..
Inderdaad logische oplossing. Of als je nummers moet aanpassen met records en iedere keer wel een update / insert moet doen, kun je er een Dynamisch formulier van maken.
En aan wat voor manier dacht je dan Karl? ;)
Ik denk trouwens dat je database zelf ook wel checkt of een waarde echt nieuw is, of dat je naar een al bestaande waarde wilt updaten. Sterker nog, volgens mij levert mysql_affected_rows 0 op als je update naar exact dezelfde waarden. Of was dat SQLite die dat deed...
Jel:
Zodra je op [enter] drukt in je veld stuur je via javascript de data naar PHP, die dan één update query draait.
Inderdaad, of gewoon als je een tabel hebt dat de cel dan veranderd in een input veld. Kan ook nog. Of dat de rij een form wordt. Van alles is mogelijk.
Jelmer:
KloptSterker nog, volgens mij levert mysql_affected_rows 0 op als je update naar exact dezelfde waarden.