[SQL&PHP] Update tabel met functie in

Pagina: 1
Acties:

  • kokorico
  • Registratie: Januari 2004
  • Laatst online: 22:34
Ik wil het volgende verwezelijken:

code:
1
$update = "UPDATE postcode SET stad2 = ucwords(strtolower(stad))";


Dus: stad is een veld in de tabel postcode waarin steden in HOOFDLETTER staan, ik wil deze omzetten naar kleine letters (maar te beginnen met hoofdletter). Hoe kan ik dit doen?

Btw, ik had ook met een while lus kunnen werken en dan telkens apart updaten maar dit gaat echt niet, het zijn ongeveer 64000 verschillende id's die moeten worden geupdated.

Peter

[ Voor 4% gewijzigd door kokorico op 19-06-2004 02:47 ]


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Ik neem aan dat die update eenmalig is, dus waarom is het een bezwaar om dat dan in een loopje up te daten. Doe het desnoods met een extra loopje, zodat je 1000 per keer doet, als je php niet vanaf een prompt kunt runnen. (Weet je ook zeker dat je geen timeout krijg).

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • kokorico
  • Registratie: Januari 2004
  • Laatst online: 22:34
Maar kan je het niet updaten in een update query? Is idd eenmalig :)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Naar lowercase omzetten lukt wel, maar ik ben bang dat je SQL server (welke eigenlijk?) geen built-in equivalent van ucfirst heeft. Als het toch maar eenmalig is kun je het dus net zo goed met PHP doen. 64000 records is nou niet echt een aantal om steil van achterover te slaan.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

In MySQL (ik neem zomaar aan dat je dat gebruikt) heet de functie voor lower case niet strtolower maar LCASE. Verder is er bij mijn weten geen functie die de eerste letter van elk woord in een hoofdletter kan veranderen (zie ook MySQL String Functions), dus ik ben bang dat je dat toch echt in PHP zal moeten doen. Het is een eenmalige conversie, maakt niet uit als het deze ene keer wat lang duurt.

Maar waarom zou je? Je kan het toch gewoon uppercase in de database laten staan, en op het moment dat je het in PHP afdrukt via PHP in het goeie formaat zetten? Een database is sowieso niet voor het formatteren van data, alleen voor het opslaan ervan. Dit wil natuurlijk niet zeggen dat je het daarom maar bewust fout moet doen, maar als je een database aangeleverd krijgt (zoals bij jou waarschijnlijk het geval is) die data levert in een ongewenst formaat, dan pas je dat toch in je eigen programma aan?

Je topic start is trouwens aan de magere kant. Je schrijft nergens welke soort database je gebruikt en code (ook zo'n korte) staat nou eenmaal veel beter tussen [code] of [php] tags. Bovendien geeft het gebruik van de functies ucwords en strtolower in een query duidelijk aan dat je Google niet gebruikt hebt, want de eerste hit bij Google was bij mij meteen raak.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Ik weet niet hoe zwaar die webserver is, en hoeveel views/tijdseenheid dat ding heeft, etc, maar als je met een eenmalige conversie naar een beter formaat (in alle opzichten beter, ook nog) niet elke keer een enkele conversie hoeft te doen, kun je altijd beter converteren in een keer. Dat soort geintjes kosten je later veel tijd als je moet gaan optimaliseren...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 06:55

Reinier

\o/

code:
1
ucwords(strtolower(stad))

Gaat overigens niet altijd goed, let daar ook op :) 's-Gravenhage, Oude Pekela, Wijk aan Zee, etc.

[ Voor 5% gewijzigd door Reinier op 19-06-2004 03:26 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Grijze Vos schreef op 19 juni 2004 @ 03:21:
Ik weet niet hoe zwaar die webserver is, en hoeveel views/tijdseenheid dat ding heeft, etc, maar als je met een eenmalige conversie naar een beter formaat (in alle opzichten beter, ook nog) niet elke keer een enkele conversie hoeft te doen, kun je altijd beter converteren in een keer. Dat soort geintjes kosten je later veel tijd als je moet gaan optimaliseren...
Mee eens. Maar als TS aangeeft niets te voelen voor een eenmalige update op de "langzame" (lees: enige) manier, dan kom ik met andere opties. :)
Ik zou het gewoon even converteren. Is de server traag? Doe het dan op de server die je als devver op je eigen pc zou moeten draaien. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1