MySQL: Ändern von Kleinschreibung in Großschreibung (name in Name)

M81

Grünschnabel
Hallo,

ich möchte gerne in einer Datenbank in einer Tabelle einen Cronjob laufen lassen, der mir automatisch den Inhalt überprüft und dann immer den ersten Buchstaben eines Wortes als Großbuchstaben macht.

Um genauer zu sein: Ich verwende das Shopsystem osCommerce. Einige Kunden registrieren sich jetzt als
"vorname nachname, straße, ort". das möchte ich in
"Vorname Nachname, Straße, Ort" umwandeln.

Dieser Inhalt wird in der Tabelle address_book gespeichert, allerdings in verschiedenen Reihen.

Ist so ein Skript möglich, oder funktioniert das gar nicht?
Ich habe von PHP leider keine Ahnung, muss also Euch um Hilfe anbetteln. ;)
Ach ja, bei meinem Provider kann ich Cronjobs nur als Skript laufen lassen, über Kommandozeile geht das nicht.

Besten Dank für jegliche Antwort schon jetzt
M81
 
M81 hat gesagt.:
Hallo,
Um genauer zu sein: Ich verwende das Shopsystem osCommerce. Einige Kunden registrieren sich jetzt als
"vorname nachname, straße, ort". das möchte ich in
"Vorname Nachname, Straße, Ort" umwandeln.

Ist so ein Skript möglich, oder funktioniert das gar nicht?
Ich habe von PHP leider keine Ahnung, muss also Euch um Hilfe anbetteln. ;)
M81

Am besten schreibst du dir ein PHP Skript das die Query ausführt...

PHP:
<?php
$con = mysql_connect("host","user","pass") or die ("Connection Error: ".mysql_error);
mysql_selectdb("datenbank");

$query = 'UPDATE address_book 
		  SET vorname = UPPER(SUBSTRING(vorname,1,1)),
			  nachname = UPPER(SUBSTRING(nachname,1,1)),
			  strasse = UPPER(SUBSTRING(strasse,1,1)),
			  ort = UPPER(SUBSTRING(ort,1,1))
';

mysql_query($query) or die("Query Error: ".mysql_error);

//
// hier könnte Code fürs Logging reinkommen
//
mysql_close($con);

?>
Das ist nur ein ein Beispiel. Wenn du das testen willst, mach auf jeden Fall vorher ein Backup der Kundendaten. Wenn du sehr viele Kundendaten hast, kann es passieren das das Script sehr lange (zu lange) läuft. Da muss aber schon richtig was an Daten in der DB stehen.

Vorname, Nachname, Ort, Strasse sind mit den Spaltenname der Tabelle zu ersetzen

Wenn es zu lange dauern sollte, dann könnte man die Tabelle um ein Feld erweitern in dem festgehalten wird, ob der Datensatz schonmal behandelt wurde - das würde dann bedeutend schneller gehen (hier werden jetzt immer alle DS bearbeitet)...

bye
 
Hallo,

also das Skript habe ich probiert. Hat leider nicht so ganz geklappt.
Es hat zwar den ersten Buchstaben in enen Großbuchstaben umgewandelt, allerdings war danach nur noch EIN Buchstabe in jeder Spalte.
Der komplette Rest wurde abgeschnitten.

Wie kann ich das denn ändern, dass er zwar den ersten Buchstaben ändert, den Rest aber behält?
 
Ahhh Sorry - is mir nicht aufgefallen - habs mit einer Tabelle getested, in der nur einstellige Werte drinnen waren... Versuchs mal mit folgender Query

Code:
$query = 'UPDATE address_book
          SET vorname = CONCAT(UPPER(SUBSTRING(vorname,1,1)),SUBSTRING(vorname FROM 2)),
              nachname = CONCAT(UPPER(SUBSTRING(nachname,1,1)),SUBSTRING(nachname FROM 2)),
              strasse = CONCAT(UPPER(SUBSTRING(strasse,1,1)),SUBSTRING(strasse FROM 2)),
              ort = CONCAT(UPPER(SUBSTRING(ort,1,1)),SUBSTRING(ort FROM 2))';

ciao
 
Zurück