☰ خطة العام · تكنولوجيا المعلومات والاتصالات (بالعربية)

المحوّل كصفحة ويب بلغة PHP

الأسبوع 7 · الوحدة ١ الموضوع الثالث: محوّل الأعداد كصفحة ويب بلغة PHP: النموذج وأدوات التحكم وكود PHP وعرض النتيجة · 3 دروس
2

PHP خلف الصفحة: isset ودوال التحويل الجاهزة

ICT Secondary 3 Term 1, Unit 1, Topic 3: pp. 37–50
الهدفاقرأ كتلة PHP في المحوّل: isset لكل زر والدوال الجاهزة الأربع للتحويل.
كلمات جديدة
كتلة ⁦PHP (PHP block)⁩ · كود بين ⁦<?php⁩ و?> ينفّذه الخادم قبل إرسال الصفحة⁦$_POST⁩ · قائمة القيم التي أرسلها النموذج، تُعرف باسم كل أداةisset · تسأل: هل القيمة موجودة؟ وهي صحيحة لاسم الزر إذا ضُغط عليه فقطecho · تضع قيمة في الصفحة
الشرح

يوجد كود PHP بين ⁦<?php⁩ و?>. ينفّذه الخادم قبل إرسال الصفحة، فلا يراه الزائر. وتصل قيم النموذج في ⁦$_POST⁩ بالأسماء التي أعطيناها: ⁦$_POST['number']⁩ هو النص المكتوب. وحين تُفتح الصفحة أول مرة لا يكون قد أُرسل شيء. وحين يُضغط زر يصل اسمه أيضًا، فيكون الشرط ⁦isset($_POST['btnBin'])⁩ صحيحًا إذا ضُغط ذلك الزر فقط، ولكل زر كتلة if خاصة به. وتقرأ الكتلة العدد المكتوب وتملأ أربعة متغيرات: النص المكتوب، والنتائج الثنائية والعشرية والسداسية عشرية. وتقوم بالتحويل أربع دوال جاهزة: bindec تقرأ نصًا ثنائيًا وتعطي عددًا، وdecbin تكتب عددًا بالثنائي، وhexdec تقرأ نصًا سداسيًا عشريًا، وdechex تكتب عددًا بالسداسي عشر. وليست بين هذه الدوال دالة تنتقل من الثنائي إلى السداسي عشر مباشرة، فتمر الصفحة بالعشري: bindec أولًا ثم dechex. وتكتب الدوال الجاهزة السداسي عشر بأحرف صغيرة.

الدالةتقرأتعطيمثال
bindecنصًا ثنائيًاعددًا⁦bindec("1101") = 13⁩
decbinعددًانصًا ثنائيًا⁦decbin(90) = 1011010⁩
hexdecنصًا سداسيًا عشريًاعددًا⁦hexdec("3C") = 60⁩
dechexعددًانصًا سداسيًا عشريًا بأحرف صغيرة⁦dechex(200) = c8⁩
أمثلة محلولة
Php
1<?php
2$_POST = ['btnBin' => 'Typed number is binary', 'number' => '1101'];   // pretend the form was sent
3$typed = "";
4$bin = "";
5$dec = "";
6$hex = "";
7
8if (isset($_POST['btnBin'])) {
9    $typed = $_POST['number'];
10    $dec = bindec($typed);
11    $bin = $typed;
12    $hex = dechex($dec);
13}
14echo "$bin $dec $hex";
Output
1101 13 d
كتلة الزر الثنائي وحده، والسطر الأول يتظاهر بأن النموذج أُرسل. كتب الزائر 1101 وضغط الزر الثنائي.
Php
1<?php
2$typed = "";
3$bin = "";
4$dec = "";
5$hex = "";
6
7if (isset($_POST['btnBin'])) {
8    $typed = $_POST['number'];
9    $dec = bindec($typed);
10    $bin = $typed;
11    $hex = dechex($dec);
12}
13if (isset($_POST['btnDec'])) {
14    $typed = $_POST['number'];
15    $dec = $typed;
16    $bin = decbin($dec);
17    $hex = dechex($dec);
18}
19if (isset($_POST['btnHex'])) {
20    $typed = $_POST['number'];
21    $dec = hexdec($typed);
22    $bin = decbin($dec);
23    $hex = $typed;
24}
25?>
كتلة PHP الكاملة للصفحة، وفيها كتلة if لكل زر. وفي كتلة الزر السداسي عشري تعرض الصفحة النص المكتوب نفسه نتيجةً سداسية عشرية.
الزرالمكتوبالثنائيالعشريالسداسي عشري
btnBin1101110113d
btnDec901011010905a
btnHex3C111100603C
ثلاث تجارب للصفحة في جدول. وفي الأخيرة تظهر النتيجة السداسية عشرية كما كُتبت بأحرف كبيرة، وتأتي النتيجة الثنائية من decbin.
نشاط الفصل

توقّع على الورق النتائج الثلاث حين يكتب الزائر 200 ويضغط الزر العشري، ثم حين يكتب B4 ويضغط الزر السداسي عشري. وتحقق من كل جواب بالتحويل العكسي.

تدرّب
1
ماذا يخبر الشرط ⁦isset($_POST['btnHex'])⁩ الصفحة؟
2
لماذا تستعمل الصفحة bindec ثم dechex لتحويل الثنائي إلى السداسي عشري؟
3
من أين يأخذ PHP النص المكتوب؟
4
ماذا تعطي ⁦dechex(75)⁩؟