المحتوى

06‏/11‏/2011

مشكلة وحل في PHP وهو ظهور رسالة خطأ Warning: Cannot modify header information - headers already sent

بعد استخدامي للملفات بالترميز utf-8 لاحظت ظهور سالة خطأ:
Warning: Cannot modify header information - headers already sent
وبعد الفحص والتمحيص تبين لي أن دالتين هما سبب المشكلة : cookies و header بينما تختفي المشلكة إذا كنت تستخدم ANSI
الحل يكمن في التالي:
أن لا يكون هناك أي مدخلات html قبل هاتين الدالتين ولكننا غالبا مانحتاج ذلك لذا قم بوضع الدالة التالية قبل أب كود في الصفحة:

session_start();
وهذه الدالة في النهاية ,,,,,
session_end_flush();

كما يجب أن لا يكون هناك فراغ قبل علامة البدء


ظهرت بعد ذلك المسكلة مرة أخرى وكان الحل هو استخدام برنامج محرر نصوص آخر مثل EmEditor وتخزين الملف بصيغة:
utf-8 without BOM وهنا مدونة جيدة لتوضيح ذلك

أو هناك حل آخر وهو حذف الكود الخفي المضاف للملف باستخدام محرر هيكسا XVI32 وهي الرموز الأولى في بداية الملف وتستطيع الاستفادة من مقالة جيدة هنا.

عموما: توجهت للصفحات التي فيها الدالتين: cookies و header وحولت ترميزهما للـ utf-8 without BOM
فنجح الأمر ونظرا لكثرة استخدامي للدالة header فقمت باستبدالها بدالة meta الخاص بـ refrech


30‏/10‏/2011

المحاذاة ناحية اليمين , مشكلة وحل رياضي

السلام عليكم

المحاذاة ناحية اليمين واجهتني هذه المشكلة مرتين وكلا المرتين في الرسوميات , حينما أريد أن أقوم بمحاذات صورة ناحية اليمين ولكن احداثي رسم الصورة هو الركن العلوي الأيسر ؟؟؟

المشكلة ليست هنا ولكن المشكلة تكمن عندما يكون عرض الصورة غير محدد أي أنه يتغير باستمرار , مثلا عند عمل برنامج يستعرض صور متنوعة ولكن الصور تختلف في العرض !!!

لذا قمت بعمل دالة تقوم بحساب المسافات ,,,,,

والتطبيق كالتالي: يوجد في لغة الPHP مكتبة باسم GD للكتابة على الصور , وميزة هذه المكتبة هو دعمها للغة العربية , إلا أن المحاذاة فيها من ناحية اليسار لذا قمت بوضع الحل لذلك وسأشرحه بما يسر الله:

المطلوب هو حساب المسافة الفارغة التي تترك بين المحاذاة اليمنى وبين نهاية الكلمة , فإذا وجدنا هذه المسافة في وقت التشغيل فما علينا إلا إضافتها للمحاذاة اليسرى ونحصل على الاحداثي السيني الذي يحقق المحاذاة التي نريدها , أي أن ملخص طلبنا هو الإحداثي السيني الذي يمثل محاذاة فعليا "إن شاء الله تصل الفكرة" , رغم أني لم أجد طريقة لطرح الأمر ببساطة إلا هذه , لأن مثل هذه الأمور الدقيقة تحتاج لشرح صوتي وهذا ما لا أريد الخوض فيه , قد يكون خجلا أو شيء من هذا القبيل هههههههه.

المسافة المطلوبة للاحداثي السيني=المساحة الفارغة التي تترك Q مضافا إليها المحاذاة اليمنى L1
المساحة الفارغة التي تترك Q = المسافة بين المحاذاة اليمني والمحاذاة اليسرى J مطروحا منه المسافة التي تشغلها الكلمة S
Q=J-S

أولا: المسافة بين المحاذاة اليمني والمحاذاة اليسرى J =المحاذاة اليمنى L2 مطروحا منه المحاذاة اليسرى L1
J=L2-L1
ثانيا: المسافة التي تشغلها الكلمة S=المساحة التي يشغلها الحرف Sa مضروبا في عدد الأحرف في الكلمة Ni
S=Sa*Ni

وحيث أن: المساحة التي يشغلها الحرف Sa=المسافة بين المحاذاة اليمنى والمحاذاة اليسرى J مقسوما على عدد الأحرف الكلية التي يمكنها شغل المسافة بين المحاذتان "إن صح التعبير" Nmax
Sa=J/Nmax

