🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ دانشجوی سون‌لرن
کار نکردن کد
استاد ماندیس بحرینی حل شده توسط استاد ماندیس بحرینی

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

سلام،

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

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

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

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

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

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

استاد ماندیس بحرینی ۲۱ خرداد ۱۴۰۴، ۰۸:۰۱
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');
?>
استاد ماندیس بحرینی ۲۱ خرداد ۱۴۰۴، ۱۶:۵۵