Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Polskie znaki nie przechodzą do bazy
Forum PHP.pl > Forum > Przedszkole
bombas51
Witam, mam problem stworzyłem formularz którego zadaniem jest dodawanie rekordów do bazy. Sprawa się komplikuje gdy zamieszczam polskie znaki.
Tekst nie dochodzi wcala bądź dochodzi urwany.

Przejdzmy do kodziku

config.php

  1. <?php
  2. $host_name = 'localhost';
  3. $user_name = 'u...l';
  4. $pass_word = 'k......yl';
  5. $database_name = 'u....al';
  6.  
  7. $conn = mysql_connect($host_name, $user_name, $pass_word) or die ('Error connecting to mysql');
  8. mysql_select_db($database_name);
  9.  
  10. mysql_query('SET CHARSET utf8');
  11. ?>


dodaj.php

  1. <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
  2. </head>
  3. <script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
  4. <script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>
  5.  
  6.  
  7. <form action="" method="post">
  8.  
  9. nazwa: <input type="text" name="nazwa">
  10. <br/>wynalazca: <input type="text" name="wynalazca">
  11. <br/>narodowosc: <input type="text" name="narodowosc">
  12. <br/>data wynalezienia: <input type="text" name="data_wyn">
  13.  
  14. <br/>treść <textarea name="tresc" rows="20" cols="50"></textarea>
  15. <br/><input type="submit" value="Dodaj"></form>
  16.  


  1. <?php
  2. include("config.php");
  3. header("Content-Type: text/html; charset=utf-8");
  4.  
  5. $nazwa = $_POST['nazwa'];
  6. $wynalazca = $_POST['wynalazca'];
  7. $narodowosc = $_POST['narodowosc'];
  8. $data_wyn = $_POST['data_wyn'];
  9. $tresc = $_POST['tresc'];
  10.  
  11.  
  12. if($nazwa and $wynalazca and $narodowosc and $data_wyn and $tresc) {
  13.  
  14. $ins = @mysql_query("INSERT INTO wynalazki SET nazwa='$nazwa', wynalazca='$wynalazca', data='now()', data_wynalezienia='$data_wyn', narodowosc='$narodowosc', tresc='$tresc'");
  15.  
  16. if($ins) echo "Rekord został dodany poprawnie";
  17. else echo "Błąd nie udało się dodać nowego rekordu";
  18.  
  19. }
  20.  
  21. ?>


Proszę o pomoc sam nie mogę sobie poradzić
kamil_lk
Miałem ten sam problem.
Wystarczyło zmienić kodowanie podczas tworzenia bazy w panelu PhpMyAdmin.
_Borys_
Zmień kodowanie pliku z formularzem.
bombas51
Wielkie dzięki chyba działa smile.gif
Mam tylko jeszcze pytanko: Dlaczego rekordy do bazy nie dostają kolejnego 'id' np jak wyczyszczę tabele to zamiast id 1 rekord dostaje np 45 ?

  1. id int(11) Nie Brak AUTO_INCREMENT
mortus
Ponieważ informacja o kolumnach "specjalnych" (jak np. klucze główne, indeksy) przechowywana jest w systemie bazodanowym. Aby zresetować numerowanie możesz użyć zapytania:
  1. ALTER TABLE `tabela` AUTO_INCREMENT = 1;

Alternatywnie trzeba tabele usunąć i utworzyć jeszcze raz.
bombas51
Naprawdę wielkie dzięki, ostatnim moim problemem jest data - do bazy dodawana jest jako "0000-00-00 00:00:00" zamiast np. 2013-03-01 20:02:16
_Borys_
Spróbuj NOW() bez apostrofów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.