وبالرجوع إلى: المسافة التي تشغلها الكلمة S=المساحة التي يشغلها الحرف Sa مضروبا في عدد الأحرف في الكلمة Ni

S=J/Nmax*Ni

وبالرجوع إلى:المسافة الفارغة التي تترك Q = المسافة بين المحاذاة اليمني والمحاذاة اليسرى مطروحا منه المسافة التي تشغلها الكلمة

Q=J-S

وبذلك تكون المسافة المطلوبة للاحداثي السيني X

X=L1+Q
X=L1+(J-S)
X=L1+(J-(J/Nmax*Ni))
X=L1+J(1-(1/Nmax*Ni))

وهذه هي المعادلة ,,,,,,,, تظهر هنا صعبة في صياغتها , ولكن في العمل أسهل من ذلك ,,,,,,
سأضع إن شاء الله صورة الورقة التي قمت فيها بتحليل الأمر ,,,,,,,, خلاصة القول: بإمكاننا وضعها برمجيا باستخدام PHP كالتالي:
$xx_l1=250;
$xx_l2=590;
$xx_j=($xx_l2-$xx_l1);
$xx_n=(strlen($text)-1)/2;
$xx_nmax=40;
$rt=$xx_l1+$xx_j*(1-($xx_n/$xx_nmax));

على اعتبار L1&L2&nmax ثوابت , والمتغير هو عرض الكلمة text والنتيجة هي الاحداثي السيني rt

أترككم مع المعادلة ,,,,,,,, في أمان الله

29‏/10‏/2011

استخدام الترميز UTF-8 في MYSQL باستخدام PHP

السلام عليكم

في المواقع التي صممتها بلغة PHP بقاعدة البيانات MYSQL , كنت أستخدم الترميز الافتراضي ولا أقوم بتعديل محتويات MYSQL من PhpMyAdmin بل كنت أكتفي بالتعديل من أوامر PHP فقط ,,,,,
ولكن دعتني الحاجة لذلك عندما حاولت تصدير محتوى أحد Tables إلى ملف Excel ولكن الترميز لا يدعم العربي ,,,,
وبذلك احتجت لتوحيد الترميز الذي أعمل عليه إلى UTF-8 , وبما أن كل مواقعي السابقة بغير هذا الترميز , فقد لخصت التعديلات التي قمت بها وأحببت مشاركتها في مدونتي , رغم ترددي عن ذلك في البداية لأنني عادة ما أدون البرامج التي أمضي فيها وقت كافي لتجربتها , ولكني سأغير أسلوبي فلعل أحد يستفيد من ذلك أو يعلق على ذلك ويبين لي طريقة أفضل فأستفيد أنا والزوار من ذلك ,,,,,

التعديلات التي قمت بها لاستخدام الترميز UTF-8 في MYSQL باستخدام PHP


أولا: بعد دالة الاتصال بقاعدة البيانات mysql_connect
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
mysql_query("set character_set_server='utf8'");
mysql_query("set names 'utf8'");

ثانيا: عند انشاء قاعدة البيانات
$result=mysql_query ("CREATE DATABASE ".DB_NAME." DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci");

ثالثا: عند انشاء جدول
$query = "create table ".DB_TABLE." (".$command_name.")"." ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci";

رابعا: في كل صفحة لا تنسى الترميز
meta http-equiv="Content-Type" content="text/html; charset= utf-8"
و
header( 'Content-Type: text/html; charset=UTF-8' );

أخيرا: لا تنسى تخزين كل ملف PHP بالترميز utf-8


27‏/01‏/2011

برنامج منبه النتائج

(خاص بطلبة كلية الهندسة جامعة طرابلس: خريف 2010-2011)

برنامج خاص بطلبة كلية الهندسة بجامعة طرابلس يمكنهم من الحصول على نتيجة موادهم و يقوم البرنامج بتنبيه صوتي في حال ظهرت مادة جديدة , كما أنه يسمح بتشغيل أي برنامج يختاره المستخدم في حال ظهرت نتيجة مادة جديدة

لتحميل البرنامج

17‏/01‏/2011

24‏/12‏/2010

برنامج رصيدي نسخة مشجعي نادي الإتحاد

السلام عليكم ,,, انتهيت من تجهيز نسخة جديدة من برنامج رصيدي خاصة بمشجعي نادي الإتحاد
للتحميل اضغط هنا , تم ايقاف العمل بهذه النسخة والاعتماد على الاصدار الكلاسيكي بدلا عنها

