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

السؤال

نشر

لقد بحثت لبضعة أيام الآن، ولكني غير متأكد من كيفية التعامل مع المشكلة،  أردت حجز غرفة فندق واحدة أو أكثر (تبعًا لإدخال المستخدم) ولكنني عالق في كيفية القيام بذلك.

لدي الكود التالي (جزء من الكود خاص بالمشكلة):

<?php
$reservedrooms = [];

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    $reservedrooms = $_POST['reservedrooms'] ?? '';

    $sqlbookquery = "SELECT r.room_id, rs.price FROM room AS r INNER JOIN roomsize AS rs ON r.size_id = rs.size_id;";
    $statement1 = $pdo->query($sqlbookquery);
    $bookquery  = $statement1->fetchAll();

}
?>

تحتوي مصفوفة reservedrooms على room_id من خانة اختيار على صفحة البحث. لذا إذا أراد المستخدم حجز 3 غرف، فسيقوم بالتقاط 3 معرفات متطابقة. لقد اختبرت هذا وهو يعمل بشكل صحيح.

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

في المقارنة بين المصفوفتين، حاولت استخدام array_intersect ولكن حصلت على خطأ (ربما لأنني قارنت مصفوفتين لم تتناسبان)، أي مثلاً، المصفوفة reservedrooms تحتوي فقط على room_id، ولكن المصفوفة bookquery تحتوي على room_id و price.

تلك مجرد نظرية لدي،  هل هي مناسبة حتى؟

هناك العديد من وظائف المصفوفة الأخرى التي نظرت إليها ولكنني غير متأكد من أي واحدة يجب استخدامها. in_array، array_search، array_diff.

Recommended Posts

  • 0
نشر
//جلب البيانات الضرورية من قاعدة البيانات
$reservedrooms = $_POST['reservedrooms'] ?? [];

$roomIds = implode(',', array_map('intval', $reservedrooms));
$sqlbookquery = "SELECT r.room_id, rs.price FROM room AS r INNER JOIN roomsize AS rs ON r.size_id = rs.size_id WHERE r.room_id IN ($roomIds);";


//تنفيذ الاستعلام ومعالجة النتائج

$statement1 = $pdo->query($sqlbookquery);
$bookquery  = $statement1->fetchAll(PDO::FETCH_ASSOC);
//معالجة البيانات

$roomDetails = [];
foreach ($bookquery as $row) {
    $roomDetails[$row['room_id']] = $row['price'];
}
//حساب إجمالي التكلفة

$totalPrice = 0;
foreach ($reservedrooms as $roomId) {
    if (isset($roomDetails[$roomId])) {
        $totalPrice += $roomDetails[$roomId]; // أضف سعر الغرفة إلى الإجمالي
    }
}
$totalPrice *= $numberOfNights; // ضرب الإجمالي في عدد الليالي

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...