Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PHP] Kodowanie znaków na generowanej stronie.

kila 16 Mar 2010 10:04 2973 2
  • #1 16 Mar 2010 10:04
    kila
    Poziom 17  

    Witam! Mam problem z kodowaniem znaków. Niby znacznik mam ustawiony ale kodowanie nie działa. Zobaczcie kod.

    Code:

    <?
    session_start();
    ?>
    <html>
    <head>
    <title>Podgląd zgłoszenia</title>
    <link rel="STYLESHEET" type="text/css" href="styl.css">
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <script>
             function drukuj(){
               t = document.getElementById("druk");
               t.style.marginLeft = "50px";
               window.print();
             }
          </script>
          </head>
    <body>
    <?
    require("...");
    $conn=mysql_connect($host,$bazalogin,$bazahaslo);
    mysql_select_db($baza);
    mysql_query ("SET NAMES latin1");
    if(!empty($_SESSION['uzyt']))
    {

    $klient = $_POST['klient'];
    $nr_pisma = $_POST['nr_pisma'];
    $data_zgl = date("d.m.Y H:i:s");
    $pojazd = $_POST['pojazd'];
    $eksp = $_POST['eksp'];
    //$eksp = 0;
    $miejsce = $_POST['miejsce'];
    $przebieg = $_POST['przebieg'];
    $silnika = $_POST['silnika'];
    $silnikb = $_POST['silnikb'];
    if (empty($silnikb)) {$silnikb = 0;}
    $przekla = $_POST['przekla'];
    $przeklb = $_POST['przeklb'];
    if (empty($przeklb)) {$przeklb = 0;}
    $tresc = $_POST['tresc'];


    $newtresc =
    $status = "Wysłane";
    $wylaczony = Array("nie", "<b>tak</b>");
    $pytanie = "SELECT * FROM klient where klient = $klient";
          $wynik = mysql_query($pytanie);
          while ($r = mysql_fetch_array($wynik)) {
          $zglasz = $r['nazwa'];
          }
          
          function txt2html($str)
    {
      $str = strtr($str, array('&' => '&', '<' => '<', '>' =>
    '>', '"' => '"', '\'' => ''', "\r\n" => "<br>\n", "\n" =>
    "<br>\n", "\r" => "<br>\n", '  ' => ' &nbsp;', "\t" => ' &nbsp; &nbsp;'));
      return $str;






    }

    $wiadomosc = txt2html($tresc);

      $zap = "INSERT INTO zgloszenie (klient, nr_pisma, data_zgl, pojazd, eksp, miejsce, przebieg, silnika, silnikb, przekla, przeklb, tresc, status) VALUES ('$klient', '$nr_pisma', '$data_zgl', '$pojazd', '$eksp', '$miejsce', '$przebieg', '$silnika', '$silnikb', '$przekla', '$przeklb', '$wiadomosc', '$status')";
     $wykonaj = @mysql_query($zap) or die(mysql_error());
     //Header("Location: index.php");
    // echo $wykonaj;
    //echo $zap;

    if($wykonaj){

    $do  = "..." ;

    $temat="Zgłoszenie reklamacyjne nr ".$nr_pisma;

    $zawartosc = "
    <html>
    <head>
    <title></title>
    <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\" />
    <link rel=\"STYLESHEET\" type=\"text/css\" href=\"styl.css\">

    </head>
    <body>
    <table width=\"90%\" border=\"1\">
      <tr><td colspan=\"3\"><h2><B><center>ZGŁOSZENIE USTERKI POJAZDU SZYNOWEGO DO SERWISU PESA BYDGOSZCZ S.A.</center></B></h2></td></tr>
      <tr>
        <td colspan=\"3\">Dane dotyczące zgłoszenia:<br />

          <center>
                <h2>$pojazd</h2>
      </center></td></tr>
      <tr>
        <td colspan=\"3\">Nr zgłoszenia: $nr_pisma</td>
      </tr>
      <tr>
        <td colspan=\"3\">Zgłaszający<br />

          <center>
                <h2>$zglasz</h2>
      </center></td></tr>
      <tr>
        <td width=\"33%\">Data zgłoszenia:<br />
        $data_zgl</td>
        <td width=\"33%\">Miejsce zdarzenia:<br />
        $miejsce</td>
        <td width=\"33%\">Odpowiedzialny:<br />
        Kowalski</td>
      </tr>
      <tr>
        <td>Czy pojazd został wyłączony z ruchu?<br />
          $wylaczony[$eksp]</td>
          <td colspan=\"2\">Miejsce postoju pojazdu:<br />
      $miejsce</td>
      </tr>
      <tr>
        <td>Przebieg (km)<br />
        $przebieg</td>
          <td>Czas pracy silnika (h)<br />
          A: $silnika B: $silnikb</td>
          <td>Czas pracy przekładni (h)<br />
            A: $przekla B: $przeklb</td>
      </tr><tr>
        <td colspan=\"3\">Treść zgłoszenia:<br />$wiadomosc</td>
      </tr>
    </table>

    </body>
    </html>
    ";

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-2' . "\r\n";

    // Additional headers
    $headers .= 'From: Zgłoszenia reklamacyjne <...>' . "\r\n";




    if(mail($do, $temat, $zawartosc, $headers)){
    echo ("\n <p class=\"menu\">wysłano wiadomość</p>"); }else echo ("\n <p class=\"menu\">nie wysłano</p>");


    ?>

    <div id="druk">
    <?
    echo "\n".$zawartosc . "\n";
    echo "<a href=\"#\" onClick=\"drukuj()\">drukuj</a>";
    ?>
    </div>
    <?
    /* ------------ Koniec skryptu do wysylania maili ------------- */

    /*echo '<script language="JavaScript">window.location="../main.php?show=active";
    </script>';*/

    } else {

    die(mysql_error());
    echo 'Z niewiadomych przyczyn dane nie zostaly zapisane. Prosze spróbowac ponownie';}


    }else{
        echo '<p>Brak autoryzacji.</p>';
        echo '<p>Dostęp zabroniony.</p>';
        echo '<br><a href="../index.php">Zaloguj</a>';
    }
    ?>

    <?
    echo '<tr><td height="25" valign = "bottom" style="border-top: 0px dashed #666666;
       border-right: 0px dashed #666666;border-bottom:0px dashed #666666;border-left: 0px dashed #666666;background-repeat: no-repeat;font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px;   font-style: normal;   color: #005695;   background-position: 20px; background-color: #ffffff"><hr>';

    //drukowanie stopki
    require '../require/stopka.php';
    echo '</td></tr></table>';
    ?>
    </body></html>


    Jest to kod, który pobiera dane z formularza i ma go zapisać do bazy i wysłać na maila. Problem w tym, że do bazy się zapisuje poprawnie, z polskimi znakami, a jak drukuję zawartość formularza to nie ma polskich znaków. Tytuł maila też wysyła się bez polskich znaków.
    Nie mam już sił, ma ktoś jakiś pomysł??

    Poprawiłem tytuł. - arnoldziq

    0 2
  • #2 16 Mar 2010 10:14
    arnoldziq
    Moderator Programowanie

    Może raczej ustaw bazę i HTML na UTF8.

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

    i MySQL :
    [PHP] Kodowanie znaków na generowanej stronie.

    0
  • #3 16 Mar 2010 11:13
    kila
    Poziom 17  

    zmieniłem i było jeszcze gorzej :( same krzaki mi się pojawiały przy polskich znakach... w mysql mam dobrze ustawione. Zastanawia mnie jedno, że dane generowane do wysłania maila (w moim przypadku to tabela) pobierane z bazy wyświetlają się dobrze. Gorzej jest z tymi co wpiszę w kodzie.


    EDIT

    Poradziłem sobie z problemem :)
    okazało się, że całą koncepcję psuła funkcja txt2html
    dzięki :) zamykam!

    0