اذهب إلى المحتوى

السؤال

نشر
<?php  
session_start();

if (isset($_SESSION['id']) && isset($_SESSION['fname'])) {



if(isset($_POST['fname']) && 
   isset($_POST['uname'])){

    include "../db_conn.php";

    $fname = $_POST['fname'];
    $uname = $_POST['uname'];
    $old_pp = $_POST['old_pp'];
    $id = $_SESSION['id'];

    if (empty($fname)) {
    	$em = "Full name is required";
    	header("Location: ../edit.php?error=$em");
	    exit;
    }else if(empty($uname)){
    	$em = "User name is required";
    	header("Location: ../edit.php?error=$em");
	    exit;
    }else {

      if (isset($_FILES['pp']['name']) AND !empty($_FILES['pp']['name'])) {
         
        
         $img_name = $_FILES['pp']['name'];
         $tmp_name = $_FILES['pp']['tmp_name'];
         $error = $_FILES['pp']['error'];
         
         if($error === 0){
            $img_ex = pathinfo($img_name, PATHINFO_EXTENSION);
            $img_ex_to_lc = strtolower($img_ex);

            $allowed_exs = array('jpg', 'jpeg', 'png');
            if(in_array($img_ex_to_lc, $allowed_exs)){
               $new_img_name = uniqid($uname, true).'.'.$img_ex_to_lc;
               $img_upload_path = '../upload/'.$new_img_name;
               // Delete old profile pic
               $old_pp_des = "../upload/$old_pp";
               if(unlink($old_pp_des)){
               	  // just deleted
               	  move_uploaded_file($tmp_name, $img_upload_path);
               }else {
                  // error or already deleted
               	  move_uploaded_file($tmp_name, $img_upload_path);
               }
               

               // update the Database
               $sql = "UPDATE users   SET fname=?, username=?, pp=?  WHERE id=?";
               $stmt = $conn->prepare($sql);
               $stmt->execute([$fname, $uname, $new_img_name, $id]);
               $_SESSION['fname'] = $fname;
               header("Location: ../edit.php?success=Your account has been updated successfully");
                exit;
            }else {
               $em = "You can't upload files of this type";
               header("Location: ../edit.php?error=$em&$data");
               exit;
            }
         }else {
            $em = "unknown error occurred!";
            header("Location: ../edit.php?error=$em&$data");
            exit;
         }

        
      }else {
       	$sql = "UPDATE users 
       	        SET fname=?, username=?
                WHERE id=?";
       	$stmt = $conn->prepare($sql);
       	$stmt->execute([$fname, $uname, $id]);

       	header("Location: ../edit.php?success=Your account has been updated successfully");
   	    exit;
      }
    }


}else {
	header("Location: ../edit.php?error=error");
	exit;
}


}else {
	header("Location: login.php");
	exit;
} 
<?php 
session_start();

if (isset($_SESSION['id']) && isset($_SESSION['fname'])) {
include "db_conn.php";
include 'php/User.php';

$user = getUserById($_SESSION['id'], $conn);

 ?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Edit Profile</title>
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
    <?php if ($user) { ?>

    <div class="d-flex justify-content-center align-items-center vh-100">
        
        <form class="shadow w-450 p-3"  action="php/edit.php" method="post"
              enctype="multipart/form-data">

            <h4 class="display-4  fs-1">Edit Profile</h4><br>
            <!-- error -->
            <?php if(isset($_GET['error'])){ ?>
            <div class="alert alert-danger" role="alert">
              <?php echo $_GET['error']; ?>
            </div>
            <?php } ?>
            
            <!-- success -->
            <?php if(isset($_GET['success'])){ ?>
            <div class="alert alert-success" role="alert">
              <?php echo $_GET['success']; ?>
            </div>
            <?php } ?>
          <div class="mb-3">
            <label class="form-label">Full Name</label>
            <input type="text" 
                   class="form-control"
                   name="fname"
                   value="<?php echo $user['fname']?>">
          </div>

          <div class="mb-3">
            <label class="form-label">User name</label>
            <input type="text" 
                   class="form-control"
                   name="uname"
                   value="<?php echo $user['username']?>">
          </div>

          <div class="mb-3">
            <label class="form-label">Profile Picture</label>
            <input type="file" 
                   class="form-control"
                   name="pp">
            <img src="upload/<?=$user['pp']?>"
                 class="rounded-circle"
                 style="width: 70px">
            <input type="text"
                   hidden="hidden" 
                   name="old_pp"
                   value="<?=$user['pp']?>" >
          </div>
          
          <button type="submit" class="btn btn-primary">Update</button>
          <a href="home.php" class="link-secondary">Home</a>
        </form>
    </div>
    <?php }else{ 
        header("Location: home.php");
        exit;

    } ?>
</body>
</html>

<?php }else {
	header("Location: login.php");
	exit;
} ?>

