Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] umlauteproblem bei utf8

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    und jetzt baust in die Datei ein Formular ein und schickst es an die selbe Datei, also wenn sie index.php heißt, dann form action="index.php".

    Über Deinem Formular gibst die evtl. eingegebenen Daten wieder aus:
    PHP-Code:
    if(isset($_POST['submit']) && !empty($_POST['deinfeld'])) echo htmpspecialchars($_POST['deinfeld']); 
    funktioniert ?

    Kommen Deine Daten aus der DB ?
    Dann können wir im nächsten Schritt weitermachen.
    Aber mach erst mal das Formular.

    P.S.:
    direkt vor <!DOCTYPE schreibst noch
    PHP-Code:
    header'Content-Type: text/html; charset=utf-8' ); 

    Kommentar


    • #17
      Zitat von Koala Beitrag anzeigen
      direkt vor <!DOCTYPE schreibst noch[...]
      wo das steht, ist irrelevant - es muss im skript lediglich vor jeder ausgabe an den browser notiert werden.

      cx

      Kommentar


      • #18
        @koala - alles klappt ganz wunderbar. und nun?

        Kommentar


        • #19
          wo das steht, ist irrelevant - es muss im skript lediglich vor jeder ausgabe an den browser notiert werden.
          das weiß ich auch, aber gemäß dem EVA-Prinzip ist es dort am besten:
          zuerst der php-Teil, dann header ..., dann html (mit Ausgabe der php-Variablen).


          ok - jetzt schreibst die DB-Verbindung (ganz oben in die Datei):
          PHP-Code:

          // MySQL-Zugangsdaten
          $HOST      "xxx";  // localhost ist bei vielen Hostern der Standardwert
          $ID        "xxx";     // Nutzer/User-ID für die Datenbank
          $PW        "xxx";    // Passwort für die Datenbank
          $DB        "xxx";    // Datenbank-Name

          // DB-Verbindung aufbauen
          $link mysql_connect($HOST$ID$PW)
              or die(
          "Keine Verbindung möglich: " mysql_error());

          // Kollation setzen
          mysql_query("SET CHARACTER SET utf8");
          mysql_query("SET NAMES utf8");

          mysql_select_db($DB) or die("Auswahl der Datenbank fehlgeschlagen"); 
          und dann machst ne Abfrage und speicherst die Daten in einer Variablen:
          PHP-Code:
          $sql "SELECT ... FROM tabelle";
          $res mysql_query($sql) or die/mysql_error());

          $thisoutput '';

          if(
          mysql_num_rows != 0){

            while(
          $row mysql_fetch_assoc($res)){
            
          $thisoutput .= '<div>'.$row['spalte'].'</div>'."\n";
            }
          }
          }else{
            
          $thisoutput 'keine Datensätze vorhanden.';

          Innerhalb des body an geeigneter Stelle: <?php echo $thisoutput;?>

          Kommentar


          • #20
            Sofern die Daten aus der DB kommen, was nuna ja noch nicht beantwortet hat.

            Kommentar


            • #21
              Zitat von koala
              Aber mach erst mal das Formular.
              Den Teil würde ich gerne nochmal sehen. Nur so zur Sicherheit

              PHP-Code:
              <?php
              ini_set
              ('default_mimetype''text/html');
              ini_set('default_charset''utf-8');

              function 
              toHex($str) {
                return 
              join(' '
                  
              array_map(
                    
              'dechex',
                    
              array_map('ord' str_split($str))
                  )
                );
              }

              ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml">
                <head>
                  <title>Untitled Document</title>
                </head>
                <body>
                  <?php
                  
              if (isset($_POST['test'])) {
                    echo 
              '<p>Debug2: 'toHex($_POST['test']), '</p>';
                  }  
                  
                  
              $var 'Quaääääk !';
                  echo 
              '<p>Debug1: 'toHex($var), '</p>';
                  
              ?>
                  <form action="?" method="post">
                    <div>
                      <input type="text" name="test" value="<?php echo $var?>" />
                      <input type="submit" />
                    </div>
                  </form>
                </body>
              </html>
              Was wird ausgegeben, nachdem Du das Formular abgeschickt hast?

              Kommentar


              • #22
                Zitat von cycap Beitrag anzeigen
                Sofern die Daten aus der DB kommen, was nuna ja noch nicht beantwortet hat.
                wenn es nicht so wäre hätt sie es bestimmt gesagt und nicht "und nu?" geschrieben.
                Daß man es als Helfer nicht leicht mit Fragestellern hat ist bekannt,
                aber daß andere Helfer an einem rumkritteln ...

                Sollte ich groben Bockmist schreiben, dann darfst mich aber gerne verbessern. Man lernt ja nie aus.

                Kommentar


                • #23
                  Ich wollte doch nur, dass du dir die Mühe nicht umsonst machst

                  Kommentar


                  • #24
                    lol - zu spät

                    Kommentar


                    • #25
                      Zitat von Koala Beitrag anzeigen
                      lol - zu spät
                      Könnte jetzt aber auch noch 20 Posts so weiter gehen und dann fragt nuna irgendwann "was soll eigentlich die DB Verbindung da? hat doch gar nichts mit meinem Problem zu tun?"

                      Kommentar


                      • #26
                        ok - ganz ruhig. es war nicht meine absicht das forum durcheinander zu wirbeln. mein grundproblem war folgendes:
                        ich habe ein formular registrieren.php aus dem ich die werte mit z.B. $name=checkfeld($_POST['name']); empfange. checkfeld($var) ist eine funktion in einer externen funktionen.php-Datei und lautet so:
                        PHP-Code:
                        function checkfeld($var) {
                            
                        $var=trim($var);
                            if(!
                        $var) {
                                return 
                        FALSE;
                            }
                            else {
                               
                        $var=strtolower($var);
                               
                        $var=utf8_decode($var);

                                if(
                        preg_match('#[^a-zA-Z0-9äöüß\040]#',$var)) {
                                 
                        $strx=array('#[^a-zA-Z0-9äöüß\040]#','# +#','#ä#','#ö#','#ü#','#ß#');
                                 
                        $stry=array(' ',' ','ae','oe','ue','ss');
                                   
                        $var=preg_replace($strx,$stry,$var);
                                   
                        $var=trim($var);
                                    return 
                        $var;
                                }
                                else
                                   
                        $var=trim($var);
                                   return 
                        $var;
                            }

                        nun habe ich in registrieren noch bevor ich eine ausgabe habe und bevor ich 'require("funktionen.php")'; habe den header('Content-Type: text/html; charset=utf-8'); reingeschrieben. also:
                        PHP-Code:
                        <?php
                        header
                        ('Content-Type: text/html; charset=utf-8');
                        require (
                        "funktionen.php");
                        ?>
                        diese registrieren.php ist übrigens teil eines frames index.php (bitte jetzt nicht mit "frames sin aber kacke" kommen). die <form> in der registrieren.php enthält übrigens bereits das accept-charset="utf-8". alles was ich weiß ist, dass ich mitlerweile alles ausprobiert habe und nahe der verzweiflung bin. es ist also noch keine db-verbindung nötig, da die daten zuvor ja erst geprüft werden sollen, bevor sie in die db abgefragt oder reingeschrieben werden. hilfe!

                        Kommentar


                        • #27
                          wenn dein input utf-8 ist (also das formular als utf-8 abgesendet wird -> SELFHTML: HTML/XHTML / Formulare / Formulare definieren ) muss auch die datei ( funktionen.php) als utf-8 gespeichert sein.

                          Kommentar


                          • #28
                            das ist es. sowohl die registrieren.php als auch die funktionen.php sind in utf-8 gespeichert.

                            Kommentar


                            • #29
                              Probier doch bitte mal das Skript in #21 aus

                              Kommentar


                              • #30
                                #21? ich bin überfragt

                                Kommentar

                                Lädt...
                                X