سلام وقت بخیر
من دارم سعی میکنم به پروژه 7todo تا جایی که میتونم امکانات جدید اضافه کنم که یکی از این موارد اینه که کاربر بتونه عکس مورد نظرش رو برای تصویر پروفایلش آپلود کنه.
من یک ستون به اسم image به جدول users دیتابیس اضافه کردم که مقدار پیش فرضش برای هر کاربر جدید که رجیستر میکنه لینک یک تصویر از اینترنت هست و اون تصویر بصورت پیش فرض برای کاربر نمایش داده میشه و مقدارش رو هم به کمک تابع getLoggedInUser که توی آموزش نوشته شد دریافت میکنم و توی src تگ img میذارم. این تگ img رو درون تگ a قرار دادم که کاربر رو به صفحه مدیریت پروفایلش هدایت میکنه و توی این صفحه هم فرمی برای آپلود عکس قرار داده شده.
عکس با موفقیت آپلود میشه و به پوشه ای که برای محل آپلود در نظر گرفتم هم منتقل میشه و با این تابع ستون image جدول users رو آپدیت میکنم تا به جای اون آدرس پیش فرض اسم تصویر آپلود شده توی این ستون قرار بگیره:
function upImage($imgName)
{
global $pdo;
$current_user_id = getCurrentUserId();
$sql = "UPDATE users
SET image = :image
WHERE id = $current_user_id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':image'=>$imgName]);
}
مشکل من از اینجا شروع میشه که تصویر جدید نمایش داده نمیشه. عکس با همون تابع getLoggedInUser گرفته میشه و حتی آدرس دهی src تگ img رو هم تغییر میدم ولی با اینکه مقدار فیلد image توی دیتایس آپدیت شده و تغییر کرده مقدار src تگ img رو که از بخش inspect چک میکنم و حتی var_dump میکنم میبینم که مقدار اون آدرسی که پیش فرض ست کرده بودم نمایش داده میشه و اصلا آدرس تصویر جدید رو نمیشناسه.
اسم تصویر اپلود شده رو به صورت دستی که وارد میکنم درست میشه و نمایش داده میشه اما از طریق متغیر اصلا مقدار آپدیت شده رو دریافت نمیکنه و حتی یکبار کد رو که تغییر دادم null برگردوند ولی در کل همون لینکی که از نت بصورت پیش فرض براش مشخص کردم رو ست میکنه.
کل فایلها رو اپلود کردم اون بخشی که متغیرش کار نمیده خط 39 فایل tpl-user.php موجود در پوشه tpl هست.
با تشکر