كيفكم يا اصدقاء فيه عندي هذا الكود ممكن حدا يفهمنا ويقدر يفصل بين كود تسجيل الدخول وكود تعديل البيانات بدي استخرج كود تعديل البيانات من هون ومش عارف وبدي اعرف اين اسماء الاعمدة يلي بدي اضعها في الكود 

Recommended Posts

  • 0
نشر

حسنا، لنبدأ بكود تسجيل الدخول أولا وهو الذي حسب تصفحي له ففي البداية فهو يقوم بالتحقق من وجود جلسة نشطة للمستخدم:

<?php  
session_start();

if (isset($_SESSION['id']) && isset($_SESSION['fname'])) {
    // باقي الكود هنا
} else {
    header("Location: login.php");
    exit;
}

أما الجزء الرئيسي لتعديل البيانات فيبدأ بعد التحقق من وجود البيانات المرسلة وهو كالتالي:

if(isset($_POST['fname']) && isset($_POST['uname'])){
    include "../db_conn.php";

    $fname = $_POST['fname'];
    $uname = $_POST['uname'];
    $old_pp = $_POST['old_pp'];
    $id = $_SESSION['id'];

    // التحقق من البيانات وتحديثها
    // ...
}

أما بخصوص أسماء الأعمدة المستخدمة في قاعدة البيانات فهي على النحو التالي:

  • id: معرف المستخدم
  • fname: الاسم الكامل
  • username: اسم المستخدم
  • pp: صورة الملف الشخصي

فالكود يقوم بتحديث هذه البيانات في جدول users في قاعدة البيانات أما بخصوص تحديث البيانات بدون تغيير الصورة فهذا الجزء هو الذي يقوم بهذا الأمر:

$sql = "UPDATE users 
        SET fname=?, username=?
        WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->execute([$fname, $uname, $id]);

أما الجزء الذي يقوم بتحديث البيانات مع تغيير الصورة:

$sql = "UPDATE users 
        SET fname=?, username=?, pp=?
        WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->execute([$fname, $uname, $new_img_name, $id]);

فالكود يتحقق من وجود ملف صورة جديد، ويقوم بتحميله وحذف الصورة القديمة إذا وجدت.

أما لاستخراج كود تعديل البيانات، يمكنك استخدام الجزء الذي يبدأ من:

if(isset($_POST['fname']) && isset($_POST['uname'])){

وينتهي قبل القوس } الأخير في الملف.

  • 0
نشر (معدل)
بتاريخ 10 دقائق مضت قال ياسر مسكين:

حسنا، لنبدأ بكود تسجيل الدخول أولا وهو الذي حسب تصفحي له ففي البداية فهو يقوم بالتحقق من وجود جلسة نشطة للمستخدم:

<?php  
session_start();

if (isset($_SESSION['id']) && isset($_SESSION['fname'])) {
    // باقي الكود هنا
} else {
    header("Location: login.php");
    exit;
}

أما الجزء الرئيسي لتعديل البيانات فيبدأ بعد التحقق من وجود البيانات المرسلة وهو كالتالي:

if(isset($_POST['fname']) && isset($_POST['uname'])){
    include "../db_conn.php";

    $fname = $_POST['fname'];
    $uname = $_POST['uname'];
    $old_pp = $_POST['old_pp'];
    $id = $_SESSION['id'];

    // التحقق من البيانات وتحديثها
    // ...
}

أما بخصوص أسماء الأعمدة المستخدمة في قاعدة البيانات فهي على النحو التالي:

  • id: معرف المستخدم
  • fname: الاسم الكامل
  • username: اسم المستخدم
  • pp: صورة الملف الشخصي

