Imm wieder nervt es mich, dass sich Kunden mit kleingeschriebenen Namen und kleingeschriebener Anschrift im Shop anmelden. Problematisch wird es immer hinterher, wenn man mit Rechnungstools oder einer WaWi arbeitet.
Damit zukünftig die Daten, wie Name, Vorname und Stadt mit Großbuchstaben am Anfang in der Datenbank stehen sind nur kleine Änderungen nötig.
create_account.phpSuche (ca. Zeile 262 )$sql_data_array = array ( 'customers_vat_id' => $vat, 'customers_vat_id_status' => $customers_vat_id_status, 'customers_status' => $customers_status, 'customers_firstname' => $firstname, 'customers_lastname' => $lastname, 'customers_email_address' => $email_address, 'customers_telephone' => $telephone, 'customers_fax' => $fax, 'customers_newsletter' => $newsletter, 'customers_password' => xtc_encrypt_password
($password), 'customers_date_added' => 'now()', 'customers_last_modified' => 'now()',); Ersetze mit:$sql_data_array = array ( 'customers_vat_id' => $vat, 'customers_vat_id_status' => $customers_vat_id_status, 'customers_status' => $customers_status, 'customers_firstname' => mb_convert_case($firstname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'customers_lastname' => mb_convert_case($lastname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'customers_email_address' => $email_address, 'customers_telephone' => $telephone, 'customers_fax' => $fax, 'customers_newsletter' => $newsletter, 'customers_password' => xtc_encrypt_password
($password), 'customers_date_added' => 'now()', 'customers_last_modified' => 'now()',); Suche (ca. Zeile 288)$sql_data_array = array ( 'customers_id' => $_SESSION['customer_id'], 'entry_firstname' => $firstname, 'entry_lastname' => $lastname, 'entry_street_address' => $street_address, 'entry_postcode' => $postcode, 'entry_city' => $city, 'entry_country_id' => $country, 'address_date_added' => 'now()', 'address_last_modified' => 'now()'); Ersetze mit$sql_data_array = array ( 'customers_id' => $_SESSION['customer_id'], 'entry_firstname' => mb_convert_case($firstname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_lastname' => mb_convert_case($lastname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_street_address' => mb_convert_case($street_address, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_postcode' => $postcode, 'entry_city' => mb_convert_case($city, MB_CASE_UPPER
, $_SESSION['language_charset']), 'entry_country_id' => $country, 'address_date_added' => 'now()', 'address_last_modified' => 'now()'); create_guest_account.phpSuche (ca. Zeile 229):$sql_data_array = array ( 'customers_vat_id' => $vat, 'customers_vat_id_status' => $customers_vat_id_status, 'customers_status' => $customers_status, 'customers_firstname' => $firstname, 'customers_lastname' => $lastname, 'customers_email_address' => $email_address, 'customers_telephone' => $telephone, 'customers_fax' => $fax, 'customers_newsletter' => $newsletter, 'account_type' => '1', 'customers_date_added' => 'now()', 'customers_last_modified' => 'now()',); Ersetze mit:$sql_data_array = array ( 'customers_vat_id' => $vat, 'customers_vat_id_status' => $customers_vat_id_status, 'customers_status' => $customers_status, 'customers_firstname' => mb_convert_case($firstname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'customers_lastname' => mb_convert_case($lastname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'customers_email_address' => $email_address, 'customers_telephone' => $telephone, 'customers_fax' => $fax, 'customers_newsletter' => $newsletter, 'account_type' => '1', 'customers_date_added' => 'now()', 'customers_last_modified' => 'now()',); Suche (ca.Zeile 256)$sql_data_array = array ( 'customers_id' => $_SESSION['customer_id'], 'entry_firstname' => $firstname, 'entry_lastname' => $lastname, 'entry_street_address' => $street_address, 'entry_postcode' => $postcode, 'entry_city' => $city, 'entry_country_id' => $country); Ersetze mit:$sql_data_array = array ( 'customers_id' => $_SESSION['customer_id'], 'entry_firstname' => mb_convert_case($firstname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_lastname' => mb_convert_case($lastname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_street_address' => mb_convert_case($street_address, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_postcode' => $postcode, 'entry_city' => mb_convert_case($city, MB_CASE_UPPER
, $_SESSION['language_charset']), 'entry_country_id' => $country); /includes/modules/checkout_address_store.phpSuche (ca. Zeile 116): $sql_data_array = array ('customers_id' => $_SESSION['customer_id'], 'entry_firstname' => $firstname, 'entry_lastname' => $lastname, 'entry_street_address' => $street_address, 'entry_postcode' => $postcode, 'entry_city' => $city, 'entry_country_id' => $country); Ersetze mit: $sql_data_array = array ('customers_id' => $_SESSION['customer_id'], 'entry_firstname' => mb_convert_case($firstname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_lastname' => mb_convert_case($lastname, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_street_address' => mb_convert_case($street_address, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_postcode' => $postcode, 'entry_city' => mb_convert_case($city, MB_CASE_TITLE
, $_SESSION['language_charset']), 'entry_country_id' => $country); Nun wäre das Problem bei den Neuregistrierungen gelöst. Vielleicht hat ja einer der PHP und MySQL Experten eine Idee, wie man die Sache mit den Großbuchstaben beim Straßennamen löst.
Nun geht's in die vollen und die bisherigen "Kleinschreiberkunden" werden in der Datenbank auf Vordermann gebracht.
WICHTIG!!! VORHER EIN BACKUP ERSTELLENMit phpMyAdmin in der Datenbank folgende Funktion erstellen.
DELIMITER ||
DROP FUNCTION IF EXISTS ucwords||
CREATE FUNCTION ucwords(s VARCHAR(255)) RETURNS VARCHAR(255) BEGIN
DECLARE cont INT UNSIGNED DEFAULT 0;
DECLARE flag TINYINT UNSIGNED DEFAULT 1;
DECLARE cadena VARCHAR(255) DEFAULT '';
WHILE(cont <= LENGTH(s)) DO
IF(SUBSTRING(s,cont,1) = ' ') THEN
SET cadena = CONCAT(cadena,' ');
SET cont = cont + 1;
SET flag = 1;
ELSE
SET flag = 0;
END IF;
IF flag = 1 THEN
SET cadena = CONCAT(cadena,UCASE(SUBSTRING(s,cont,1)));
ELSE
SET cadena = CONCAT(cadena,LCASE(SUBSTRING(s,cont,1)));
END IF;
SET cont = cont + 1;
END WHILE;
RETURN LTRIM(cadena);
END;
||
DELIMITER ;
Nun ist diese Funktion gespeichert und mit den folgenden Zeilen werden alle Namen, Straßen und Städte jeweils so umgewandelt, dass der erste Buchstabe eine Großbuchstabe ist
UPDATE customers SET customers_firstname = ucwords(customers_firstname);
UPDATE customers SET customers_lastname = ucwords(customers_lastname);
UPDATE address_book SET entry_firstname = ucwords(entry_firstname);
UPDATE address_book SET entry_lastname = ucwords(entry_lastname);
UPDATE address_book SET entry_street_address = ucwords(entry_street_address);
UPDATE address_book SET entry_city = ucwords(entry_city);
Gruß
Ronny
[
EDIT Tomcraft 03.11.2011: Korrigierten Code eingefügt, Danke an Webkiste aka Ronny.]
[
EDIT franky_n 04.11.2011: Korrigierten Code eingefügt.]
[
EDIT Tomcraft 06.01.2022: Anleitung
erweitert, Danke an scooterama.]
Linkback: https://www.modified-shop.org/forum/index.php?topic=16460.0