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

السؤال

نشر

السلام عليكم

المشكلة : الكود عباره عن تحديث كمية المنتج في الشوبنق كارت السعر يظهر بشكل نص لذلك لايمكنني ادخاله الى قاعدة البيانات  بستخدام php و mysql 

المطلوب : اريد تحويل كود الجافاسكربت الى php كي استطيع ادخال ال grand total  الى قاعدة البيانات  او اذا كان يوجد طريقة اخرى

 شكرا

كود php بالمختصر

<table>
<thead>
<th><h6>Price</h6></th>
<th><h6>quantity</h6></th>
<th><h6>total</h6></th>
<th><h6>grand total</h6></th>
</thead>
  
<tbody>
<td>$<?php echo $row['price']; ?><input type="hidden" class="iprice" value="<?php echo $row['price']; ?>"></td>
  
 <td><input type="number" min="1" max="10" name="quantity" class="iquantity" onchange="subTotal()" value="1">
</td> 
<td class="itotal"></td>
<td><h6 id="gtotal"></h6></td>
</tbody>
</table>

كود جافاسكربت

var gt=0;
 var iprice=document.getElementsByClassName('iprice');
 var iquantity=document.getElementsByClassName('iquantity');
 var itotal=document.getElementsByClassName('itotal');
var gtotal=document.getElementById('gtotal');

 function subTotal() {
   gt=0;
   for ( i = 0; i < iprice.length; i++) {

     itotal[i].innerText=(iprice[i].value)*(iquantity[i].value);
     gt=gt+(iprice[i].value)*(iquantity[i].value);
   }
   gtotal.innerText=gt;
 }
 subTotal();

 

Recommended Posts

  • 1
نشر

إن كود الجافاسكريبت يتم تنفيذه والتعامل معه من طرف المستخدم أي متصفح الويب، أما كود PHP فهو من طرف خادم الويب والذي بدوره يستقبل البيانات من المستخدم ويتعامل مع قاعدة البيانات.

ومع أن الكود لكل منهما موجود في نفس الملف الذي يقوم المبرمج بكتابته أحياناً لذلك لتوضيح الأمر يمكنك اعتبار أن كل من PHP و الجافاسكريبت لا يمكنهم الوصول إلى نفس المتغيرات بشكل مباشر، بل يتم ذلك من خلال مرحلتين:

  • إما عند تحميل الصفحة من الخادم، بحيث يتم إرسال قيم معيّنة من PHP إلى طرف المستخدم وبالتالي الوصول إليها من خلال الجافاسكريبت.
  • أو من خلال إرسال طلبات HTTP (GET, POST, PUT, DELETE) من طرف المستخدم (أي الجافاسكريبت) إلى خادم الويب PHP. والتي تكون أحياناً على هيئة نماذج forms وحقول إدخال أو باستخدام fetch,axios من الجافاسكريبت.

لذلك لا يمكنك بشكل مباشر الوصول إلى القيم الموضوعة بواجهة المستخدم أو تحويل كود جافاسكريبت نفسه إلى PHP بل يجب إرسال القيم المراد تخزينها في قاعدة البيانات إلى طرف الخادم وذلك يختلف تطبيقه في حال كنت تستعمل أطر عمل من طرف الخادم أو مكتبات أخرى والمكان الذي تقوم بحفظ بيانات السلة فيه (في بعض الأحيان ضمن الجلسة session أو التخزين المحلي في المتصفح Local Storage).

بتاريخ 4 ساعات قال ellylalla:

السعر يظهر بشكل نص لذلك لايمكنني ادخاله الى قاعدة البيانات

يوجد عدّة طرق لتحويل النص string إلى int ومنها:

$num = "30";
$int = (int)$num;

أو في حال كان الرقم من نمط double:
$num = (double) "10.12";

مثال عام للتعامل مع الجلسات عند التعامل مع بيانات السلة في PHP:

<?php

//POST عندما يقوم المستخدم بالضغط على زر إضافة إلى السلة يتم إرسال طلب

if (isset($_POST['product_id'], $_POST['quantity']) && is_numeric($_POST['product_id']) && is_numeric($_POST['quantity'])) {
    
    $product_id = (int)$_POST['product_id']; //الرقم المعرّف للمنتج الموجود في قاعدة البيانات
    $quantity = (int)$_POST['quantity']; // الكمية التي تم اختيارها من المنتج
    
    $stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
    $stmt->execute([$_POST['product_id']]); //جلب بيانات المنتج من قاعدة البيانات
    
    $product = $stmt->fetch(PDO::FETCH_ASSOC);
    
	//التحقق من أن كمية المنتج متاحة (اختياري)
    if ($product && $quantity > 0) {
        
        if (isset($_SESSION['cart']) && is_array($_SESSION['cart'])) {
            if (array_key_exists($product_id, $_SESSION['cart'])) {
                //في حال كان المنتج موجود مسبقاً في السلة
                $_SESSION['cart'][$product_id] += $quantity;
                $_SESSION['total'] = $product['price'] * $quantity; //حساب السعر
            } else {
                // إضافة منتج جديد للسلة في حال لم يكن موجوداً
                $_SESSION['cart'][$product_id] = $quantity;
                $_SESSION['total'] = $product['price'] * $quantity; //حساب السعر
            }
        } else {
            
            $_SESSION['cart'] = array($product_id => $quantity);
        }
    }
    
}

واعتبرنا في هذا المثال أنك تستخدم الجلسة نفسها بين الخادم ومتصفح الويب لحفظ الجلسة، ولكن بطريقة مشابهة يمكنك استخدام $_POST مثلاً في حال طلبات HTTP المباشرة أو إرسال نموذج form مباشر.

يمكنك أيضاً البحث أكثر عن طرق إرسال واستقبال البيانات بين جافاسكريبت وطرف الخادم PHP على الانترنت وتطبيق الطرق التي تلائم حاجتك والتقنيات التي تستخدمها في مشروعك.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...