فالكود يقوم بتحديث هذه البيانات في جدول users في قاعدة البيانات أما بخصوص تحديث البيانات بدون تغيير الصورة فهذا الجزء هو الذي يقوم بهذا الأمر:

$sql = "UPDATE users 
        SET fname=?, username=?
        WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->execute([$fname, $uname, $id]);

أما الجزء الذي يقوم بتحديث البيانات مع تغيير الصورة:

$sql = "UPDATE users 
        SET fname=?, username=?, pp=?
        WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->execute([$fname, $uname, $new_img_name, $id]);

فالكود يتحقق من وجود ملف صورة جديد، ويقوم بتحميله وحذف الصورة القديمة إذا وجدت.

أما لاستخراج كود تعديل البيانات، يمكنك استخدام الجزء الذي يبدأ من:

if(isset($_POST['fname']) && isset($_POST['uname'])){

وينتهي قبل القوس } الأخير في الملف.

طيب لوفرضنا الصور موجودة في مجلد اسمه k4... كيف نقدر يجلب الصوره من الملف... و يجلب امتداد الصوره من قاعدة بيانات لغرض التعديل 

تم التعديل في بواسطة Omer Amad
  • 0
نشر
بتاريخ 1 دقيقة مضت قال Omer Amad:

طيب لوفرضنا الصور موجودة في مجلد اسمه k4... كيف راح نقدر يجلب الصوره من الملف... و يجلب امتداد الصوره من قاعدة بيانات لغرض التعديل 

بما أن الصور محفوظة في ذلك المجلد، فأكيد أنه يوجد عمود يحتوي على امتداد الصورة لذا لجلب الصورة من المجلد k4 يجب استخدام معرف المستخدم كاسم للملف ثم نقوم بجلب امتداد الصورة من قاعدة البيانات مع بناء مسار الصورة كالتالي: "k4/[user_id].[image_extension]"

ثم لعرض الصورة في نموذج التعديل، استخدم المسار الذي بنيته وعند التعديل، يمكنك استخدام هذه المعلومات للوصول إلى الصورة الحالية وتحديثها إذا لزم الأمر.

  • 0
نشر
بتاريخ 4 دقائق مضت قال ياسر مسكين:

بما أن الصور محفوظة في ذلك المجلد، فأكيد أنه يوجد عمود يحتوي على امتداد الصورة لذا لجلب الصورة من المجلد k4 يجب استخدام معرف المستخدم كاسم للملف ثم نقوم بجلب امتداد الصورة من قاعدة البيانات مع بناء مسار الصورة كالتالي: "k4/[user_id].[image_extension]"

ثم لعرض الصورة في نموذج التعديل، استخدم المسار الذي بنيته وعند التعديل، يمكنك استخدام هذه المعلومات للوصول إلى الصورة الحالية وتحديثها إذا لزم الأمر.

لو سمحت تكتبلي الكود ك مثال لهذه الفقرة 

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Omer Amad:

لو سمحت تكتبلي الكود ك مثال لهذه الفقرة 

بالطبع لا مشكلة، سأقدم نموذجا لكل جزئية بما يقابلها من شيفرة لتفهم أفضل ثم يمكنك ربط الأفكار بناء على مشروعك الخاص، أولا بالنسبة لاسترجاع معلومات المستخدم فهذه الدالة تسترجع معلومات المستخدم، بما في ذلك امتداد الصورة من قاعدة البيانات الذي يجب أن يكون مخزنا في إحدى الأعمدة في قاعدة البيانات فقد استخدمت image_extension هنا في المثال وهو عمود مفترض في جدول users في قاعدة البيانات أين يخزن امتداد ملف الصورة الخاص بكل مستخدم.

function getUserInfo($userId, $conn) {
    $sql = "SELECT id, username, image_extension FROM users WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$userId]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
}

بالنسبة لبناء مسار الصورة هنا نبني المسار باستخدام معرف المستخدم والامتداد المخزن في قاعدة البيانات كما قلنا سابقا كالتالي:

$imagePath = "k4/" . $userInfo['id'] . "." . $userInfo['image_extension'];

