Werte mit Umlaut(ä,ü,ö) werden nicht aus Datenbank gelesen

alessandro_91

Grünschnabel
Hallo Liebe Tutorials-Community..

Ich hab mal wieder ein Problem bei dem ich nicht weiter komme..

Mittels ein Formular, kann ich Daten aus der Datenbank auslesen(Daten werden in Input-Fields eingefügt), bearbeiten(Durch das ändern der Daten in den Input-Fields, kann man die neuen Werte in die Datenbank schreiben) und löschen.

Mein Problem:
Wenn ich in einem Input-Field ein Wert mit einem Umlaut(z.B. Händler) einfüge, schreibt es mir dieses zwar in der Datenbank (Umlaut wird in Datenbank mittels Konsole korrekt angezeigt) jedoch wenn ich die Werte erneut auslesen möchte bleibt das Input-Field leer.

Habe anschliessend gemerkt das die Kollation auf Latin_swedisch_ci war und mittels dem Befehl:
ALTER TABLE tabellenname CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
alles auf UTF-8 geändert..

Hat leider nichts gebracht..

Hier ein Codeausschnitt:
HTML:
<!-- Hier ist das Haupt-Formular um Kundendaten auszulesen, einzuschreiben und zu löschen -->
<form name="readvalues" method="get" action="kundenbearbeiten.php">
  Die Enter-Taste bewirkt NUR das Auslesen der Werte
<br>
  Kundennummer: <input type="text" name="kdnr" maxlength="6" required="required">
     <!-- Folgend sehen Sie die Drei verschiedene Buttons -->
  <input type="submit" name="readvalues"  value="Werte Auslesen">
  <input type="submit" name="writevalues" value="Werte in Datenbank schreiben">
  <input type="submit" name="deleteclient" value="Kunde Loeschen">
     <!-- Hier werden die Werte, welche aus der Datenbank ausgelesen wurden, in die Formular-Felder eingefügt -->
  <?php foreach ($debitors as $debitor) : ?>
       <br>
  Debitor:<br>
  <input type="text" name="debitor" value="<?=$e($debitor['debitor'])?>"><br>
   
  Firma:<br>
  <input type="text" name="firma" value="<?=$e($debitor['firma'])?>"><br> <!-- So lese ich die Werte aus der Datenbank aus und füge sie ins Input-Field ein..  -->
  <?php endforeach; ?>
   
     </form>
   </body>
</html>

Hat jemand irgend eine Idee wo der Fehler sein könnte?

Ich müsste ansonsten die Umlaute in den Input-Fields verbieten.. hoffe finde eine andere Lösung..

Grüsse
Alessandro
 

alessandro_91

Grünschnabel
hallo alxy

Erstmal vielen dank für all deine Hilfestellungen bisher^^
Ich habe versucht in meinem Formular accept-charset="utf-8" (Habe es auch mit utf8 versucht).
Leider bleiben meine Input-Fields leer wen der Wert ein Umlaut enthält..

HTML:
<form name="readvalues" method="get" accept-charset="utf-8" action="kundenbearbeiten.php">
  Die Enter-Taste bewirkt NUR das Auslesen der Werte
  <br>
  Kundennummer: <input type="text" name="kdnr" maxlength="6" required="required">
     <!-- Folgend sehen Sie die Drei verschiedene Buttons -->
  <input type="submit" name="readvalues"  value="Werte Auslesen">
  <input type="submit" name="writevalues" value="Werte in Datenbank schreiben">
  <input type="submit" name="deleteclient" value="Kunde Loeschen">
     <!-- Hier werden die Werte, welche aus der Datenbank ausgelesen wurden, in die Formular-Felder eingefügt -->
  <?php foreach ($debitors as $debitor) : ?>
       <br>
  Debitor:<br>
  <input type="text" name="debitor" value="<?=$e($debitor['debitor'])?>"><br>
  
  Firma:<br>
  <input type="text" name="firma" value="<?=$e($debitor['firma'])?>"><br>

  <?php endforeach; ?>
  
     </form>
   </body>
</html>

Ich habe gleichzeittig zu deiner Antwort ein Hinweis auf
http://php.net/manual/de/function.mysql-set-charset.php
gefunden(Kommentar von Ashus).

Habe den Code in meiner Datenbankverbindungs-Funktion eingefügt:

PHP:
$MySQL_Host    = 'localhost';  
$MySQL_User    = 'root';   
$MySQL_Pwd     = '';   
$globalDbName   = 'kundenliste';    

function connect(){
   global $MySQL_Host, $MySQL_User, $MySQL_Pwd, $globalDbName;
   if(!$linkid=mysql_connect("$MySQL_Host", $MySQL_User, '')){
     echo "Die Verbindung zu ".$MySQL_Host." konnte nicht hergestellt werden.";
     exit;
   }
     else {
         mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
         //diese obenstehende mysql_query habe ich nun ergänzt
         echo '</br>';
     }
  
   return $linkid;
}

Und nun liest er mir die Daten aus.
Die Umlaute werden jedoch nicht korrekt angezeigt(hallöchen = hallöchen)

Ein Schritt weiter zur Lösung :) muss jetzt nur noch hinkriegen das es korrekt anzeigt wird..(Darstellungsfehler)


Hat jemand ne idee was noch fehlt..?
 
Zuletzt bearbeitet:

alessandro_91

Grünschnabel
Habs gefunden..

habe im <head></head> diese Zeile hinzugefügt:
<meta http-equiv="content-type" content="text/html" charset="utf-8">
Jetzt Zeigt er es mir richtig an!! ;D

Thread kann geschlossen werden ^^