Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jaki błąd w formatowaniu ?
Forum PHP.pl > Forum > Przedszkole
primo
Witam serdecznie,

dostosowuję formularz dodawania elementu do bazy danych. Kombinuję z addslashes, ale nie mogę czegoś pojąć. Dodaję do bazy textarea gdzie znajduje się np. myślnik - skrypt dodaje do bazy, ale przy późniejszym odczycie pokazuje mi w tekście zamiast - (myślnik) to
  1. <?php
  2. &#8211;
  3. ?>

Drugim moim problemem jest apostrof. Wiem, wiem addslashes. Potraktowałem tą funkcją dodawane do bazy dane, ale co dziwne. Robię próbę wrzucam do formularza same apostrofy, cudzysłowy i ciągi niezrozumiałych znaków - i zostaje to dodane do bazy. Jednakże jak chcę to powtórzyć z normalnym tekstem gdzie wystąpi tylko np. George`a i już nic nie zostaje dodane do bazy. Wiecie w czym tkwi problem questionmark.gif
revyag
Pokaż jak wstawiasz tekst do bazy i jak go odczytujesz.
primo
poprzedzam htmlspecialchars, trim i wstawiam:

  1. <?php
  2. if(isset($_SESSION['prawid_uzyt']))
  3. {
  4.  
  5. require_once("dodatkowe/formularz-nowy-film.htm");
  6.  
  7. if ($_POST['co'] == 'dodaj') { // dodawanie rekordu
  8. if (addslashes($_POST['tytul_pl']) && addslashes($_POST['tytul_ang']) && addslashes($_POST['dlugosc']) && addslashes($_POST['okladka']) && addslashes($_POST['aktorzy']) && addslashes($_POST['rezyseria']) && addslashes($_POST['recenzja']) && addslashes($_POST['nosnik_dvd']) && addslashes($_POST['nosnik_vhs']) && addslashes($_POST['gatunek']) && addslashes($_POST['rok_prod']) && addslashes($_POST['lektor']) && addslashes($_POST['liczba_glosow']) && addslashes($_POST['suma_glosow']) && addslashes($_POST['format_obrazu']) && addslashes($_POST['jezyk']) && addslashes($_POST['napisy']) && addslashes($_POST['dodatki'])) {
  9.  
  10. $bd = new BD;
  11.  
  12. if (!$bd->otworz()) {
  13. die ($bd->blad());
  14. }
  15.  
  16. $bd->zapytaj("INSERT INTO filmy (tytul_pl, tytul_ang, dlugosc, okladka, aktorzy, rezyseria, recenzja, nosnik
    _dvd, nosnik_vhs, gatunek, rok_prod, lektor, liczba_glosow, suma_glosow, format_o
    brazu, jezyk, napisy, dodatki)
  17.  VALUES ('".$tytul_pl."','".$tytul_ang."','".$dlugosc."','".$okladka."','".$aktorzy."','".$rezyseria."','".$recenzja."','".$nosnik_dvd."','".$nosnik_vhs."','".$gatunek."','".$rok_prod."','".$lektor."','".$liczba_glosow."','".$suma_glosow."','".$format_obrazu."','".$jezyk."','".$napisy."','".$dodatki."')");
  18.  
  19.  
  20. }
  21. }
  22. ?>


odczytuję:

używam tablicy i odnoszę się do niej poprzez
  1. <?php
  2. echo 'row[12]';
  3. ?>
revyag
– to jest kod długiego myślnika z unicode. Prawdopodobnie wstawiasz do textarea znaki w windows-1250, a w bazie masz iso, no i przy odczycie z bazy następuje zamiana na unicode.
Co do wstawiania do bazy tekstu z apostrofem. Według mnie źle to robisz. Z tego warunku wywal addslashes i daj przy insercie. Poza tym oczywiście gdzieś masz przypisanie typu:
  1. <?php
  2. $tytul_pl = $_POST["tytul_pl"];
  3. ?>

no chyba że register_globals=on
primo
dla pełnej jasności - to jest cały kod tego skryptu:

  1. <?php
  2.  
  3. require_once("funkcje/BD.class.php");
  4.  
  5. $tytul_pl = $_POST["tytul_pl"];
  6. $tytul_ang = $_POST["tytul_ang"];
  7. $dlugosc = $_POST["dlugosc"];
  8. $okladka = $_POST["okladka"];
  9. $aktorzy = $_POST["aktorzy"];
  10. $rezyseria = $_POST["rezyseria"];
  11. $recenzja = $_POST["recenzja"];
  12. $nosnik_dvd = $_POST["nosnik_dvd"];
  13. $nosnik_vhs = $_POST["gatunek"];
  14. $gatunek = $_POST["gatunek"];
  15. $rok_prod = $_POST["rok_prod"];
  16. $liczba_glosow = $_POST["liczba_glosow"];
  17. $suma_glosow = $_POST["suma_glosow"];
  18. $format_obrazu = $_POST["format_obrazu"];
  19. $jezyk = $_POST["jezyk"];
  20. $napisy = $_POST["napisy"];
  21. $dodatki = $_POST["dodatki"];
  22.  
  23. $tytul_pl = HTMLSpecialChars($tytul_pl);
  24. $tytul_ang = HTMLSpecialChars($tytul_ang);
  25. $dlugosc = HTMLSpecialChars($dlugosc);
  26. $okladka = HTMLSpecialChars($okladka);
  27. $aktorzy = HTMLSpecialChars($aktorzy);
  28. $rezyseria = HTMLSpecialChars($rezyseria);
  29. $recenzja = HTMLSpecialChars($recenzja);
  30. $nosnik_dvd = HTMLSpecialChars($nosnik_dvd);
  31. $nosnik_vhs = HTMLSpecialChars($nosnik_vhs);
  32. $gatunek = HTMLSpecialChars($gatunek);
  33. $rok_prod = HTMLSpecialChars($rok_prod);
  34. $liczba_glosow = HTMLSpecialChars($liczba_glosow);
  35. $suma_glosow = HTMLSpecialChars($suma_glosow);
  36. $format_obrazu = HTMLSpecialChars($format_obrazu);
  37. $jezyk = HTMLSpecialChars($jezyk);
  38. $napisy = HTMLSpecialChars($napisy);
  39. $dodatki = HTMLSpecialChars($dodatki);
  40.  
  41. $tytul_pl = trim($tytul_pl);
  42. $tytul_ang = trim($tytul_ang);
  43. $dlugosc = trim($dlugosc);
  44. $okladka = trim($okladka);
  45. $aktorzy = trim($aktorzy);
  46. $rezyseria = trim($rezyseria);
  47. $recenzja = trim($recenzja);
  48. $nosnik_dvd = trim($nosnik_dvd);
  49. $nosnik_vhs = trim($nosnik_vhs);
  50. $gatunek = trim($gatunek);
  51. $rok_prod = trim($rok_prod);
  52. $liczba_glosow = trim($liczba_glosow);
  53. $suma_glosow = trim($suma_glosow);
  54. $format_obrazu = trim($format_obrazu);
  55. $jezyk = trim($jezyk);
  56. $napisy = trim($napisy);
  57. $dodatki = trim($dodatki);
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. if(isset($_SESSION['prawid_uzyt']))
  65. {
  66.  
  67. require_once("dodatkowe/formularz-nowy-film.htm");
  68.  
  69.     if ($_POST['co'] == 'dodaj') {  // dodawanie rekordu
  70. if (addslashes($_POST['tytul_pl']) && addslashes($_POST['tytul_ang']) && addslashes($_POST['dlugosc']) && addslashes($_POST['okladka']) && addslashes($_POST['aktorzy']) && addslashes($_POST['rezyseria']) && addslashes($_POST['recenzja']) && addslashes($_POST['nosnik_dvd']) && addslashes($_POST['nosnik_vhs']) && addslashes($_POST['gatunek']) && addslashes($_POST['rok_prod']) && addslashes($_POST['lektor']) && addslashes($_POST['liczba_glosow']) && addslashes($_POST['suma_glosow']) && addslashes($_POST['format_obrazu']) && addslashes($_POST['jezyk']) && addslashes($_POST['napisy']) && addslashes($_POST['dodatki'])) {
  71.  
  72.   $bd = new BD;    
  73.  
  74. if (!$bd->otworz()) {
  75.     die ($bd->blad());
  76. }
  77.     
  78.     $bd->zapytaj("INSERT INTO filmy (tytul_pl, tytul_ang, dlugosc, okladka, aktorzy, rezyseria, recenzja, nosnik
    _dvd, nosnik_vhs, gatunek, rok_prod, lektor, liczba_glosow, suma_glosow, format_o
    brazu, jezyk, napisy, dodatki)
  79.                      VALUES ('".$tytul_pl."','".$tytul_ang."','".$dlugosc."','".$okladka."','".$aktorzy."','".$rezyseria."','".$recenzja."','".$nosnik_dvd."','".$nosnik_vhs."','".$gatunek."','".$rok_prod."','".$lektor."','".$liczba_glosow."','".$suma_glosow."','".$format_obrazu."','".$jezyk."','".$napisy."','".$dodatki."')");
  80.  
  81.  
  82. }
  83. }
  84.  
  85.  
  86.  
  87. $result = $bd->liczbaZmienionychWierszy();
  88.  
  89.  
  90.     }
  91. else
  92. {
  93.     echo '<p>Uzytkownik niezalogowany.</p>';
  94.     echo '<p>Tylko zalogowani uzytkownicy moga ogladac te strone.</p>';
  95. }
  96. ?>



Cytat
Prawdopodobnie wstawiasz do textarea znaki w windows-1250


kodowanie mam określone tylko w index.php :
  1. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
a faktycznie baza jest iso. Z tym że jeśli baza iso i ja mam iso to skąd błąd.

jak możesz to powiedz w któym wierszu zmienić funkcję addslashes.
revyag
1. Nie o to chodzi.
Czy piszesz wszystkie teksty ręcznie, czy np. niektóre kopiujesz(np. z worda) ? Wtedy będzie sytuacja o której mówiłem.
2.
Optymalnie będzie tak zapisać smile.gif
  1. <?php
  2. $tytul_pl = addslashes(htmlspecialchars(trim($_POST["tytul_pl"])));
  3. ?>
primo
no faktycznie...

treści jakie wprowadzam to typowy opis filmu, który biorę kopiuję ze strony producenta filmu - jest to taki sam tekst jak na pudełku filmu, który legalnie kupuję. I faktcznie jak ręcznie wpiszę do formularza tekst z apostrofami to dodaje do bazy, a jak zrobię to poprzez ctrl+v to się sypie.

Dzięki za ukazanie znacznie prostszego rozwiązania napisania złożonego traktowania ciągu 3 funkcjami winksmiley.jpg
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.