أما هذا النموذج فيعرض الصورة الحالية ويسمح بتحميل صورة جديدة بحيث يتحقق من وجود صورة جديدة مُحمّلة ويعالجها.

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {
    $userId = $_SESSION['user_id'];
    $currentExtension = $_POST['current_extension'];
    $newImage = $_FILES['new_image'];

    if ($newImage['error'] == 0) {
        $newExtension = pathinfo($newImage['name'], PATHINFO_EXTENSION);
        $newPath = "k4/" . $userId . "." . $newExtension;

        // حذف الصورة القديمة إذا كانت موجودة
        $oldPath = "k4/" . $userId . "." . $currentExtension;
        if (file_exists($oldPath)) {
            unlink($oldPath);
        }

        // حفظ الصورة الجديدة
        move_uploaded_file($newImage['tmp_name'], $newPath);

        // تحديث الامتداد في قاعدة البيانات
        $sql = "UPDATE users SET image_extension = ? WHERE id = ?";
        $stmt = $conn->prepare($sql);
        $stmt->execute([$newExtension, $userId]);

        echo "Profile picture updated successfully.";
    } else {
        echo "Error uploading new image.";
    }
}

ثم هنا نقوم بتحديث الصورة وقاعدة البيانات:

move_uploaded_file($newImage['tmp_name'], $newPath);
$sql = "UPDATE users SET image_extension = ? WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->execute([$newExtension, $userId]);
  • 0
نشر
بتاريخ 9 دقائق مضت قال ياسر مسكين:

بالطبع لا مشكلة، سأقدم نموذجا لكل جزئية بما يقابلها من شيفرة لتفهم أفضل ثم يمكنك ربط الأفكار بناء على مشروعك الخاص، أولا بالنسبة لاسترجاع معلومات المستخدم فهذه الدالة تسترجع معلومات المستخدم، بما في ذلك امتداد الصورة من قاعدة البيانات الذي يجب أن يكون مخزنا في إحدى الأعمدة في قاعدة البيانات فقد استخدمت image_extension هنا في المثال وهو عمود مفترض في جدول users في قاعدة البيانات أين يخزن امتداد ملف الصورة الخاص بكل مستخدم.

function getUserInfo($userId, $conn) {
    $sql = "SELECT id, username, image_extension FROM users WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$userId]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
}

بالنسبة لبناء مسار الصورة هنا نبني المسار باستخدام معرف المستخدم والامتداد المخزن في قاعدة البيانات كما قلنا سابقا كالتالي:

$imagePath = "k4/" . $userInfo['id'] . "." . $userInfo['image_extension'];

أما هذا النموذج فيعرض الصورة الحالية ويسمح بتحميل صورة جديدة بحيث يتحقق من وجود صورة جديدة مُحمّلة ويعالجها.

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {
    $userId = $_SESSION['user_id'];
    $currentExtension = $_POST['current_extension'];
    $newImage = $_FILES['new_image'];

    if ($newImage['error'] == 0) {
        $newExtension = pathinfo($newImage['name'], PATHINFO_EXTENSION);
        $newPath = "k4/" . $userId . "." . $newExtension;

        // حذف الصورة القديمة إذا كانت موجودة
        $oldPath = "k4/" . $userId . "." . $currentExtension;
        if (file_exists($oldPath)) {
            unlink($oldPath);
        }

        // حفظ الصورة الجديدة
        move_uploaded_file($newImage['tmp_name'], $newPath);

        // تحديث الامتداد في قاعدة البيانات
        $sql = "UPDATE users SET image_extension = ? WHERE id = ?";
        $stmt = $conn->prepare($sql);
        $stmt->execute([$newExtension, $userId]);

        echo "Profile picture updated successfully.";
    } else {
        echo "Error uploading new image.";
    }
}

ثم هنا نقوم بتحديث الصورة وقاعدة البيانات:

move_uploaded_file($newImage['tmp_name'], $newPath);
$sql = "UPDATE users SET image_extension = ? WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->execute([$newExtension, $userId]);

سيكون لديه صفحتين php.... صفحة updata.php وصفحة edit.php.... صح؟ 

بتاريخ 2 دقائق مضت قال Omer Amad:

سيكون لديه صفحتين php.... صفحة updata.php وصفحة edit.php.... صح؟ 

 

بتاريخ 10 دقائق مضت قال ياسر مسكين:

