zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Kleines Skript: Alle Umlaute in der Datenbank reparieren

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 23.12.2011, 14:52
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard Kleines Skript: Alle Umlaute in der Datenbank reparieren

Hallöchen,

da ich es für ein Projekt brauchte, hab ich schnell ein kleines PHP Skript erstellt, dass automatisch die Umlaute in allen Tabellen in einer MySQL Datenbank korrigiert (so Späße wie ß und Ãœ).

Einfach nur die Zugangsdaten eintragen, ausführen, fertig.

PHP-Code:
<?php
/**
 * Alle kaputten Umlaute reparieren bei Umstellung von ISO->UTF8
 *
 * @project        -
 * @author        Boris Bojic <bojic@devshack.biz>
 * @copyright    Copyright (c) 2011, Boris Bojic (DevShack)
 * @version        Fri, 23 Dec 2011 13:47:11 +0100
 * @updated        -
 *
 */

// === [ Content / Charset ] ==============================================
header('Content-Type: text/html; charset=utf-8');

// PHP auch explizit auf UTF-8 setzen
mb_internal_encoding('UTF-8');

$db = array();

$db['host']        = "localhost";
$db['uname']    = "mysql_user";
$db['password']    = "mysql_pass";
$db['database']    = "datenbankname";
    


$dbconnect mysql_connect($db['host'], $db['uname'], $db['password']) or die ("Konnte keine Verbindung zur Datenbank aufnehmen!");
mysql_select_db($db['database'],$dbconnect) or die ("Fehler beim Auswählen der Datenbank!");

mysql_set_charset('utf8');


echo 
'<pre>';


function 
getTables($db){
    
    
$result mysql_query("SHOW TABLES FROM " $db['database']);
    
    while(
$row mysql_fetch_row($result)){
        
$res[] = $row[0];
    }

    return 
$res;
    
}

function 
getColumns($table){

    
$table mysql_real_escape_string($table);

    
$mysqlres mysql_query("SHOW COLUMNS FROM " $table);
    while(
$row mysql_fetch_row($mysqlres)){
        
$res[] = $row[0];
    }

    return 
$res;
}

// Alle Tabellen ermitteln
$tablesArray getTables($db);
    
// Alle Spalten pro Tabelle ermitteln und durcharbeiten
foreach($tablesArray AS $table){
    
    
$affectedRows 0;
    
$spalten getColumns($table);

    echo 
"Tabelle: " $table "<br />";
    

    foreach(
$spalten AS $spalte){
    
        echo 
"...Spalte: " $spalte "<br />";
    
        
$query '
            UPDATE `' 
$table '` SET
              `' 
$spalte '` = REPLACE(`' $spalte '`,"ß", "ß"),
              `' 
$spalte '` = REPLACE(`' $spalte '`, "ä", "ä"),
              `' 
$spalte '` = REPLACE(`' $spalte '`, "ü", "ü"),
              `' 
$spalte '` = REPLACE(`' $spalte '`, "ö", "ö"),
              `' 
$spalte '` = REPLACE(`' $spalte '`, "Ä", "Ä"),
              `' 
$spalte '` = REPLACE(`' $spalte '`, "Ãœ", "Ü"),
              `' 
$spalte '` = REPLACE(`' $spalte '`, "Ö", "Ö"),
              `' 
$spalte '` = REPLACE(`' $spalte '`, "€", "€")
        '
;
    
        
mysql_query($query) OR die(mysql_error() . $query);
        
$affectedRows += mysql_affected_rows();
    
    }

    
    echo 
"Tabelle " $table " aktualisiert, Datensätze: " $affectedRows "<br /><br />";
    
}
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 23.12.2011, 16:36
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 414
Maxefix ist ein sehr geschätzer MenschMaxefix ist ein sehr geschätzer MenschMaxefix ist ein sehr geschätzer Mensch
Standard

Alle anderen Sonderzeichen werden davon halt nicht berührt. Es gibt aber noch einen anderen Trick:

https://www.globalways.net/blog/arch...acter-set.html

Gruß,
Max
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 23.12.2011, 16:38
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Ja, wie da schon steht - mein Skript behebt nur (deutsche) Umlaute.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #4 (permalink)  
Alt 24.12.2011, 06:22
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Es ist dennoch in jedem Fall eine Überlegung wert, den von Maxefix geposteten Ansatz zu integrieren. (Wobei ich den konkret verlinkten Artikel nicht aufmerksam gelesen habe.) Der stellt so ziemlich die „ideale“ Lösung dar.
Mit Zitat antworten
  #5 (permalink)  
Alt 24.12.2011, 10:49
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Ja der Ansatz sieht nicht schlecht aus. Wenn man dann noch PDO nutzt, ist es sogar relativ unabhängig vom DBMS.
Mit Zitat antworten
  #6 (permalink)  
Alt 24.12.2011, 18:26
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Meine Güte, das ist nur ein schnell zusammen gehacktes, kleines Skriptchen ... für simple Zwecke absolut ausreichend. Ich wollte nicht gleich eine perfekt ausgefeilte Klasse daraus machen
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #7 (permalink)  
Alt 24.12.2011, 19:13
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Na ja, warum denn nicht. Ist doch eine nützliche Sache und die Idee ist gut.

Egal, Pizza! Frohe Weihnachten!
Mit Zitat antworten
  #8 (permalink)  
Alt 25.12.2011, 00:40
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Ok, ich überlegs mir
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #9 (permalink)  
Alt 25.12.2011, 20:35
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Das sollte ja auch keine Kritik sein, nur eine Anregung.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 29.12.2011, 09:18
Neuer Benutzer
neuer user
 
Registriert seit: 29.12.2011
Beiträge: 1
pallo befindet sich auf einem aufstrebenden Ast
Standard

Ich sage einfach nur: danke.



Grüße
Pallo
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Umlaute aus Datenbank planet4 Serveradministration und serverseitige Scripte 5 21.04.2010 21:11
Umlaute in MySQL Datenbank onkel-tom (X)HTML 2 07.03.2009 01:55


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:37 Uhr.