PDA

View Full Version : یک مشکل با ای جکس و متد post



baradar
پنج شنبه 22 مهر 1389, 15:52 عصر
با سلام

من توسط ای جکس یک صفحه رو فراخوانی می کنم که برای ویرایش مشخصات یک فرد است
من برای اینکه اطلاعات یک فرد در اون صفحه لود بشه کدی رو که به هر شخص اختصاص داده شده رو از طریق ای جکس به اون صفحه ارسال می کنم و اونوقت اون کد به کوئری فرستاده می شود
حالا مشکل من اینجاست که کد من 5 رقمی است ووقتی که با جاوا می فرستم تعداد کاراکترش درست است ولی وقتی به صفحه php میرود 8 رقمی می شود و در کوئری جواب نمیدهاد من توابع حذف فاصله رو هم امتحان کردم ولی باز همون 8 رقمی میمونه لطفا بگویی چکار کنم تا تعداد کاراکتر همان 5 رقمی بماند

با تشکر

binyaft
پنج شنبه 22 مهر 1389, 16:31 عصر
کدی که با پی اچ پی مقدار رو دریافت میکنید بزارید

baradar
پنج شنبه 22 مهر 1389, 16:46 عصر
@ $id =$_POST['id'];

echo strlen($id); // چاپ تعدادکاراکتر که در اینجا 8 تاست ولی باید 5 تا باشد

require_once('config.php'); // مکان تنظیمات بانک و توابع مربوط به بانک

connect(); // تابع وصل شدن به دیتابیس

$query=view("select *from user where rahgiri='$id'"); // تابع فرخوانی از دیتابیسالبته ظاهر کد همه چیز درست است

binyaft
پنج شنبه 22 مهر 1389, 17:04 عصر
حتما اون چند تا کاراکتر فارسی هستن ؟؟؟
باید از mb_strlen استفاده کنید

baradar
پنج شنبه 22 مهر 1389, 17:11 عصر
با سلام
نه عدد هستند

در ضمن یک سوال مگر تابع mb_strlen فقط تعداد کاراکتر رو نشون نمیده !!
من می خوام فضای اضافی حذف بشه

binyaft
پنج شنبه 22 مهر 1389, 17:17 عصر
در ضمن یک سوال مگر تابع mb_strlen فقط تعداد کاراکتر رو نشون نمیده !!
چرا ولی مثل strlen با یونیکد مشکل نداره
فضای اضافی؟ میتونید با trim حلش کنید

baradar
پنج شنبه 22 مهر 1389, 17:58 عصر
فضای اضافی؟ میتونید با trim حلش کنید

من توابع زیر را بکاربردم ولی باز هم در توابع strlen و mb_strlen همان مقدار قبلی را نشان م دهد
ltrim
rtrim
trim
tr_replace (" ", "", $id)

البته در برنامه دیگری نیز این اتفاق می افتاد که به دلیل ثابت بودن طول متغیر آنرا با substr حل می کردم
ولی این دفعهچون طول متغیر تغییر پذیر است نمی توانم اینکار را بکنم

آیا راه حل ابتکاری به نظرتان میر سد تامن این را هم با substr برطرف کنم

خیلی ممنونم

binyaft
پنج شنبه 22 مهر 1389, 18:24 عصر
مشکلی نیست که ، با همون توابع باید حل بشه البته طبق نوشته شما فقط فضای خالی رو حذف میکنه

hamid_rezas
پنج شنبه 22 مهر 1389, 19:29 عصر
اون عددها چطور 8 رقمی میشه. میشه یک نمونه بزارید؟

اگر پشت عدد صفر میزاره با توجه به اینکه با بانک اطلاعاتی هم ارتباط دارید علت رو در طراحی ساختار بانک اطلاعاتی جستجو کنید. نه در کدهای PHP.

از urldecode هم غافل نشید.

ویرایش:
اصلا یه چیزی مگه کد رهگیری شما نگفتی که یک عدد هست. خوب پس چرا اون را بصورت رشته ای در بانک اطلاعاتی پرس و جو میکنی؟
دوماً اگر شما یک settype کنی و اون را بصورت مقدار عددی int در بیاری، عدد میشه و بعد اونو تو دیتابیس پرس و جو کن. اینطوری امنیت بانک اطلاعاتی هم بالا میره چون ظاهرا mysql_escape_string نکردی.

موفق باشی.

funpatogh
پنج شنبه 22 مهر 1389, 20:31 عصر
اگر امکان داره هم فایلی که توش آژاکس استفاده کردید هم فایل php رو بگزارید تا مشکلتون رو حل کنیم

baradar
پنج شنبه 22 مهر 1389, 21:12 عصر
با سلام
کد پی اچ پی را که در بالا گذاشتم اینهم از کد جی کوئری ای جکس استفاده شده



$(".edit_user").live('click',function(){

var idd=this.id
ajax_load("update_user.php","id=" + idd,function(msg){

$(".box_content").html(msg);

})

})
لطفا کمک کنید