بالطبع لا مشكلة، سأقدم نموذجا لكل جزئية بما يقابلها من شيفرة لتفهم أفضل ثم يمكنك ربط الأفكار بناء على مشروعك الخاص، أولا بالنسبة لاسترجاع معلومات المستخدم فهذه الدالة تسترجع معلومات المستخدم، بما في ذلك امتداد الصورة من قاعدة البيانات الذي يجب أن يكون مخزنا في إحدى الأعمدة في قاعدة البيانات فقد استخدمت image_extension هنا في المثال وهو عمود مفترض في جدول users في قاعدة البيانات أين يخزن امتداد ملف الصورة الخاص بكل مستخدم.

function getUserInfo($userId, $conn) {
    $sql = "SELECT id, username, image_extension FROM users WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$userId]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
}

بالنسبة لبناء مسار الصورة هنا نبني المسار باستخدام معرف المستخدم والامتداد المخزن في قاعدة البيانات كما قلنا سابقا كالتالي:

$imagePath = "k4/" . $userInfo['id'] . "." . $userInfo['image_extension'];

أما هذا النموذج فيعرض الصورة الحالية ويسمح بتحميل صورة جديدة بحيث يتحقق من وجود صورة جديدة مُحمّلة ويعالجها.

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {
    $userId = $_SESSION['user_id'];
    $currentExtension = $_POST['current_extension'];
    $newImage = $_FILES['new_image'];

    if ($newImage['error'] == 0) {
        $newExtension = pathinfo($newImage['name'], PATHINFO_EXTENSION);
        $newPath = "k4/" . $userId . "." . $newExtension;

        // حذف الصورة القديمة إذا كانت موجودة
        $oldPath = "k4/" . $userId . "." . $currentExtension;
        if (file_exists($oldPath)) {
            unlink($oldPath);
        }

        // حفظ الصورة الجديدة
        move_uploaded_file($newImage['tmp_name'], $newPath);

        // تحديث الامتداد في قاعدة البيانات
        $sql = "UPDATE users SET image_extension = ? WHERE id = ?";
        $stmt = $conn->prepare($sql);
        $stmt->execute([$newExtension, $userId]);

        echo "Profile picture updated successfully.";
    } else {
        echo "Error uploading new image.";
    }
}

ثم هنا نقوم بتحديث الصورة وقاعدة البيانات:

move_uploaded_file($newImage['tmp_name'], $newPath);
$sql = "UPDATE users SET image_extension = ? WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->execute([$newExtension, $userId]);

لو كان لديه 3 اعمده فيها صور كيف سيكون اين اضع اسماء الاعمده 

  • 0
نشر
بتاريخ الآن قال ياسر مسكين:

صحيح جزء ملف التعديل مثلا يبدأ من هنا: 

<?php
// في ملف update_profile.php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {

واين ينتهي لو سمحت اين اضع ال form وال input  كيف ستكون اسماء الاعمده هي d1  /  d2 / d3

بتاريخ 3 دقائق مضت قال ياسر مسكين:

صحيح جزء ملف التعديل مثلا يبدأ من هنا: 

<?php
// في ملف update_profile.php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {

صفحة updet ماهو الكود الذي سيكون فيها 

صفحة ال edit ماهو الكود الذي سيكون فيها 

انا لديه بيانات نصية ايضا ليس فقط صور ارجو الشرح

  • 0
نشر
بتاريخ الآن قال Omer Amad:

واين ينتهي لو سمحت اين اضع ال form وال input  كيف ستكون اسماء الاعمده هي d1  /  d2 / d3

سأجمع لك الشيفرات لكن هذا مثال فقط وأرجو فهم الفكرة، لأن كل شخص يمكنه التعديل على هذا المفهوم بناء على احتياجاته الخاصة في مشروعه: هنا ملف Edit Profile:

<?php
session_start();

function getUserInfo($userId, $conn) {
    $sql = "SELECT id, username, image_extension FROM users WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$userId]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
}

$userId = $_SESSION['user_id'];
$userInfo = getUserInfo($userId, $conn);

$imagePath = "k4/" . $userInfo['id'] . "." . $userInfo['image_extension'];

// عرض نموذج التعديل
?>
<!DOCTYPE html>
<html>
<head>
    <title>Edit Profile</title>
