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

Polskie znaki w PHP

Object Storage Arubacloud
0 głosów
245 wizyt
pytanie zadane 12 listopada 2019 w PHP przez kingkushlee Gaduła (3,960 p.)

Witam, mam bazę danych, gdzie wszystko jest kodowane w utf8_general_ci i taki kod PHP:


<?php

	require_once("database_config.php");
	require_once("request.class.php");

	$req = new Request($db_host, $db_user, $db_pass, $db_name);
	$query = "SELECT * FROM tabela ORDER BY data DESC";
	$req->executeUpdate("SET NAMES utf8");
	$req->executeUpdate("SET CHARACTER_SET utf8_general_ci");
	$result = $req->executeQuery($query);
	$black = true;

	for ($i = 0; $i <= $result->num_rows - 1; $i++) {
		$row = $result->fetch_assoc();
		$title = $row['tytul'];
		$id = $row['id'];
		$title = mb_substr($title, 0, 22) . ' <a href="#" class="link">...</a>';

		if ($black == true) {
			echo '<div class="col-12 bg-dark-hover">' . $title . 
			'<div class="float-right"><span class="border icons text-warning" panel-action="edit" panel-id="' . $id . '"><i class="icon-pencil"></i></span>
			<span class="border icons text-danger" panel-action="delete" panel-id="' . $id . '"><i class="icon-cancel"></i></span></div></div>';
			$black = false;
		}	

		else {
			echo '<div class="col-12 information-light">' . $title . 
			'<div class="float-right"><span class="border icons text-warning" panel-action="edit" panel-id="' . $id . '"><i class="icon-pencil"></i></span>
			<span class="border icons text-danger" panel-action="delete" panel-id="' . $id . '"><i class="icon-cancel"></i></span></div></div>';
			$black = true;
		}
	}

Polskie znaki zastępuje �. Ten plik jest ładowany ajaxem do strony HTML. Jak to naprawić?

1 odpowiedź

0 głosów
odpowiedź 12 listopada 2019 przez mati2762 Mądrala (5,510 p.)
w MySQLi jest $mysqli->set_charset("utf8") do ustawiania. nie wiem czego używasz do komunikacji z bazą
komentarz 12 listopada 2019 przez kingkushlee Gaduła (3,960 p.)

Własnej klasy

<?php

	//ini_set('display_errors', 0);

	class Request {

		private $connection;

		function __construct($host, $user, $pass, $name) {
			try {
				$this->connection = new mysqli($host, $user, $pass, $name);
				if ($this->connection -> connect_errno != 0) 
					throw new Exception($this->connection -> connect_errno);
			} catch (Exception $e) {
				echo $e;
			}
		}

		function executeQuery($query) {
			$this->connection->query('SET NAMES utf8');
			$this->connection->query('SET CHARACTER_SET utf8_unicode_ci');
			if ($result = $this->connection->query($query))
				return $result;
			else return NULL;
			$this->disconnect();
		}

		function executeUpdate($query) {
			$this->connection->query('SET NAMES utf8');
			$this->connection->query('SET CHARACTER_SET utf8_unicode_ci');
			if ($this->connection->query($query)) {
				return true;
			} else return false;
			$this->disconnect();
		}

		function getMinimalId($table) {
			$query = "SELECT id FROM " . $table;
			if ($result = $this->connection->query($query)) {
				$row = $result->fetch_assoc();
				return $row['id'];
			} else return 0;
			$this->disconnect();
		}

		function getLastId($table) {
			$query = "SELECT MAX(id) FROM " . $table;
			if ($result = $this->connection->query($query)) {
				$row = $result->fetch_assoc();
				return $row['MAX(id)'];
			} else return 0;
			$this->disconnect();
		}

		function getNextId($id, $table) {
			$found = false;
			$ids = $id;
			while ($found == false) {
				$ids++;
				$query = "SELECT id FROM " . $table . " WHERE id='$ids'";
				if ($result = $this->connection->query($query)) {
					if ($result->num_rows == 1) {
						$found = true;
						$row = $result->fetch_assoc();
						$foundid = $row['id'];
						$result->free_result();
						return $foundid;
					}
				}
			}

			return null;
		}

		function disconnect() {
			$this->connection->close();
		}

	}

 

komentarz 13 listopada 2019 przez mati2762 Mądrala (5,510 p.)
to w konstruktorze po poprawnym połączeniu ustaw

$connection->set_charset("utf8")
komentarz 13 listopada 2019 przez mati2762 Mądrala (5,510 p.)
Dlaczego zrywasz połączenie po zapytaniu?

nie będziesz mógł wykonać ponownie zapytania.

Powinieneś zrywać połączenie w destruktorze
komentarz 13 listopada 2019 przez kingkushlee Gaduła (3,960 p.)
EDIT: Polskie znaki raczej się ładują, tylko jak mam o taki fragment rekordu: "posługujące", to w resulcie widzę: "posługuj�".
komentarz 13 listopada 2019 przez mati2762 Mądrala (5,510 p.)
komentarz 13 listopada 2019 przez kingkushlee Gaduła (3,960 p.)
Dalej się nie pokazuje.

Podobne pytania

0 głosów
1 odpowiedź 805 wizyt
pytanie zadane 27 sierpnia 2020 w PHP przez Hansik Nowicjusz (170 p.)
0 głosów
1 odpowiedź 568 wizyt
pytanie zadane 4 stycznia 2020 w PHP przez MAXIM7 Obywatel (1,990 p.)
0 głosów
2 odpowiedzi 525 wizyt
pytanie zadane 16 września 2018 w PHP przez Akiz521 Początkujący (480 p.)

92,691 zapytań

141,603 odpowiedzi

320,103 komentarzy

62,051 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!

...