-
المساهمات
276 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد المصري12
-
المهمة التي أنا بصددها مركبة و شديدة التعقيد أولا شرح الفكرة بشكل عام : انا اقوم بعمل موديول مخازن متقدم يعمل على بيئة dolibarr erp و يستخدم هذا الموديول مصنع يعمل في مجال تصنيع القماش حيث يقوم العميل بتسليم الغزل إلى المصنع ثم يقوم المصنع بخدمة التصنيع و تحويل الغزل إلى قماش و إعادة تسليمه للعميل مرة أخرى و تتم هذه العملية عبر موديول اسمه أوامر التصنيع ، و يحتوي على اسم القماش (المنتج التام) و الغزل المطلوب لانتاج هذا النوع من القماش (المواد الخام ) ما أقوم بفعله الآن هو إعداد صفحة تسمى رصيد العميل الغرض منها هو معرفة المواد الخام التي قام العميل بتوريدها للمصنع و معرفة القماش (المنتج التام الذي قام المصنع بتسليمه للعميل) و يقوم بحساب الاستهلاكات و المرتجعات (و هذا سنتطرق إليه لاحقاً) *المنطق البرمجي* 1- الجدول الاساسي الذي سأقوم بجلب البيانات منه هو جدول الحركات المخزنية و اسمه stock_mouvement 2- الجدول الذي من خلاله سأقوم باستدعاء اسم المنتج سواء كان منتج تام او مواد خام هو product 3- كيف نقوم بتمييز المادة الخام من المنتج التام ؟ نقوم بذلك من خلال عمود finished في جدول product حيث يرمز رقم 3 الى الغزول(المواد الخام) و يرمز الرقم 4 إلى المنتج التام (القماش) 4- جدول c_product_nature اقوم من خلاله بإستدعاء مسمى نوع المنتج و ذلك للمعلومات فقط ملحوظات : هناك عمليات كثيرة تحدث في جدول stock_mouvement منها استلام مواد خام و مرتجعات و نقل داخلي و لكي اقوم بتمييز العمليات التي أحتاجها هناك حقل يسمى type_mouvement يحيث ترمز القيمة 100 إلى المواد الخام التي تم استلامها و هي دائما قيمة موجبة و القيمة 200 إلى مرتجع المواد الخام و قطعا هي قيمة سالبة و القيمة 300 ترمز لحركة استهلاك مواد خام و هي قطعا قيمة سالبة و القيمة 500 ترمز الى إضافة منتج تام تم تصنيعه و بالطبع هي قيمة موجبة و القيمة 600 ترمز لحركة تسليم المنتج التام إلى العميل و هي قيمة سالبة أما القيمة 700 فهي ترمز لحركة مرتجع المنتج التام من العميل إلى المصنع و هي حركة إضافة ذات قيمة موجبة و الآن نتطرق إلى الأمور البرمجية الكود الحالي كاملا if (!empty($_POST['sCustomer'])) { $customerId = GETPOST('sCustomer', 'alpha'); $data = array(); // Retrieve the thread types without duplicates //$sql = "SELECT DISTINCT itemName a FROM ".MAIN_DB_PREFIX."reyadastocks a JOIN product b ON a.itemName = b.rowid WHERE a.sCustomer = '".$customerId."'"; $sql = "SELECT a.fk_product as ProductID,b.finished as typeID, b.label AS itemLabel, c.label as itemType, MAX(a.rowid) as rowid FROM ".MAIN_DB_PREFIX."stock_mouvement a JOIN ".MAIN_DB_PREFIX."product b ON a.fk_product = b.rowid JOIN ".MAIN_DB_PREFIX."c_product_nature c ON b.finished = c.rowid WHERE (a.type_mouvement = '100' OR a.type_mouvement = '500') AND a.fk_soc = '".$customerId."' GROUP BY a.fk_product, c.label ORDER BY MAX(a.rowid) ASC"; $resql = $reyadastocks->db->query($sql); $rawMaterials = array(); $finishedGoods = array(); while ($obj = $reyadastocks->db->fetch_object($resql)) { $ProductID = $obj->ProductID; // Product ID $itemLabel = $obj->itemLabel; // Product Label $itemType = $obj->itemType; // Product Type lABEL $itemTypeID = $obj->typeID; //Product Type ID $data[] = array( 'type' => $itemLabel, 'itemType' => $itemType, 'received' => $received, ); } // Send the data back to the client echo json_encode(array('data' => $data)); } $sql = "SELECT a.fk_product as ProductID,b.finished as typeID, b.label AS itemLabel, c.label as itemType, MAX(a.rowid) as rowid FROM ".MAIN_DB_PREFIX."stock_mouvement a JOIN ".MAIN_DB_PREFIX."product b ON a.fk_product = b.rowid JOIN ".MAIN_DB_PREFIX."c_product_nature c ON b.finished = c.rowid WHERE (a.type_mouvement = '100' OR a.type_mouvement = '500') AND a.fk_soc = '".$customerId."' GROUP BY a.fk_product, c.label ORDER BY MAX(a.rowid) ASC"; الإستعلام السابق من خلاله أحصل على الحركات المخزنية ذات type_mouvement = '100' و التي ترمز إلى المواد الخام التي تم استلامها و رقم 500 و هو المنتج التام الذي تم تصنيعه بالفعل $resql = $reyadastocks->db->query($sql); while ($obj = $reyadastocks->db->fetch_object($resql)) { $ProductID = $obj->ProductID; // Product ID $itemLabel = $obj->itemLabel; // Product Label $itemType = $obj->itemType; // Product Type lABEL $itemTypeID = $obj->typeID; //Product Type ID } هذا النتائج تحتوي على بيانات بشكل عام لكنها غير مشروطة بشرط هام جدا جدا قد يكون هناك في تلك النتائج منتج تام (قماش) و ليس فيها مواد خام ضرورية لانتاج هذا القماش و هذا يحسب رصيدا سالبا على العميل من المفترض ان اطالبة به لذا فمن الضروري جدا ان تتم عملية فحص للنتائج للتأكد من وجود مواد خام لانتاج هذا المنتج الشرط : ان يكون في النتائج منتج تام itemTypeID = 4 يقوم النظام بعملية فحص من خلال جدول اسمه mrp_production عن مطابقة حقل fk_product بمعرف المنتج ProductID الذي قيمة itemTypeID هي 4 ثم إحضار رقم أمر التصنيع الخاص به و هو الرقم الموجود في حقل fk_mo و لنفترض انه 1 الان اريد ان احضر اسماء المواد الخام المستخدمة في انتاج هذا المنتج أقوم بالبحث في نفس الجدول مرة اخرى عن جميع بقيمة fk_mo و التي احضرناها للتو و فرضنا انها 1 لكن بشرط ان تكون قيمة حقل origin_type هي 'bomline' ثم نقوم بفحص ناتج fk_product و الذي سيكون هو نفسه ارقام المواد الخام المستخدمه لانتاج هذا القماش و مقارنته مع نتائج الاستعلام الأول عندي حالتين : عندما تتم المقارنة نجد أن النتائج الوادرة من الاستعلام الأول الاساسي تحتوي بالفعل على ارقام مطابقة للاستعلام الثاني و هنا لن نقوم باي شئ ، فقط سنقوم بجلب البيانات من الاستعلام الأول بشكل طبيعي (يشمل المواد الخام و المنتج التام ان وجد ) الحالة التانية : عندما قارنت وجدت بالاستعلام الاول مواد خام لكنها ليست تابعه لهذا المنتج التام يبقى من الاستعلام الأول هاجيب كل البيانات حتى لو مواد خام غير تابعه و أيضا بيانات المنتج التام ثم اقوم من الاستعلام الثاني باضافة المواد الخام التي تستخدم في انتاج هذا المنتج أعملها ازااااي فضلا
-
سلام عليكم مشكلة هاتجنني صراحة if (qINkg >= sCustomercredit){ Swal.fire( <?php echo json_encode($langs->trans('error')); ?>, <?php echo json_encode($langs->trans('invalidReturn1')); ?>, 'error' ) event.preventDefault(); // Prevent form submission return false; } else { Swal.fire( <?php echo json_encode($langs->trans('successReturn')); ?>, 'success' ) return true; } متغير qINKg ( الكمية بالكيلوجرام) لو كانت أكبر من رصيد العميل بالمخزن sCustomercredit المفروض يديني رسالة خطأ كالتالي لاحظوا بقا قيمة الكمية بالكيلوجرام ، هتلاقيها اصغر من رصيد العميل ، يعني المفروض يقبل المدخلات و رغم كده بيرفض السكريت كاملا <script type="text/javascript"> jQuery(document).ready(function() { // Store the initial value of targetWareHouse let initialTargetWareHouseValue = $(".targetWareHouseField").val(); // When the form is submitted $("form.card_reyadastocks").submit(function(event) { // Get the selected value of the "sCustomer" field let warehouse = $(".targetWareHouseField").val(); let customer = $(".sCustomerField").val(); let select_product = $(".select_product").val(); let credit = $(".credit").val(); let ItemInSelectedWareHouse = $(".ItemInSelectedWareHouse").val(); let sCustomercredit = $(".sCustomercredit").val(); let qINkg = $(".qINkg").val(); console.log(qINkg); // console.log(customer); // console.log(select_product); if (select_product > 0) { // Check if the selected value is greater than zero (meaning a valid product has been selected) if (warehouse > 0) { // Check if the selected value for the customer is also greater than zero if (customer > 0) { if (credit <= 0){ // Both fields are valid; the form will be submitted Swal.fire( <?php echo json_encode($langs->trans('error')); ?>, <?php echo json_encode($langs->trans('noEnoughItemeCredit')); ?>, 'error' ) event.preventDefault(); // Prevent form submission return false; } else if (ItemInSelectedWareHouse <= 0 ){ Swal.fire( <?php echo json_encode($langs->trans('error')); ?>, <?php echo json_encode($langs->trans('noEnoughwareHouseCredit')); ?>, 'error' ) event.preventDefault(); // Prevent form submission return false; } else if(sCustomercredit <= 0){ Swal.fire( <?php echo json_encode($langs->trans('error')); ?>, <?php echo json_encode($langs->trans('noEnoughCustomerCredit')); ?>, 'error' ) event.preventDefault(); // Prevent form submission return false; } else if (qINkg >= sCustomercredit){ Swal.fire( <?php echo json_encode($langs->trans('error')); ?>, <?php echo json_encode($langs->trans('invalidReturn1')); ?>, 'error' ) event.preventDefault(); // Prevent form submission return false; } else { Swal.fire( <?php echo json_encode($langs->trans('successReturn')); ?>, 'success' ) return true; } } else { // Customer field is invalid, show an alert message alert("Please select a valid customer."); event.preventDefault(); // Prevent form submission return false; } } else { // Warehouse field is invalid, show an alert message alert("Please select a warehouse."); event.preventDefault(); // Prevent form submission return false; } } else { // Product field is invalid, show an alert message alert("Please select a product."); $(".targetWareHouseField").val(''); // Reset the #targetWareHouse field event.preventDefault(); // Prevent form submission return false; } }); // Watch for changes in select_product $(".select_product").change(function() { // If select_product is changed, reset targetWareHouse if it was changed previously if ($(".targetWareHouseField").val() !== initialTargetWareHouseValue) { $(".targetWareHouseField").val(''); $(".ItemInSelectedWareHouse").val(''); $("#sCustomer").val(''); $(".sCustomercredit").val(''); } }); // Watch for changes in WareHouse $(".targetWareHouseField").change(function() { // If targetWareHouse is changed, reset other fields if they were changed previously if ($(".targetWareHouseField").val() !== initialTargetWareHouseValue) { $("#sCustomer").val(''); $(".sCustomercredit").val(''); } }); }); </script> و دي حقول المتغيرات في php print '<tr>'; print '<td class="fieldrequired">'.$langs->trans('sCustomer').' </td>'; print '<td class="fieldrequired">'; print $reyadastocks->select_customer(0, 'sCustomer', 1, 'rowid', 'nom','sCustomer'); print '</td>'; print '<td style="width: 200px" class="fieldrequired">'.$langs->trans('ItemInSelectedWareHouse').' </td>'; print '<td > <input type="text" readonly value="" class="bg-noha3 sCustomercredit" name="sCustomercredit"></td>'; print '</tr>'; print '<tr>'; print '<td class="fieldrequired">'.$langs->trans('qINkg').' </td>'; print '<td colspan="3" > <input type="text" value="" class="qINkg minwidth300 bg-m1" name="qINkg" required="required" autocomplete="off"></td>'; print '</tr>'; شكيت ان يكون فيه قيم متكرر تعريفها و دورت مفيش قلت يمكن السكربت بيقرا الداتا غلط ، طبعت الداتا بالكونسول و نفس الشئ العجيب بقا ان قاعدة البيانات لو فاضية و كانت الاستمارة دي تمثل اول بيان مرتجع ، البيان بيتم تنفيذه عادي جدا لكن الخطأ ده مع تاني مرتجع ، و مش فاهم ايه علاقة قاعدة البيانات لاني اصلا معرف البيانات في الفرونت اند مش جايبها من الداتابيز اللي فاهم حاجة يفهمني
-
انا جربت count و لم تعمل
-
سلام عليكم على سبيل المثال المتغير التالي $s = $data_to_go[$obj->fk_employe]['totaldayspresent']; حين اقوم بطباعته كالتالي echo $s.'<br>'; تكون النتيجة 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 انا مش عاوز من الكلام ده غير النتائج فقط يعني في المثال السابق النتيجة 21 اجيب الرقم ده ازاي جربت count ما ظبطتش
-
import { useRouter } from 'next/router' const Footer = () => { const router = useRouter() const handleLanguageChange = (e) => { router.push(e.target.value) } return ( <select className="form-select mb-3" aria-label="Default select example" onChange={handleLanguageChange}> <option value="/en" defaultValue>English</option> <option value="/ar">Arabic - Coming Soon</option> </select> ) } export default Footer
-
أظن ان المشكلة في الكود هي أنه بياخد العنصر الواحد فقط باستخدام document.getElementById ، عشان كده شغال على الأيقونة الأولى التي واخده نفس الـ id. جرب استخدام document.querySelectorAll عشان ناخد كل العناصر اللي عندها نفس الـ id ، ومهم انك تحددال array بعد العنصر لتحديد العنصر الصحيح جرب const likeIcons = document.querySelectorAll('#like-icon'); const likeCount = document.getElementById('like-count'); likeIcons.forEach((likeIcon) => { likeIcon.addEventListener("click", () => { const newId = likeIcon.getAttribute('data-news'); const url = `/like_news/${parseInt(newId)}/`; fetch(url, { method: 'GET', headers: { 'Content-type': 'application/json' } }) .then(response => { return response.json(); }) .then(data => { if(data.liked) { likeIcon.classList.remove('empty-heart'); } else { likeIcon.classList.add('empty-heart'); } likeCount.innerHTML = data.like_count; }) .catch(error => { console.log(error); }) }); }); انا استخدمت querySelectorAll بدلاً من getElementById عشان اجيب كل العناصر التي لديها نفس الـ id ، و استخدمت تكرار forEach عشان احدد كل عنصر لوحده . و اخترت likeIcon بدل like-icon في متغير newId داخل الحدث ليتم استخدام المتغير المناسب.
-
public class Shipment { private int number; private String destination; private String deliveryOptions; private double deliveryPrice; public Shipment(int number, String destination, String deliveryOptions, double deliveryPrice) { this.number = number; this.destination = destination; setDeliveryOptions(deliveryOptions); this.deliveryPrice = deliveryPrice; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getDestination() { return destination; } public void setDestination(String destination) { this.destination = destination; } public String getDeliveryOptions() { return deliveryOptions; } public void setDeliveryOptions(String deliveryOptions) { if (deliveryOptions.equals("PickUp") || deliveryOptions.equals("HomeDelivery")) { this.deliveryOptions = deliveryOptions; } else { System.out.println("Invalid delivery option, only 'PickUp' or 'HomeDelivery' are allowed."); } } public double getDeliveryPrice() { return deliveryPrice; } public void setDeliveryPrice(double deliveryPrice) { this.deliveryPrice = deliveryPrice; } public double calPriceWithTax() { return deliveryPrice * 1.15 + deliveryPrice; } }
-
سلام عليكم أحدهم اخبرني انه يريد سحب السوفتوير من معالج تشغيل احدى ماركات الغسالات الاوتوماتيك نظرا لصعوبة استيراد المعالجات الجديدة يريد تصنيع المعالج محليا قم ينسخ له السوفتوير من معالج يعمل بالفعل هل توجد طريقة لذلك او اي افكار او طرق ابحث فيها ؟ شكرا لكم
-
هي اشتغلت بعد ما مسحت محتويات ملف htaccess كاملة
-
RewriteEngine on Options -Indexes # php -- BEGIN cPanel-generated handler, do not edit # This domain inherits the “PHP” package. # php -- END cPanel-generated handler, do not edit RewriteCond %{HTTP_HOST} ^arabiauniform\.areyada\.com$ RewriteRule ^/?$ "https\:\/\/arabiauniform\.areyada\.com\/" [R=301,L] RewriteRule (.*) https://arabiauniform.areyada.com/$1 RewriteRule ^([^/]*)$ /index.php?path=$1 [L] <Files 403.shtml> order allow,deny allow from all </Files> هذا هو ملف htaccess
- 4 اجابة
-
- 1
-
سلام عليكم صورة تحمل اسم عربي الصور التي تحمل اسماء عربية لا يفتحها المتصفح و تعطي خطأ This page isn’t working right now ........com redirected you too many times. To fix this issue, try clearing your cookies. ERR_TOO_MANY_REDIRECTS هل من افكار ؟
- 4 اجابة
-
- 1
-
سلام عليكم عندي استعلام كالتالي $query = 'SELECT order_threads.*, order_threads.mPrice AS p, admins.name AS user, thread.image , thread.name, thread.mPrice AS tp, patron_colors.color_name AS color_name, patron_colors.color_count FROM order_threads LEFT JOIN admins ON order_threads.user = admins.id JOIN patron_colors ON order_threads.color_select = patron_colors.id JOIN thread ON order_threads.thread_id = thread.id WHERE order_threads.order_id=' .$order['id']. ' ;'; $threads = $conn->query($query); الإستعلام مفيش فيه اي مشكلة غير انني اقوم تقريبا بتكراره فوق ال 20 مرة بنفس الطريقة بس اللي بيختلف فقط جدول order_threads و thread قلت اجرب اعمل دالة مخصوصة و استدعيها كالتالي function connecting($order_table,$table){ global $order_id ; global $conn; $query_var = 'SELECT '.$order_table.'.*, '.$order_table.'.price AS price, admins.name AS user, patron_colors.color_name AS color_name, patron_colors.color_count FROM '.$order_table.' LEFT JOIN admins ON '.$order_table.'.user = admins.id JOIN '.$table.' ON '.$order_table.'.'.$order_table.'_id = '.$table.'.id JOIN patron_colors ON '.$order_table.'.color_select = patron_colors.id WHERE '.$order_table.'.order_id=' .$order_id . ' ORDER BY '.$order_table.'.id ASC;'; $run = $conn->query($query_var); } متغير order_table هايحل محل order_threads و table هايحل محل threads و هايبدلهملي بالاسماء الجديدة للجداول اللي عاوز اجيب منها الداتا بنفس باقي بيانات الاستعلام و متغير $run هو تنفيذ ال query لما باجي بنفذ الامر و استدعي الدالة كالتالي connecting('order_bracelet','bracelet'); و ابدأ استدعي البيانات foreach ($run AS $row ){ // code here } مفيش اي قراءه نهائي و لا كأن فيه استعلام اصلا ايه الخطأ اللي انا عملته احبائي الكرام ؟
- 1 جواب
-
- 1
-
شكرا لكم أيها الأفاضل
-
سلام عليكم احيانا اقوم باستعلام يجلب بيانات بها رموز مثل . و $ و & , * و خلافه مثلا عندي عميل اسمه GLORY LANGUAGE & INTERNATIONAL SCHOOLS الاستعلام كله بيقف بسبب رمز & ازاي اقدر اتجنب حاجة زي كده فضلا
- 3 اجابة
-
- 2
-
سلام عليكم الاستعلام كالتالي SELECT order_buttons.*, order_buttons.id AS mainID, button.image , button.name, patron_colors.color_name AS color_name, patron_colors.id, patron_colors.order_id, patron_colors.color_count FROM order_buttons JOIN button ON order_buttons.button_id = button.id JOIN patron_colors ON (patron_colors.color_name = order_buttons.color_select OR patron_colors.color_name = order_buttons.color_select) AND patron_colors.order_id=' .$order['id']. ' WHERE order_buttons.order_id=' .$order['id']. ' في ال join ده JOIN patron_colors ON (patron_colors.color_name = order_buttons.color_select OR patron_colors.color_name = order_buttons.color_select) AND patron_colors.order_id=' .$order['id']. ' عاوز طريقة اقوله بيها نفذلي الاستعلام ده ، لو لقيت قيمة patron_colors.order_id اكبر من صفر نفذ شرط ال AND يعني يتجاهل من بعد تعليمة AND و يعملي ال JOIN من غيرها عادي بمعنى تاني اوضح ، عاوز اربط الشرط ده في ال JOIN AND patron_colors.order_id=' .$order['id']. ' فقط في حال قيمة الحقل patron_colors.order_id اكبر من 0 غير كده ينفذ ال JOIN و لا كأنها موجودة
-
سلام عليكم عندي استعلام كالتالي $query = "SELECT o_m.*, o_c.id, o_m.image AS mImage, ccc.*, f.name, suppliersdb.username AS factory FROM order_marker o_m JOIN order_cloths o_c ON o_c.cloth_composition_id = o_m.cloth_id JOIN fabric_usage f ON o_c.usage_id = f.id JOIN common_cloth_composition ccc ON o_m.cloth_id = ccc.id LEFT JOIN suppliersdb ON suppliersdb.id = ccc.suppName WHERE o_m.order_id=$order_id GROUP BY o_m.id"; $markers = array(); if ($result = $conn->query($query)){ while ($row= $result->fetch_assoc()){ array_push($markers, $row) ; } $result->free(); } كود php اظهار النتيجة كالتالي if (isset($markers) AND !empty($markers) ){ foreach ($markers AS $get){ $lshrinkP = ((float)$get['cloth_singel_height'] *((float)$get['lShrink']/100)) + (float)$get['cloth_singel_height']; $lshrinkP1 = ((float)($get['cloth_total_height'] *((float)$get['lShrink']/100)) + (float)$get['cloth_total_height']); $meterC = ($lshrinkP1 * $get['layers']); $totalmeterC = $meterC+($meterC*($get['hadr']/100)+$lshrinkP); $kgC= $totalmeterC/$get['metersperkg']; //$mPrice= (float)$marker['mPrice'] * $totalmeterC; $kgC = number_format($kgC, 2, '.', ''); ?> <tr> <td> <?php echo $get['cloth_id'] ?></td> <td><?php echo $get['fabname'] ?></td> <td><?php echo $get['name'] ?></td> <td> <?php $image = $get['image']; $location = '../assets/images/common_cloth_composition/'.$image; //$location = __DIR__ . '/assets/images/common_cloth_composition/'.$image; if (file_exists($location)) { echo '<img style="max-height: 50px !important; margin: 0 auto;" src="assets/images/common_cloth_composition/'. $image .' " alt="#">'; } else { echo '<img class="img-thumbnail" style="width: 60px" src="assets/images/noImage.png" alt="">'; } ?> </td> <td> <?php echo $totalmeterC ?> <?= $getTranslation->tr('meter') ?> </td> <td> <?php echo $kgC ?> <?= $getTranslation->tr('kgm') ?> </td> <td> <?php echo $get['factory'] ?></td> </tr> <?php }} ?> النتيجة كما في الصورة انا عاوز لما فيه كود يتكرر زي 242 كده النظام يظهرلهولي مرة وحدة بس و يجمع القيم الرقميه اللي تقابله في العواميد التالية يعني استهلاك القماش للطلبية بالمتر مثلا في الناتج الأول 117.53 و في الناتج التاني 118.66 مثلا يبقى عاوز الناتج يظهرلي مرة وحده و يجمعلي الرقمين دول على بعض اعملها ازاي؟ مع الشكر
-
سلام عليكم $new_order = $_POST['new_order']; $old_order = $_POST['old_order']; $done = 1; $admin = $_POST['admin']; #1 - Import Threads $get_old_thread_data = $conn->query('SELECT * FROM order_threads WHERE order_id = ' . $old_order); if (mysqli_num_rows($get_old_thread_data) > 0) { $ot/*old thread*/ = []; foreach ($get_old_thread_data as $a) { $ot[] = $a; } #4 - copy new Order_thread data foreach ($ot as $ot => $values) { $new_ot = $conn->prepare('INSERT INTO order_threads (order_id, thread_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, mPrice, BakaraCost, factory, user) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); $new_ot->bind_param("ssssssssssss", $new_order, $values['thread_id'], $values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['mPrice'], $values['BakaraCost'], $values['factory'], $admin); //print_r($a); $run = $new_ot->execute(); } if ($run === false) { echo $new_ot->error; die(); } } /*------------- GET Order Buttons -----------------*/ #1 - Import Button $get_old_button_data = $conn->query('SELECT * FROM order_buttons WHERE order_id = ' . $old_order); if (mysqli_num_rows($get_old_button_data) > 0) { $ob/*old thread*/ = []; foreach ($get_old_button_data as $a) { $ob[] = $a; } #4 - copy new Order_thread data foreach ($ob as $ob => $values) { $new_ob = $conn->prepare('INSERT INTO order_buttons (order_id, button_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, ButtonPrice, factory, user) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)'); $new_ob->bind_param("sssssssssssss", $new_order, $values['button_id'], $values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['ButtonPrice'], $values['factory'], $admin); //print_r($a); $run = $new_ob->execute(); } if ($run === false) { echo $new_ob->error; die(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~ GET ZIPPERS ~~~~~~~~~~~~~~~~ ############################################### $get_old_z_data = $conn->query('SELECT * FROM order_zippers WHERE order_id = ' . $old_order); if (mysqli_num_rows($get_old_z_data) > 0) { $oz/*old thread*/ = []; foreach ($get_old_z_data as $a) { $oz[] = $a; } #4 - copy new Order_thread data foreach ($oz as $oz => $values) { $new_oz = $conn->prepare('INSERT INTO order_zippers (order_id, zipper_id, color_select, size_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, MPrice, factory, user) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)'); $new_oz->bind_param("ssssssssssssss", $new_order, $values['zipper_id'],$values['color_select'], $values['size_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['MPrice'], $values['factory'], $admin); //print_r($a); $run = $new_oz->execute(); } if ($run === false) { echo $new_oz->error; die(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~ GET Capsons ~~~~~~~~~~~~~~~~ ############################################### $get_old_c_data = $conn->query('SELECT * FROM order_capsons WHERE order_id = ' . $old_order); if (mysqli_num_rows($get_old_c_data) > 0) { $oc = []; foreach ($get_old_c_data as $a) { $oc[] = $a; } #4 - copy new Order_thread data foreach ($oc as $oc => $values) { $new_oc = $conn->prepare('INSERT INTO order_capsons (order_id, capson_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, MPrice, factory, user) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)'); $new_oc->bind_param("sssssssssssss", $new_order, $values['capson_id'],$values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['MPrice'], $values['factory'], $admin); //print_r($a); $run = $new_oc->execute(); } if ($run === false) { echo $new_oc->error; die(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~ GET Rubbers ~~~~~~~~~~~~~~~~ ############################################### $get_old_r_data = $conn->query('SELECT * FROM order_rubbers WHERE order_id = ' . $old_order); if (mysqli_num_rows($get_old_r_data) > 0) { $or = []; foreach ($get_old_r_data as $a) { $or[] = $a; } #4 - copy new Order_thread data foreach ($or as $or => $values) { $new_or = $conn->prepare('INSERT INTO order_rubbers (order_id, rubber_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, MPrice, factory, user) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)'); $new_or->bind_param("sssssssssssss", $new_order, $values['rubber_id'],$values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['MPrice'], $values['factory'], $admin); //print_r($a); $run = $new_or->execute(); } if ($run === false) { echo $new_or->error; die(); } else { echo 'done'; } } لو لاحظتم حضراتكم انا بكرر بيانات من مجموعة جداول و انسخها لاستخدامات اخرى المهم بنية الجداول متشابهة بنسبة 90 % تقريبا الكود متكرر لكل جدول بتفاصيله و التنفيذ line by line هل الطريقة دي في التكويد سليمة ؟ طيب لو مش سليمة ايه الطريقة الصح اني انفذ اللي مكتوب ده بسطور برمجية أقل حاولت انشئ دالة مخصصة واجهتني مشكلة في اتصال قاعدة البيانات من خارج الدالة ناس قالولي ممكن الكود بتعمل OOP بس انا لسه ما بدأتش فيه فخبرتي فيه محدودة اقتراحات حضراتكم و تقييمكم مع خالص الشكر ؟
- 1 جواب
-
- 1
-
هل تقصد ان لديك إيميلات رسمية على موقعك تريد ربطها بال outlook ؟
-
أحسنت أخي الفاضل نجحت بالفعل و هذا الكود بعد تنقيحة لمن أراد الاستفادة لاحقا و أتشرف برأي حضرتك لو ممكن يتكتب بشكل أفضل $sizes = array(json_decode($_POST["sizeValues"])); foreach ($sizes[0] as $key => $size) { $name = mysqli_real_escape_string($conn,$size->item_name,); $id = mysqli_real_escape_string($conn,$size->item_id,); $stmt = $conn->prepare('UPDATE patron_sizes SET size_count=? WHERE id = ? ') ; $stmt->bind_param('ss',$name,$id); $result = $stmt->execute(); } if ($result) { echo 'done'; } else { echo $stmt->error; }
-
سلام عليكم أحاول تحديث قاعدة البيانات ببيانات مصفوفة كالتالي $sizes = array(json_decode($_POST["sizeValues"])); // $id = $_POST["id"]; print_r($sizes); foreach ($sizes as $size) { $name = intval($size->item_name); $id = intval($size->item_id); $sql = "UPDATE patron_sizes SET size_count='$name', WHERE id=$id"; $result = $conn->query($sql); if ($result) { echo 'done'; } } أواجه الخطأ التالي Notice: Trying to get property 'item_name' of non-object in <b>C:\xampp\htdocs\atms\requests\edit_patron.php</b> on line 35 Notice: Trying to get property 'item_id' of non-object in <b>C:\xampp\htdocs\atms\requests\edit_patron.php</b> on line 36 المصفوفة تطبع بالشكل التالي Array ( [0] => Array ( [0] => stdClass Object ( [item_id] => 2758 [item_name] => 5000 ) [1] => stdClass Object ( [item_id] => 2759 [item_name] => 4000 ) [2] => stdClass Object ( [item_id] => 2760 [item_name] => 6000 ) [3] => stdClass Object ( [item_id] => 2761 [item_name] => 0 ) [4] => stdClass Object ( [item_id] => 2762 [item_name] => 2 ) [5] => stdClass Object ( [item_id] => 2763 [item_name] => 2000 ) [6] => stdClass Object ( [item_id] => 2764 [item_name] => 2000 ) [7] => stdClass Object ( [item_id] => 2765 [item_name] => 2000 ) [8] => stdClass Object ( [item_id] => 2766 [item_name] => 2000 ) [9] => stdClass Object ( [item_id] => 2767 [item_name] => 2000 ) [10] => stdClass Object ( [item_id] => 2768 [item_name] => 10000 ) [11] => stdClass Object ( [item_id] => 2769 [item_name] => 5000 ) [12] => stdClass Object ( [item_id] => 2770 [item_name] => 2500 ) [13] => stdClass Object ( [item_id] => 2771 [item_name] => 2500 ) [14] => stdClass Object ( [item_id] => 2772 [item_name] => 5000 ) ) ) ما الحل فضلا ؟
- 2 اجابة
-
- 1
-
ال ID ما بيجيبش ترتيبة داخل الاستعلام ال ID بيجيب ترتيبة داخل الجدول ككل يعني مثلا البند بطانية البالغين رقمه جوا الجدول 377 لكن هو بيستخدم مثلا في المناقصة رقم 2 ( اللي فيها 11 بند هو من بينهم ) فانا عاوز اعرض رقمه داخل الاستعلام (ترتيبه و ليس ال ID الخاص به)
-
يمكن في خلل في طريقة سؤالي تجعله غير مفهوم و اعتذر لذلك انا استاذي لا اعلم الرقم لكي اضعه كشرط ان تحقق اطبعلي النتيجة انا عندي اسم ( و الاسم ده موجود ضمن نتائج الاستعلام ) فقط اريد رقمه ليس اكثر و لا أقل <?php echo '<pre>'; echo 'رقم البند بطانية للبالغين هو' ; echo '</pre>'; ?> انا عاوز لما يلاقي في الاستعلام بند اسمه ( بطانية للبالغين ) يكتبلي ترتيبه في الاستعلام ، بس كده مش اني اكتب الرقم و اقوله اطبعلي الاسم المقابل ليه
- 7 اجابة
-
- 1
-
معلش سامحني اخي الفاضل لكي استوعب الفكرة الكود كالتالي <table> <tr> <td> الاسم </td> <td> الرقم </td> </tr> <?php $i = 0; while ($row = mysqli_fetch_assoc($sel_sub)) { $i++ ?> <tr> <td> <?php echo $i ?> </td> <td> <?php echo $row['item_name'] ?> </td> </tr> <?php } ?> </table> <?php echo '<pre>'; echo 'رقم البند بطانية للبالغين هو' ; echo '</pre>'; ?> و دي نتيجة الإستعلام انا عاوز لما يلاقي المتغير قيمته مثلا ( بطانية للبالغين) يروح يدور عليها ف الاستعلام و يطبع الرقم اللي قدامها ( من غير ما اعرض باقي النتائج) يعني بطانية بالغين رقمها 9 لو ستائر نوافذ يجيبلي 14 لو لحاف يجيبلي 12 بس ، من غير ما يظهرلي باقي النتائج ( يعني ينفذ الاستعلام في الخفاء و يقارن و يحطلي الرقم بس)
- 7 اجابة
-
- 1
-
سلام عليكم الان انا بعمل استعلام عادي جدا $sel_sub = $conn->query("SELECT p.id AS pID , p.pack_id, p.tender_id, p.item_name,s.total_volume AS tv FROM pack_items p LEFT JOIN suppling_details s ON s.pack_item = p.id WHERE p.tender_id = $tender "); نتائج الإستعلام ده 11 نتيجة مثلا النتائج دي عاوز ارتبها من 1 ل 11 و بعدين هاحط متغير مثلا بقيمة معينة ( موجودة ضمن ال 11 بيان اللي طالعين ) عاوز طريقة اخليه يروح عالمتغير ده و يبص عالاستعلام يدور علي قيمة مساوية لقيمة المتغير ده و يطبعلي الرقم اللي قدامه ( ترتيبة من ال 11)
- 7 اجابة
-
- 1
-
شكرا لك استاذنا لكن لم تفلح الطريقة