• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MySQL-Ausgabe

soulxheart

Mitglied
Guten Tag

Ich habe eine statische Seite mit Daten aus einer .csv-Datei, die in einer Tabelle angezeigt werden.

Nun habe ich die ganzen Daten in eine MySQL-Datenbank gepackt, weil man die Datensätze auch bearbeiten sollte.

So lese ich die Datenbank aus:

Code:
<?php
        $mysqlhost="localhost";
        $mysqluser="";
        $mysqlpwd="";
        $mysqldb="";
               $connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen!");
               mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht wählen!");
               $sql = "SELECT * FROM tbl_Aktiven";
               $adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich!");
               $anzahl = mysql_num_rows($adressen_query);
?>     
    <table cellpadding="5" cellspacing="0" border="1" width="90%" class="printable">
        <tr>
               <td style="font-weight:bold; background-color:#B0B0B0;">KG</td>
               <td style="font-weight:bold; background-color:#B0B0B0;">Konto</td>
               <td style="font-weight:bold; background-color:#B0B0B0;">Bezeichnung</td>
               <td style="font-weight:bold; background-color:#B0B0B0;">Erläuterung</td>
        </tr>
<?php
        while ($adr = mysql_fetch_array($adressen_query)){
?>
        <tr>
            <td><?=$adr['KG']?></td>
            <td><?=$adr['Konto']?></td>
            <td><?=$adr['Bezeichnung']?></td>
            <td><?=$adr['Erläuterung']?></td>
        </tr>
    <?php
               }
    ?>
    </table>
    <?php
               echo "Anzahl der Datensätze: $anzahl";
        ?>

Das letzt Feld "Erläuterung" wird zusammen gepresst, "Bezeichnung" dagegen ist am grössten. Bei der statischen Variante ohne Datenbank sieht das alles gut aus.

Ohne Datenbank: http://picload.org/image/diwdpcp/ohnedb.png
Mit Datenbank: http://picload.org/image/diwdpco/mitdb.png

Laut phpMyAdmin müsste "Bezeichnung" 100 und "Erläuterung" 650 Zeichen gross sein.

Wie gehe ich da jetzt vor bzw. was ist falsch?



MfG
 
HAllo,

also umlaute in variable geht ja gar nicht :O)
PHP:
$adr['Erläuterung']
dann haben deine Spalten kein Breiten angabe, das ist auch nicht gut.
Dann ist wohl die codierung auch nicht gleich zwischen DB und der Seite. utf8<>iso oder so, deswegen die fragezeichen. Hast überhaupt in der Seite doctype und das übliche head zeug?

Cheffchen
 
Hallo Cheffchen

Das mit der/n Variablen habe ich so aus einem Script aus dem Internet übernommen, werde ich aber gleich noch ändern.

Ich habe folgendes im Stylesheet:
Code:
/* TABELLE */
table {
    border: 1px solid #000000;
    text-align: center;
    width: 960px;
    align: center;
}
table td {
    border: 1px solid #000000;
    text-align: left;
}

Müsste so doch klappen - bei der Version ohne Datenbank hat das ja auch geklappt?

Die Kollation in der Datenbank habe ich bei der Verbindung, sowie bei den Tabellen selber auf utf8_unicode_ci gestellt (phpMyAdmin).

Hier der Doctype der Seite:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Und die Zeichenkodierung:
Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />



Grüsse
 
Der Zeichensatz kann auch im http-Header gesetzt werden (nicht zu verwechseln mit dem HTML-head) und sich dort von deiner Angabe unterscheiden. Diese Angabe würde dann auch die HTML-head-Angabe überschreiben. Du solltest das daher auch kontrollieren.

Und kontrolliere auch die Datenbankverbindung, die muss auch auf dem selben Zeichensatz stehen.
 
Der Zeichensatz kann auch im http-Header gesetzt werden (nicht zu verwechseln mit dem HTML-head) und sich dort von deiner Angabe unterscheiden. Diese Angabe würde dann auch die HTML-head-Angabe überschreiben. Du solltest das daher auch kontrollieren.

Und kontrolliere auch die Datenbankverbindung, die muss auch auf dem selben Zeichensatz stehen.

Die ersten drei Zeilen im Script sind:
Code:
<?php
header('Content-type: text/html; charset=utf-8');
?>

Und bei der Datenbankverbindung habe ich jetzt:
Code:
<?php
    $mysqlhost="localhost";
    $mysqluser="user";
    $mysqlpwd="pw";
    $mysqldb="dbname";
        $connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen!");
        mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht wählen!");
        //mysql_query("SET NAMES 'utf-8'");
        mysql_query("SET CHARACTER SET 'utf-8'");
        $sql = "SELECT * FROM tbl_Aktiven";
        $adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich!");
        $anzahl = mysql_num_rows($adressen_query);
?>

Und auch mit diesen beiden Dingen klappt es nicht...



Grüsse
 
Welchen Zeichensatz hat die CSV-Datei?
Welchen Zeichensatz hat die Datenbank, die Tabelle und die Spalten in denen die Daten aus der CSV-Datei importiert werden?
Ist die Ausgabe der Inhalte im phpmyadmin wirklich korrekt? Der wandelt mitunter auch die Inhalte um, was täuschen kann.
 
Welchen Zeichensatz hat die CSV-Datei?
Welchen Zeichensatz hat die Datenbank, die Tabelle und die Spalten in denen die Daten aus der CSV-Datei importiert werden?
Ist die Ausgabe der Inhalte im phpmyadmin wirklich korrekt? Der wandelt mitunter auch die Inhalte um, was täuschen kann.

Im phpMyAdmin werden alle Daten bzw. die Umlaute richtig angezeigt.

Die CSV-Datei ist UTF-8 kodiert.

In phpMyAdmin steht auf der rechten Seite bei "MySQL" folgendes: MySQL-Zeichensatz: UTF-8 Unicode (utf8).

Wenn ich links auf eine Tabelle klicke und dann auf "Struktur", steht bei den einzelnen Spalten: utf8_unicode_ci.

Der HTTP-Header ist UTF-8, der Meta-Tag ist UTF-8 und bei der Datenbankverbindung im PHP-Script ist ein mysql_query für UTF-8 ebenfalls vorhanden.

Habe eben rausgefunden, wenn ich die Zeichenkoderiung im Firefox (Ansicht -> Zeichenkodierung) zu Westlich (ISO-8859-1) ändere, werden die Umlaute angezeigt, dafür die Umlaute ausserhalb der DatenbankTabelle icht...

! EDIT: Habe das Problem gelöst, danke euch trotzdem: mysql_set_charset('utf8', $connection);

Grüsse
 
Zuletzt bearbeitet:
Zurück
Oben