BG Development



nobi Публикувана на: 25-08-2019, 22:07

Мнения: 6
Преглеждания: 913
Навсякъде уж ми е направено на UTF-8. И php файла е конвертиран под utf8 и в класа на базата данни съм задал да е utf8 и самата базаданни и таблиците всички са utf8 и продължава да излиза така , не мога да си го обесня. Възможно ли е да се случва когато имам чист php файл без html код в него ?

Едит: Оправих си проблема. Промених колацията на таблицата на utf8_general_ci (както преди си беше) зададох и InnoDB , отново промених чарсета в класа на базата данни и се оправи. Не знам как и защо но се оправи , а преди да направя това , всичко си беше същото. Съмнява ме че е заради интервала където задавам чарсета в класа на базата, но кой знае , истината е някъде там...
Благодаря ви за отговорите все пак!
  Форум: PHP/Perl/Python/ASP  ·  Преглед: #468667

nobi Публикувана на: 24-08-2019, 22:48

Мнения: 6
Преглеждания: 913
QUOTE (Gamma Goblin @ 24-08-2019, 20:27)
Само през пхпито ли ти е прецакан енкодинга ?

Да , само в phpmyadmin е така , навсякъде другаде излиза на български. Данните се импортват в обикновен php файл без html кодировка. За първи път ми се случва плюс това смених и колацията от ютф8 на латин1 и пак не става.
  Форум: PHP/Perl/Python/ASP  ·  Преглед: #468651

nobi Публикувана на: 24-08-2019, 20:13

Мнения: 6
Преглеждания: 913
Здравейте. Имам проблем с текста в базата данни. След като публикувам пост с формата си в базата данни не се показва на български а с такива символи " МоÑта първа новина "
Имам клас Database където съм задал чарсета да е UTF8 , цялата база е UTF8 както и таблиците и продължава да излизат така.
Ето го и самия клас Database

CODE
<?php
class Database {
   private $conn;

   private $dbhost = "localhost";
   private $dbuser = "root";
   private $dbpass = "";
   private $dbname = "ecms";
   private $charset = "utf8";
   private $options = [
   \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
   \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
   \PDO::ATTR_EMULATE_PREPARES   => false,
];

   public function dbConn() {
       try {

           $this->conn = new PDO(
               "mysql:host=".$this->dbhost.";dbname=".$this->dbname.";charset = ".$this->charset, $this->dbuser, $this->dbpass, $this->options
           );

       } catch(PDOException $e) {
           echo $e->getMessage();
       }

       return $this->conn;
   }
}
  Форум: PHP/Perl/Python/ASP  ·  Преглед: #468646

nobi Публикувана на: 18-08-2019, 18:27

Мнения: 6
Преглеждания: 903
QUOTE (Gamma Goblin @ 18-08-2019, 11:18)
Такива въпроси трябва да се пускат в SQL раздела, защото иначе рискуваш да не се видят. Аз например почти не че та ПХП под-форума.

В някои бази като PostgreSQL count() е много бавна операция защото прави full table scan и може да се окаже по-производително да си пазиш броя коментари в някоя таблица. За малък сайт, това е е бавно може ида не пречи де icon_smile.gif

Какво точно имаш в предвид под "отделна таблица" ? Аз имам таблица "коментари" където се записват коментарите и техните айдита , не е в таблица "новини" примерно.
  Форум: PHP/Perl/Python/ASP  ·  Преглед: #468292

nobi Публикувана на: 18-08-2019, 09:17

Мнения: 6
Преглеждания: 903
Оправих се и видях къде съм допуснал грешка.
Грешката ми е в заявката където преброявам нещо си.
Заявката трябва да изглежда по следния начин:
CODE
$query = "SELECT count(comment) AS total FROM comments WHERE nid=".$id."";

Обяснявам евентуално за тези които се натъкнат на този проблем..
count(comment) - преброяваме колко на брой са коментарите от таблицата comments КЪДЕТО nid = $id
//nid при мен е записаното в таблицата айди на новината в която е публикуван коментара а $id е айдито на самата новина.

И така,ако искаме да покажем колко на брой са коментарите за дадена новина , цялата заявка с PDO то трябва да изглежда така:

CODE
$query = "SELECT count(comment) AS total FROM comments WHERE nid = " .$id. "";
$stmt = $db->prepare($query);
$stmt->execute();
$num = $stmt->fetch(PDO::FETCH_ASSOC);
$total = $num['total'];

echo $total;


И така , благодаря на всички за отделеното време и помощта.
  Форум: PHP/Perl/Python/ASP  ·  Преглед: #468286

nobi Публикувана на: 17-08-2019, 20:28

Мнения: 6
Преглеждания: 903
QUOTE (TrustHavic @ 17-08-2019, 20:08)
Използвай само "Select count(*) as `broi` From..."

Опитах и това но не се получава. В най-добрия случай ми преброява всички.
  Форум: PHP/Perl/Python/ASP  ·  Преглед: #468283

nobi Публикувана на: 17-08-2019, 18:46

Мнения: 6
Преглеждания: 903
Здравейте. Натъкнах се на следния проблем. Имам база данни в която имам таблица "коментари", както имам и таблица "продукти".
Сяла на коментарите е този
CODE
CREATE TABLE `comments` (
 `id` int(11) NOT NULL,
/* nid е айди-то на новината*/
 `nid` int(11) NOT NULL,
 `c_title` varchar(70) NOT NULL,
 `c_author` varchar(50) NOT NULL,
 `comment` text NOT NULL,
 `dateAdded` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Опитах много начини но никой от тях не сработи както очаквах и исках. Искам да сметне броя на коментарите за всека една новина и да ги покажа. Как да стане това ?
Пробвах с rowCount(); fetch(); fetchAll(); PDO::FETCH_ASSOC; но нищо от тях не сработи изкарва ми числа които не отговарят на броя на коментарите или ми показва броя на всички.
Това е последното което пробвах
CODE
<?php
$query = "SELECT nid, COUNT(comment) FROM comments GROUP BY nid";
$stmt = $db->query($query);
$stmt->execute();
$num= $stmt->rowCount();
echo $num;

//Иначе пробвах и с другите посочени по-горе със същата зявка и с други.
  Форум: PHP/Perl/Python/ASP  ·  Преглед: #468278

New Posts  Отворена тема (има нови мнения)
No New Posts  Отворена тема (няма нови мнения)
Hot topic  Гореща тема (има нови мнения)
No new  Гореща тема (няма нови мнения)
Poll  Анкета (има нови гласували)
No new votes  Анкета (няма нови гласували)
Closed  Заключена тема
Moved  Преместена тема

Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0