الحاسب الآلي · الصف الثاني الثانوي · الترم الأول
المعاملات والجمل الشرطية في لغة PHP
المعاملات والجمل الشرطية في PHP: المعاملات الحسابية ومعاملات المقارنة والمنطقية، وصور جملة if وelseif والصيغة المختصرة، وجملة switch وصيغها، مع أمثلة وتتبع للنواتج.
آخر تحديث: · كيف نراجع المحتوى
مقدمة
- الشعبة: مشترك (كل المسارات)
- الوحدة: الوحدة الثالثة: إنشاء صفحات موقع “قاموس مصطلحات الكمبيوتر المصور”
- الموضوع: الثاني
الموقع الذكي يتخذ قرارات: إذا ترك المستخدم خانة الاسم فارغة يعرض له رسالة، وإذا لم يجد نتيجة للبحث يخبره بذلك. هذه القرارات تُكتب بالمعاملات والجمل الشرطية.
أهداف التعلم
- أن تميز بين أنواع المعاملات (Operators) في لغة PHP.
- أن تشرح جملة الشرط
ifبصورها المختلفة. - أن تتعرف جملة
switchوصيغها. - أن توظف جملتي الشرط
ifوswitchفي حل المشكلات. - أن تستقبل بيانات النماذج وتتحقق من صحتها قبل استخدامها.
شرح الدرس
أولًا: المعاملات (Operators)
توجد ثلاثة أنواع من المعاملات في لغة PHP:
1. المعاملات الحسابية:
| المعامل | العملية | مثال | الناتج |
|---|---|---|---|
+ | الجمع | 2 + 3 | 5 |
- | الطرح | 6 - 4 | 2 |
* | الضرب | 5 * 2 | 10 |
/ | القسمة | 8 / 2 | 4 |
% | باقي القسمة | 10 % 3 | 1 |
ومعاملات حسابية أخرى خاصة بلغة PHP:
| المعامل | مثال | يعني |
|---|---|---|
+= | $x += 5 | $x = $x + 5 |
-= | $x -= 5 | $x = $x - 5 |
*= | $x *= 5 | $x = $x * 5 |
/= | $x /= 5 | $x = $x / 5 |
%= | $x %= 5 | $x = $x % 5 |
++ | $x++ | $x = $x + 1 |
-- | $x-- | $x = $x - 1 |
2. معاملات المقارنة:
| المعامل | المعنى |
|---|---|
== | يساوي (Equal) |
!= | لا يساوي (Not Equal) |
> | أكبر من (Greater Than) |
>= | أكبر من أو يساوي |
< | أصغر من (Less Than) |
<= | أصغر من أو يساوي |
3. المعاملات المنطقية (Logical Operators):
| المعامل | المعنى |
|---|---|
|| | أو (OR) |
&& | و (AND) |
! | ليس (NOT) |
| X | Y | X || Y | X && Y |
|---|---|---|---|
| True | True | True | True |
| True | False | True | False |
| False | True | True | False |
| False | False | False | False |
ثانيًا: جملة الشرط (IF Condition)
تضع شرطًا وتختبره: إذا كان الناتج صحيحًا نُفذ كود معين، وإذا لم يكن صحيحًا نُفذ كود آخر.
الصورة الأولى (if فقط):
<?php
$A = "First";
if ($A == "First") {
echo "أنت الأول";
}
?>
تُطبع العبارة فقط إذا تحقق الشرط. ولاحظ أن العلامة = في $A = "First"; معامل تخصيص، أما == داخل الشرط فهي معامل مقارنة (Equal).
الصورة الثانية (if … else) وهي الأكثر شيوعًا:
<?php
$A = "Second";
if ($A == "First") {
echo "أنت الأول";
} else {
echo "أنت الثاني";
}
?>
الشرط لم يتحقق، فيُنفذ الكود التالي لـ else ويُطبع «أنت الثاني».
الصورة الثالثة (if … elseif … else):
<?php
$X = 5;
if ($X < 0) {
echo "الرقم سالب";
} elseif ($X > 0) {
echo "الرقم موجب";
} else {
echo "الرقم يساوي صفر";
}
?>
لأن $X = 5 لم يتحقق الشرط الأول، وتحقق الشرط الثاني بعد elseif، فتُطبع «الرقم موجب».
الصيغة المختصرة (In Line If): (Expression) ? If-True : If-False;
<?php
$x = 1;
$y = ($x == 1) ? 'One' : 'Two';
print $y; // One
?>
إذا كانت قيمة $x تساوي 1 يُخزن “One” في $y، وإلا يُخزن “Two”؛ وتختصر هذه الصيغة جملة if ... else في سطر واحد بدلًا من استخدام الأقواس { }.
ثالثًا: جملة Switch
تختبر قيمة متغير واحد مقابل عدة احتمالات، وتنفذ الكود الخاص بالاحتمال المتحقق:
<?php
$x = 1;
switch ($x) {
case 1:
echo "واحد";
break;
case 2:
echo "اثنين";
break;
case 3:
echo "ثلاثة";
break;
default:
echo "لا يوجد";
break;
}
?>
- إذا كانت قيمة
$xتساوي 1 يُطبع «واحد»، وهكذا، وإذا لم تساوِ أي احتمال نُفذdefaultفيُطبع «لا يوجد». breakتُخرج من جملةswitchبعد تنفيذ الحالة، حتى لا تُنفذ الحالات التالية.- يذكر الكتاب إمكان استخدام الأمر
exit;في آخر حالةdefaultللخروج دون تنفيذ شيء؛ لكن انتبه إلى أنexitيوقف تنفيذ كود الصفحة كله، لا جملةswitchفقط.
صيغة أخرى: يمكن أن تشترك عدة حالات في كود واحد:
<?php
$a = 2;
switch ($a) {
case 1:
case 2:
case 3:
echo 'واحد أو اثنين أو ثلاث';
break;
default:
echo 'أرقام أخرى';
}
?>
وهي تكافئ الجملة: if ($a == 1 || $a == 2 || $a == 3) { echo 'واحد أو اثنين أو ثلاث'; } حيث || تعني OR.
للاستزادة (إثراء خارج الكتاب): النماذج والتحقق والبحث الآمن
طريقتا إرسال بيانات النموذج (ستدرسهما بالتفصيل في الفصل الدراسي الثاني):
- GET: ترسل البيانات ظاهرة في عنوان الصفحة (URL)، ومناسبة للبحث مثل
search.php?q=ذاكرة، ولا تُستخدم لكلمات السر. - POST: ترسل البيانات مخفية داخل الطلب، ومناسبة للإضافة والنماذج الطويلة والبيانات المهمة.
<?php
$q = $_GET["q"] ?? ""; // قيمة البحث أو نص فارغ
$term = trim($_POST["txt_term"] ?? "");
if ($term == "") {
echo "يجب إدخال اسم المصطلح";
} elseif (mb_strlen($term) > 50) {
echo "الاسم أطول من المسموح";
} else {
echo "تم استلام المصطلح: " . htmlspecialchars($term);
}
?>
- المعامل
??يعطي قيمة افتراضية إذا لم يُرسل الحقل. trimتحذف المسافات الزائدة من بداية النص ونهايته، وmb_strlenتحسب طول النص العربي بدقة.htmlspecialcharsتمنع تنفيذ أي كود ضار عند عرض النص.
مثال شرط مع عدد المصطلحات:
<?php
$count = 0;
if ($count > 0) {
echo "يوجد $count مصطلحًا";
} elseif ($count == 0) {
echo "لا توجد مصطلحات بعد";
} else {
echo "قيمة غير متوقعة";
}
?>
صفحة بحث آمنة search.php: نستخدم الاستعلام المُعد (prepare) بدل دمج ما يكتبه المستخدم في أمر SQL مباشرة، لحماية قاعدة البيانات من هجمات حقن SQL:
<?php
include("connection.php");
$q = trim($_GET["q"] ?? "");
if ($q == "") {
echo "<p>اكتب كلمة للبحث.</p>";
} else {
$stmt = mysqli_prepare($connect, "SELECT term FROM terms WHERE term LIKE ?");
$like = "%" . $q . "%";
mysqli_stmt_bind_param($stmt, "s", $like);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (mysqli_num_rows($result) == 0) {
echo "<p>لا توجد نتائج.</p>";
} else {
while ($row = mysqli_fetch_assoc($result)) {
echo "<p>" . htmlspecialchars($row["term"]) . "</p>";
}
}
}
?>
أمثلة وتطبيقات
برنامج تقدير الطالب باستخدام elseif:
<?php
$degree = 78;
if ($degree >= 85) {
echo "ممتاز";
} elseif ($degree >= 75) {
echo "جيد جدًا";
} elseif ($degree >= 65) {
echo "جيد";
} elseif ($degree >= 50) {
echo "مقبول";
} else {
echo "راسب";
}
?>
الناتج: «جيد جدًا»، لأن أول شرط يتحقق هو $degree >= 75.
تتبع: ما ناتج الكود $x = 10; $x += 5; $x++; echo $x % 4;؟ الحل: $x يصبح 15 ثم 16، و16 % 4 = 0، فيُطبع 0.
ملاحظات مهمة
- الفرق بين
=(تخصيص) و==(مقارنة) مصدر أخطاء شائع؛ فكتابةif ($a = 5)تخصص القيمة ولا تقارنها. - لا تنسَ
breakفي نهاية كل حالة فيswitch. - يوجد أيضًا المعامل
===الذي يقارن القيمة والنوع معًا، وهو إثراء خارج الكتاب.
المفاهيم الأساسية
- المعاملات الحسابية:
+ - * / %ومعها+= -= *= /= %= ++ --. - معاملات المقارنة:
== != > >= < <=. - المعاملات المنطقية:
||(أو)، و&&(و)، و!(ليس). - صور if:
if، وif ... else، وif ... elseif ... else، والصيغة المختصرة? :. - switch: تختبر متغيرًا واحدًا بعدة حالات
caseوحالةdefault، معbreakللخروج.
ملخص الدرس
في لغة PHP ثلاثة أنواع من المعاملات: حسابية مثل الجمع وباقي القسمة و+= و++، ومقارنة مثل == و!= و>، ومنطقية هي || و&& و!. وجملة if تختبر شرطًا فتنفذ كودًا إذا تحقق، ولها صور: if وحدها، وif ... else، وif ... elseif ... else، وصيغة مختصرة (شرط) ? قيمة1 : قيمة2. أما switch فتختبر قيمة متغير أمام عدة حالات وتنفذ الحالة المتحققة أو default، ويمكن أن تشترك عدة حالات في كود واحد بما يكافئ شرطًا مركبًا بـ ||.
أسئلة للتدريب
- اذكر أنواع المعاملات في PHP مع مثالين لكل نوع.
- ما قيمة
$xبعد تنفيذ:$x = 7; $x *= 2; $x--;؟ - أكمل جدول الحقيقة للمعاملين
||و&&. - ما الفرق بين
=و==في PHP؟ - اكتب كودًا يطبع «الرقم زوجي» أو «الرقم فردي» باستخدام
if ... elseوالمعامل%. - أعد كتابة الكود السابق باستخدام الصيغة المختصرة
? :. - اكتب جملة
switchتطبع اسم اليوم حسب رقمه من 1 إلى 3، وتطبع «رقم غير صحيح» فيما عدا ذلك. - اكتب جملة
ifتكافئ جملةswitchتتشارك فيها الحالات 1 و2 و3 في كود واحد.