يقوم البرنامج بعرض القيمة المتبقية من الحصة الشهرية بالإضافة إلى الأيام المتبقية لنهاية الشهر للحصة الحالية.

برنامج رصيدي نسخة مشجعي نادي الأهلي طرابلس


السلام عليكم ,,, انتهيت من تجهيز نسخة جديدة من برنامج رصيدي خاصة بمشجعي نادي الأهلي طرابلس
للتحميل اضغط هنا , تم ايقاف العمل بهذه النسخة والاعتماد على الاصدار الكلاسيكي بدلا عنها


يقوم البرنامج بعرض القيمة المتبقية من الحصة الشهرية بالإضافة إلى الأيام المتبقية لنهاية الشهر للحصة الحالية.



19‏/12‏/2010

برنامج رصيدي ,,,, إصدار جديد


السلام عليكم , هذا هو الاصدار 6 من برنامج رصيدي: الذي يقوم بعرض القيمة المتبقية من الحصة الشهرية لمشتركي خدمتي ADSL و WiMAX بشركة LTT , للتحميل اضغط هنا , تم ايقاف العمل بهذه النسخة والاعتماد على الاصدار الكلاسيكي بدلا عنها
مميزات هذه الاصدارة:
أضفت بحمد الله ميزة جديدة لبرنامج رصيدي ألا وهي معرفة الأيام المتبقية على نفاذ مدة الشهر بالإضافة لميزتي التحميل التلقائي واليدوي ,Auto Update and
Manual Update



12‏/11‏/2010

تصميم موقع خاص بأسئلة الإمتحانات

السلام عليكم

آخر التطورات ,,,, قمت بإماطة اللثام عن الموقع الخاص بأسئلة الامتحانات لقسمي العزيز الذي درست فيه (قسم الحاسب الآلي بكلية الهندسة جامعة طرابلس) ,,,,

وفكرة الموقع تتلخص في اتاحة الفرصة لجميع طلبة القسم من رفع أسئلة الإمتحانات السابقة بالإضافة إلى الملفات الخاصة بالمادة من مذكرات وغيرها مع إمكانية التعليق عليها.
كل ذلك بصورة منظمة لكل مادة ولكل سيمستر دراسي ,,,, وإن لاقت الفكرة القبول فلعل الله أن ييسر لي إضافة أقسام أخرى أو كليات حتى !

اسم الموقع الذي اخترته هو نفس اسم المجلد الموجود في مصور التاغرفت بكلية الهندسة وهو مشروع صغير لجمع أسئلة الامتحانات لقسم الحاسب في مصور الكلية ليسهل على الطلبة الرجوع إليها ,,,, وقد كان اسمه: TH109 حيث TH تعني Test Haseb أما 1 فترمز للفصل الخريفي , أما 09 فترمز للسنة 2009 حيث كنا نضع رقم لكل سنة فمثلا خريف 2008 يرمز له TH108 أما ربيعي TH208 وهكذا...

وبسبب شهرت المجلد TH109 تم اعتماده كاسم للموقع الحالي:
http://www.th109.opencpp.net

30‏/10‏/2010

ينشر لأول مرة ...

السلام عليكم

سأصدر في القريب العاجل إن شاء الله , الجزء الثالث من كتابي (برمجة واجهة المستخدم) , ,وهو في الحقيقة جاهزا منذ صدور الجزء الثاني إلا آني آثرت عدم نشره لأضيف إليه مواضيع هامة كنت مهتما بإضافتها إلا أن ضيق الوقت وإنشغالي حال دون ذلك , وقد بدى لي الآن أن أنشره الآن عسى الله أن ينفع به ,,,ذ
وإن يسر الله لي فسألحقه بجزء آخر يتمم الفائدة ,,,,
وقد أرفقت المكتبات الفعلية التي صممتها للواجهة الرسومية ((لنظام التشغيل الجديد SBR)) الذي لازال تحت التطوير ,,,

الكتاب في الحقيقة لا يعالج كيفية برمجتي للمكتبات وإنما كيفية استخدامها ,,,,, وقد كان هذا صنيعي في كل الكتب السابقة: بأن أشرح طريقة استخدام المكتبات التي برمجتها وليس طريقة برمجتي لها ,,, لأن ذلك بحتاج لوقت طويل.

والمكتبات موجودة كاملة ومفتوحة المصدر حتى يطلع عليها طالب العلم ويستنبط منها الطريقة التي سلكتها في ذلك.

م. البراء
30-10-2010
طرابلس/ليبيا