PDA

View Full Version : سوال: مشکل در دریافت اعداد فارسی در فرم در سایت php



masoomenoroozi
پنج شنبه 05 فروردین 1395, 04:36 صبح
با سلام.
من در یکی از فرم های سایتم که با php نوشته شده شماره موبایل را از کاربر دریافت میکنم . وقتی کاربر موبایل خود را به صورت انگلیسی وارد کند مشکلی وجود ندارد و به درستی در دیتابیس ذخیره میشود . ولی وقتی که اعداد به صورت فارسی وارد میشوند به درستی در دیتابیس ذخیره نمیشوند . مثل : ۰۹۲۱۸�
این مشکل رو چطور میشه حل کرد؟

نوع فیلد موبایل رو در mysql به این شکل تعریف کردم : varchar(11) utf8_general_ci

منتظر پاسختون هستم .
با تشکر

mamad_za
پنج شنبه 05 فروردین 1395, 04:38 صبح
نوع فیلد موبایل رو در mysql به این شکل تعریف کردم : varchar(11) utf8_general_ci

utf8_unicode_ca
بزارید و موقع ارسال اطلاعات با utf 8 بفرستید.

masoomenoroozi
پنج شنبه 05 فروردین 1395, 04:41 صبح
نوع فیلد موبایل رو در mysql به این شکل تعریف کردم : varchar(11) utf8_general_ci

utf8_unicode_ca
بزارید و موقع ارسال اطلاعات با utf 8 بفرستید.

ینی چی با utf8 بفرستم؟

mamad_za
پنج شنبه 05 فروردین 1395, 04:43 صبح
function connect(){
try {
$conn = new PDO("mysql:host=localhost;dbname=srg", "root", "");
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$conn -> exec('SET NAMES utf8'); // METHOD #3
$conn -> exec('SET CHARACTER SET utf8'); // METHOD #4
return $conn;
}

masoomenoroozi
پنج شنبه 05 فروردین 1395, 04:51 صبح
function connect(){
try {
$conn = new PDO("mysql:host=localhost;dbname=srg", "root", "");
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$conn -> exec('SET NAMES utf8'); // METHOD #3
$conn -> exec('SET CHARACTER SET utf8'); // METHOD #4
return $conn;
}

من کد اتصال به بانک رو اینطور نوشتم :
function db_connect()
{
$result = mysql_connect("localhost", "root", "");
if (!$result) return false;
if (!mysql_select_db('mosaferi_reservation')) return false;
return $result;
}
با pdo کار نکردم
این کد رو چطور تغییر بدم که utf8 بشه؟
ممنونم از پاسخ هاتون

مهرداد سیف زاده
پنج شنبه 05 فروردین 1395, 04:57 صبح
بهتره که شماره تلفن‌ها رو همین جا از فارسی تبدیل به انگلیسی کنید. چون شاید در آبنده بخواید سرویس پیامکی راه اندازی کنید همچنین جستجو بر روی اعداد انگلیسی سریعتر و دقیق‌تر هست. به کمک تابع زیر میتونید عدد گرفته شده رو به انگلیسی تبدیل کنید. همچنین اگر عدد انگلیسی هم بدید کاری روش انجام نمیده


function tr_num($str,$mod='en'){
$num_a=array('0','1','2','3','4','5','6','7','8',' 9','.');
$key_a=array('۰','۱','۲','۳','۴','۵','۶',' ','۸','۹');
return($mod=='fa')?str_replace($num_a,$key_a,$str) :str_replace($key_a,$num_a,$str);
}


echo tr_num('۰۹۳۷۴۶۹۳۴۹۳');


https://github.com/seifzadeh/php-best-snippets/blob/master/translate-fa-number-to-english.php

masoomenoroozi
پنج شنبه 05 فروردین 1395, 05:56 صبح
بهتره که شماره تلفن‌ها رو همین جا از فارسی تبدیل به انگلیسی کنید. چون شاید در آبنده بخواید سرویس پیامکی راه اندازی کنید همچنین جستجو بر روی اعداد انگلیسی سریعتر و دقیق‌تر هست. به کمک تابع زیر میتونید عدد گرفته شده رو به انگلیسی تبدیل کنید. همچنین اگر عدد انگلیسی هم بدید کاری روش انجام نمیده


function tr_num($str,$mod='en'){
$num_a=array('0','1','2','3','4','5','6','7','8',' 9','.');
$key_a=array('۰','۱','۲','۳','۴','۵','۶',' ','۸','۹');
return($mod=='fa')?str_replace($num_a,$key_a,$str) :str_replace($key_a,$num_a,$str);
}


echo tr_num('۰۹۳۷۴۶۹۳۴۹۳');


https://github.com/seifzadeh/php-best-snippets/blob/master/translate-fa-number-to-english.php

ممنونم . مشکل حل شد