لدي هذا الكود
<?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>
التعليقات