</head>
<body>
    <h2>Edit Profile</h2>
    <form action="update_profile.php" method="post" enctype="multipart/form-data">
        <img src="<?php echo $imagePath; ?>" alt="Profile Picture" style="width: 100px;"><br>
        <input type="file" name="new_image" accept="image/*"><br>
        <input type="hidden" name="current_extension" value="<?php echo $userInfo['image_extension']; ?>">
        <button type="submit">Update Profile</button>
    </form>
</body>
</html>

أما الملف الآخر فهو لتحديث البروفايل وهو كالآتي:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {
    $userId = $_SESSION['user_id'];
    $currentExtension = $_POST['current_extension'];
    $newImage = $_FILES['new_image'];

    if ($newImage['error'] == 0) {
        $newExtension = pathinfo($newImage['name'], PATHINFO_EXTENSION);
        $newPath = "k4/" . $userId . "." . $newExtension;

        // حذف الصورة القديمة إذا كانت موجودة
        $oldPath = "k4/" . $userId . "." . $currentExtension;
        if (file_exists($oldPath)) {
            unlink($oldPath);
        }

        // حفظ الصورة الجديدة
        move_uploaded_file($newImage['tmp_name'], $newPath);

        // تحديث الامتداد في قاعدة البيانات
        $sql = "UPDATE users SET image_extension = ? WHERE id = ?";
        $stmt = $conn->prepare($sql);
        $stmt->execute([$newExtension, $userId]);

        echo "Profile picture updated successfully.";
    } else {
        echo "Error uploading new image.";
    }
}
?>
  • 0
نشر
بتاريخ 3 دقائق مضت قال ياسر مسكين:

سأجمع لك الشيفرات لكن هذا مثال فقط وأرجو فهم الفكرة، لأن كل شخص يمكنه التعديل على هذا المفهوم بناء على احتياجاته الخاصة في مشروعه: هنا ملف Edit Profile:

<?php
session_start();

function getUserInfo($userId, $conn) {
    $sql = "SELECT id, username, image_extension FROM users WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$userId]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
}

$userId = $_SESSION['user_id'];
$userInfo = getUserInfo($userId, $conn);

$imagePath = "k4/" . $userInfo['id'] . "." . $userInfo['image_extension'];

// عرض نموذج التعديل
?>
<!DOCTYPE html>
<html>
<head>
    <title>Edit Profile</title>
</head>
<body>
    <h2>Edit Profile</h2>
    <form action="update_profile.php" method="post" enctype="multipart/form-data">
        <img src="<?php echo $imagePath; ?>" alt="Profile Picture" style="width: 100px;"><br>
        <input type="file" name="new_image" accept="image/*"><br>
        <input type="hidden" name="current_extension" value="<?php echo $userInfo['image_extension']; ?>">
        <button type="submit">Update Profile</button>
    </form>
</body>
</html>

أما الملف الآخر فهو لتحديث البروفايل وهو كالآتي:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {
    $userId = $_SESSION['user_id'];
    $currentExtension = $_POST['current_extension'];
    $newImage = $_FILES['new_image'];

    if ($newImage['error'] == 0) {
        $newExtension = pathinfo($newImage['name'], PATHINFO_EXTENSION);
        $newPath = "k4/" . $userId . "." . $newExtension;

        // حذف الصورة القديمة إذا كانت موجودة
        $oldPath = "k4/" . $userId . "." . $currentExtension;
        if (file_exists($oldPath)) {
            unlink($oldPath);
        }

        // حفظ الصورة الجديدة
        move_uploaded_file($newImage['tmp_name'], $newPath);

        // تحديث الامتداد في قاعدة البيانات
        $sql = "UPDATE users SET image_extension = ? WHERE id = ?";
        $stmt = $conn->prepare($sql);
        $stmt->execute([$newExtension, $userId]);

        echo "Profile picture updated successfully.";
    } else {
        echo "Error uploading new image.";
    }
}
?>

فهمت طيب في مايخص الاعمدة الخاصة بالبيانات النصية ايضا اين يتم اضافتها في الكود اسماء الاعمده هي e1 /e2 /e3 /e4/ e5 /e6  اسم الجدول هو U7 الذي يحتوي على جميع البيانات النصية والصوريه

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...