۵ دانشجوی سون‌لرن
کار نکردن کد
محسن موحد حل شده توسط محسن موحد

من کل موارد خواسته شده رو انجام دادم ولی شماره روی مرورگر نه زیاد میشه و نه کم و عدد بصورت ثابت همیشه هست میشه لطفاً راهنمایی کنید

سلام،

سوالتونو بیشتر توضیح بدید؟

بهترین پاسخ
محسن موحد ۲۱ خرداد ۱۴۰۴، ۰۷:۴۸

یعنی اینکه کل موارد خواسته شده در جلسه رو مو ب مو انجام دادم اما کد روی مرورگر وقتی میخوام عدد رو افزایش یا کاهش بدم تغییری نمیکنه و صفر باقی میمونه با اینکه صفحه رفریش میشه اما تغییری نمیکنه 

وعدد بجای اینکه وسط صفحه با رنگ آبی باشه، با رنگ مشکی در گوشه صفحه نشون داده میشه

نوید خزائی پور ۲۱ خرداد ۱۴۰۴، ۰۷:۵۴

کدتونو بذارید تا بررسی کنم.

محسن موحد ۲۱ خرداد ۱۴۰۴، ۰۸:۰۱
untitled-ew2gpyhb.jpg
نوید خزائی پور ۲۱ خرداد ۱۴۰۴، ۱۰:۳۰

مورد اول اینکه لاین 12 یک پرانتز اضافه داشت که باعث خطا میشد:

if (empty($_SESSION['counter']) == true)

مورد بعدی که عدد تغییر نمیکنه علتش اینه که داخل شرط گفتید مقدار هر کدوم برابر true هم باشه، یعنی لینک‌ها باید به شکل زیر نوشته بشه:

<a href="?increment=true">increment</a>
<a href="?decrement=true">decrement</a>

یا اینکه شرط  and $_GET['increment'] == true و  and $_GET['decrement'] == true رو حذف کنید.

ضمناً کار درست اینه که session رو در ابتدای صفحه قبل ازینکه تگ html ای نوشته بشه(یعنی خروجی تولید بشه بعنوان ریسپانس) بیاد. علتشم جلوتر متوجه خواهید شد.

<?php
session_start();
?>
<a href="?increment=true">increment</a>
<a href="?decrement=true">decrement</a>
<?php
function prt(string $text, string $color = 'green'):void {
    echo sprintf('<h1 style="color: %s">%s</h1>', $color, $text);
}
if (empty($_SESSION['counter']) == true) {
    $_SESSION['counter'] = 0;
}
if (isset($_GET['increment']) and $_GET['increment'] == true) {
    ++ $_SESSION['counter'];
}
if (isset($_GET['decrement']) and $_GET['decrement'] == true) {
    -- $_SESSION['counter'];
}
prt($_SESSION['counter'], 'blue');
?>
محسن موحد ۲۱ خرداد ۱۴۰۴، ۱۶:۵۵