لدي هذا الكود <?php session_start(); // بدء الجلسة // التحقق إذا كانت الجلسة تحتوي على بيانات المستخدم if (!isset($_SESSION['user_email']) && !isset($_COOKIE['user_email'])) { header('Location: register.php'); // إعادة التوجيه إذا لم تكن الجلسة أو ملفات تعريف الارتباط متوفرة exit(); } // استرجاع بيانات المستخدم $userEmail = isset($_SESSION['user_email']) ? $_SESSION['user_email'] : $_COOKIE['user_email']; $userUsername = isset($_SESSION['user_username']) ? $_SESSION['user_username'] : $_COOKIE['user_username']; $userPassword = isset($_SESSION['user_password']) ? $_SESSION['user_password'] : $_COOKIE['user_password']; $userDescription = isset($_SESSION['user_description']) ? $_SESSION['user_description'] : $_COOKIE['user_description']; $userProfilePicture = isset($_SESSION['user_profile_picture']) ? $_SESSION['user_profile_picture'] : $_COOKIE['user_profile_picture']; if ($userProfilePicture) { $userProfilePicture = base64_decode($userProfilePicture); } require 'db.php'; // الاتصال بقاعدة البيانات // استرجاع المنشورات الخاصة بالمستخدم مع بيانات صورة الملف الشخصي $stmt = $pdo->prepare(" SELECT posts.content, posts.image_urls, posts.created_at, users.username, users.profile_picture FROM posts JOIN users ON posts.user_id = users.id WHERE users.email = :email ORDER BY posts.created_at DESC "); $stmt->execute(['email' => $userEmail]); $posts = $stmt->fetchAll(); ?> <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>الملف الشخصي</title> </head> <body> <h1>الملف الشخصي</h1> <!-- عرض بيانات المستخدم --> <p><strong>البريد الإلكتروني:</strong> <input id="emailInput" type="text" value="<?= htmlspecialchars($userEmail) ?>" readonly></p> <p><strong>اسم المستخدم:</strong> <?= htmlspecialchars($userUsername) ?></p> <p><strong>الوصف:</strong> <?= nl2br(htmlspecialchars($userDescription)) ?></p> <!-- عرض صورة الملف الشخصي --> <?php if ($userProfilePicture): ?> <img src="data:image/jpeg;base64,<?= base64_encode($userProfilePicture) ?>" alt="صورة الملف الشخصي" style="width: 100px; height: 100px; border-radius: 50%;"> <?php endif; ?> <!-- نموذج نشر منشور --> <h2>نشر منشور جديد</h2> <form method="POST" action="profile.php"> <textarea name="content" placeholder="اكتب منشورك هنا..." required></textarea><br> <!-- حاوية روابط الصور --> <div id="imageFieldsContainer"> <input type="url" name="image_urls[]" placeholder="رابط صورة (اختياري)" style="width: 100%;"><br> </div> <!-- زر لإضافة رابط صورة جديد --> <button type="button" id="addImageFieldButton" onclick="addImageField()">إضافة صورة</button><br><br> <button type="submit" name="submit_post">نشر المنشور</button> </form> <script> // دالة لإضافة حقل رابط صورة جديد function addImageField() { var container = document.getElementById('imageFieldsContainer'); var inputField = document.createElement('input'); inputField.type = 'url'; inputField.name = 'image_urls[]'; inputField.placeholder = 'رابط صورة (اختياري)'; inputField.style.width = '100%'; container.appendChild(inputField); container.appendChild(document.createElement('br')); // إضافة سطر جديد بعد الحقل } </script> <?php // إضافة منشور جديد if (isset($_POST['submit_post'])) { $content = $_POST['content']; // جمع روابط الصور (إذا كانت موجودة) $imageUrls = !empty($_POST['image_urls']) ? array_filter($_POST['image_urls']) : []; // تحويل روابط الصور إلى JSON $imageUrlsJson = $imageUrls ? json_encode($imageUrls) : null; try { $stmt = $pdo->prepare("INSERT INTO posts (user_id, content, image_urls) VALUES ((SELECT id FROM users WHERE email = :email), :content, :image_urls)"); $stmt->execute(['email' => $userEmail, 'content' => $content, 'image_urls' => $imageUrlsJson]); // إعادة تحميل الصفحة header("Location: profile.php"); exit(); } catch (PDOException $e) { echo "حدث خطأ: " . $e->getMessage(); } } ?> <!-- عرض المنشورات الخاصة بالمستخدم --> <h2>منشوراتك</h2> <?php if (count($posts) > 0): ?> <ul> <?php foreach ($posts as $post): ?> <li style="margin-bottom: 20px; border-bottom: 1px solid #ccc; padding-bottom: 10px;"> <!-- صورة الناشر --> <?php if ($post['profile_picture']): ?> <img src="data:image/jpeg;base64,<?= base64_encode($post['profile_picture']) ?>" alt="صورة الملف الشخصي" style="width: 50px; height: 50px; border-radius: 50%; display: inline-block;"> <?php else: ?> <img src="default-profile.png" alt="صورة افتراضية" style="width: 50px; height: 50px; border-radius: 50%; display: inline-block;"> <?php endif; ?> <!-- اسم المستخدم --> <span style="margin-left: 10px; font-weight: bold;"><?= htmlspecialchars($post['username']) ?></span> <!-- محتوى المنشور --> <p style="margin-left: 60px;"><?= nl2br(htmlspecialchars($post['content'])) ?></p> <!-- صور المنشور --> <?php $imageUrls = json_decode($post['image_urls'], true); if ($imageUrls): ?> <div style="margin-left: 60px;"> <?php foreach ($imageUrls as $imageUrl): ?> <img src="<?= htmlspecialchars($imageUrl) ?>" alt="صورة المنشور" style="max-width: 100%; height: auto; margin-bottom: 10px;"> <?php endforeach; ?> </div> <?php endif; ?> <!-- وقت النشر --> <small style="margin-left: 60px; color: #666;">تم النشر في: <?= $post['created_at'] ?></small> </li> <?php endforeach; ?> </ul> <?php else: ?> <p>لا توجد منشورات بعد.</p> <?php endif; ?> </body> </html>
مع
اريد دمج الكود السابق مع هذا بحيث يتم اضافة روابط الصور مباشزة في حقلها في الكود الاول <form id="upload-form" enctype="multipart/form-data"> <input type="file" name="file" id="file" accept="image/*,video/*" required> <br><br> <button type="submit">رفع</button> </form> <div id="progress-bar"> <div></div> </div> <div id="result"></div> <h3>روابط الصور المضافة:</h3> <div id="imageFieldsContainer"></div> <script> // دالة لإضافة حقل رابط صورة جديد function addImageField(url = '') { var container = document.getElementById('imageFieldsContainer'); var inputField = document.createElement('input'); inputField.type = 'url'; inputField.name = 'image_urls[]'; inputField.placeholder = 'رابط صورة (اختياري)'; inputField.style.width = '100%'; // إذا كان الرابط موجودًا، قم بضبط القيمة وجعل الحقل للقراءة فقط if (url) { inputField.value = url; inputField.readOnly = true; } container.appendChild(inputField); container.appendChild(document.createElement('br')); // إضافة سطر جديد بعد الحقل } document.getElementById('upload-form').addEventListener('submit', function(event) { event.preventDefault(); var fileInput = document.getElementById('file'); var file = fileInput.files[0]; var formData = new FormData(); formData.append('file', file); var xhr = new XMLHttpRequest(); xhr.open('POST', 'upload.php', true); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { var percentComplete = (e.loaded / e.total) * 100; document.querySelector('#progress-bar div').style.width = percentComplete + '%'; document.querySelector('#progress-bar div').textContent = Math.round(percentComplete) + '%'; } }; xhr.onload = function() { if (xhr.status == 200) { var response = JSON.parse(xhr.responseText); var resultDiv = document.getElementById('result'); if (response.success) { resultDiv.innerHTML = `<p>تم رفع الملف بنجاح. يمكنك الوصول إليه عبر الرابط التالي:</p>`; resultDiv.innerHTML += `<a href="${response.url}" target="_blank">${response.url}</a>`; // إضافة الرابط إلى حقل الصور تلقائيًا addImageField(response.url); } else { resultDiv.textContent = 'حدث خطأ أثناء رفع الملف.'; } } else { alert('حدث خطأ أثناء محاولة رفع الملف.'); } }; xhr.send(formData); }); </script>
التعليقات