• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wysyłanie polskich znaków do bazy danych przez formularz

Object Storage Arubacloud
0 głosów
1,452 wizyt
pytanie zadane 21 stycznia 2016 w SQL, bazy danych przez Malolacik De Nowicjusz (190 p.)
Mam jeden plik z formularzem:

	<form action="dodaj_news.php" method="post">
		Tytuł:<br/>
		<input type="text" name="tytul" /><br/>
		Autor:<br/>
		<input type="text" name="autor" /><br/>
		Data (np. 2014-03-02) :<br/>
		<input type="date" name="data" /><br/>
		Godzina (np. 14:15) :<br/>
		<input type="time" name="godzina" /><br/>
		Treść:<br/>
		 <textarea rows="10" cols="50" name="tresc" ></textarea><br/>
		Obrazek (końcówka linku):<br/>
		<input type="text" name="obrazek" /><br/>
		<br/>
		<input type="submit" value="Dodaj newsa"/>
		
	</form>

​
Drugi plik dodaj_news.php z kodem:

<?php 
	
	$tytul = $_POST['tytul'];
	$autor = $_POST['autor'];
	$data = $_POST['data'];
	$godzina = $_POST['godzina'];
	$tresc = $_POST['tresc'];
	$obrazek = $_POST['obrazek'];

echo<<<END
				$tytul<br/>
				$autor<br/>
				$data<br/>
				$godzina<br/>
				$obrazek<br/>
				$tresc<br/>
END;


	require_once "dbconnect.php";
	$polaczenie = @new mysqli($host, $user, $password, $database);
	mysql_query("SET NAMES utf-8");
	$in2 = 'SET CHARSET "utf-8"';   
	mysql_query($in2);

	$polaczenie->query("INSERT INTO `newsy` (`idnewsa`, `tytul`, `autor`, `tresc`, `data`, `godzina`, `obrazek`) VALUES (NULL, '$tytul', 

'$autor', '$tresc', '$data', '$godzina', '$obrazek')");
	
	
echo<<<END
Wróć do <a href="spis_newsow.php">spisu newsów</a>.
END;

?>

 

Wszystko się łączy pięknie z bazą i dodaje do bazy. ALE.. Nie dodaje polskich znaków do bazy danych ani potem nie wyświetla polskich znaków na stronie. W bazie wszystko mam ustawione dobrze, bo jeżeli ręcznie w bazie dodam coś z polskimi znakami, to się one dodają i wyświetlają na stronie, więc błąd raczej na pewno musi być gdzieś w tym kodzie.. Ktoś pomoże?

1 odpowiedź

0 głosów
odpowiedź 21 stycznia 2016 przez Arkadiusz Waluk Ekspert (288,330 p.)

Ale że tak zapytam o co tu chodzi?

$polaczenie = @new mysqli($host, $user, $password, $database);
mysql_query("SET NAMES utf-8");
$in2 = 'SET CHARSET "utf-8"';   
mysql_query($in2);

Szkoda, że jeszcze PDO nie domieszałeś...

Po pierwsze nie używamy @ bo błędy należy zobaczyć i naprawić a nie ukryć.

Po drugie nie mieszamy mysqli_ i mysql_ (tego drugiego już się nie używa - w nowym PHP 7 zostało usunięte - więc tym bardziej).

Po trzecie nie mieszamy podejść - albo wszystko strukturalnie albo obiektowo.

Po czwarte w bazach zawsze spotykam zapis uft8 a nie utf-8 (chociaż nie jestem pewien czy z myślnikiem jest też dobrze czy nie).

I wreszcie po 5... Jeśli zdecydujesz się użyć mysqli_ podejściem obiektowym to wystarczy dać:

$polaczenie->set_charset("utf8");

Jeśli strukturalnie to oczywiście też się da: http://php.net/manual/en/mysqli.set-charset.php

Prawdopodobnie to pomoże.

Podobne pytania

0 głosów
1 odpowiedź 499 wizyt
0 głosów
1 odpowiedź 1,558 wizyt
0 głosów
1 odpowiedź 2,741 wizyt

92,675 zapytań

141,579 odpowiedzi

320,058 komentarzy

62,039 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...