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

بلال زيادة

الأعضاء
  • المساهمات

    4657
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    30

كل منشورات العضو بلال زيادة

  1. صحيح يمكن وضع قيم ثابتة ولا يمكن للعضو مشاهدة هذه البيانات, الأمر مبني على كيفية استخدامك للبيانات و هل تريد عرضها ام لا.
  2. ممكن تجعل المستخدم يقوم بتعديل وحفظ البيانات مرة واحدة, ومن ثم تقوم في واجهة الدفع بعرض فقط وسيلة الدفع بدون عرض فورم لتعبئة البيانات مثل بيانات العنوان والاسم و معلومات الشحن, فقط تقوم بجلب البيانات من model الخاص باليوزر بعد أن تحفظ البيانات بداخله مثلاً. طبعا يتم تمرير بيانات المستخدم من api الي بيرجع بيانات المستخدم إلى class model و عن طريق class model يمكن جلب البيانات. هناك طريقة أخرى هي فصل الواجهات فمثلا واجهة لتعبئة البيانات الشخصية تحتوي على الاسم والبريد الإلكتروني و باقي المعلومات, و من الواجهة الثانية تكون تعبئة معلومات وعنوان الشحن كاملا, و في اخر واجهة تعرض طريقة الدفع المختارة. الفكرة هي استغلال البيانات التي تمررها لأي كلاس Model مسؤول عن أي واجهة. فمثلا في لغة فلاتر أقوم بعمل التالي عندي كلاس model لمعلومات الزبون أو العضو class CustomerDetailModel { int id; String firstName; String lastName; String email; Billing billing; Shipping shipping; CustomerDetailModel( {this.id, this.firstName, this.lastName, this.email, this.billing, this.shipping}); CustomerDetailModel.fromJson(Map<String, dynamic> json) { id = json['id']; firstName = json['first_name']; lastName = json['last_name']; email = json['email']; billing = json['billing'] != null ? new Billing.fromJson(json['billing']) : null; shipping = json['shipping'] != null ? new Shipping.fromJson(json['shipping']) : null; } } class Billing { String firstName; String lastName; String company; String address1; String address2; String city; String postcode; String country; String state; String email; String phone; Billing( {this.firstName, this.lastName, this.company, this.address1, this.address2, this.city, this.postcode, this.country, this.state, this.email, this.phone}); Billing.fromJson(Map<String, dynamic> json) { firstName = json['first_name']; lastName = json['last_name']; company = json['company']; address1 = json['address_1']; address2 = json['address_2']; city = json['city']; postcode = json['postcode']; country = json['country']; state = json['state']; email = json['email']; phone = json['phone']; } Map<String, dynamic> toJson(){ final Map<String, dynamic> data = new Map<String, dynamic>(); data['first_name'] = this.firstName; data['last_name'] = this.lastName; data['company'] = this.company; data['address_1'] = this.address1; data['address_2'] = this.address2; data['city'] = this.city; data['postcode'] = this.postcode; data['country'] = this.country; data['state'] = this.state; data['email'] = this.email; data['phone'] = this.phone; return data; } } class Shipping { String firstName; String lastName; String company; String address1; String address2; String city; String postcode; String country; String state; Shipping( {this.firstName, this.lastName, this.company, this.address1, this.address2, this.city, this.postcode, this.country, this.state,}); Shipping.fromJson(Map<String, dynamic> json) { firstName = json['first_name']; lastName = json['last_name']; company = json['company']; address1 = json['address_1']; address2 = json['address_2']; city = json['city']; postcode = json['postcode']; country = json['country']; state = json['state']; } Map<String, dynamic> toJson(){ final Map<String, dynamic> data = new Map<String, dynamic>(); data['first_name'] = this.firstName; data['last_name'] = this.lastName; data['company'] = this.company; data['address_1'] = this.address1; data['address_2'] = this.address2; data['city'] = this.city; data['postcode'] = this.postcode; data['country'] = this.country; data['state'] = this.state; return data; } } و عندما أريد استخدام البيانات التي تم تمريرها إلى كلاس Model في واجهة الدفع كالتالي class OrderModel { OrderModel({ this.id, this.parentId, this.number, this.orderKey, this.total, this.billing, this.shipping, this.paymentMethod, this.paymentMethodTitle, this.transactionId, }); int id; int parentId; String number; String orderKey; String total; String totalTax; Ing billing; Ing shipping; String paymentMethod; String paymentMethodTitle; String transactionId; factory OrderModel.fromJson(Map<String, dynamic> json) => OrderModel( id: json["id"], parentId: json["parent_id"], number: json["number"], orderKey: json["order_key"], shippingTotal: json["shipping_total"], shippingTax: json["shipping_tax"], total: json["total"], totalTax: json["total_tax"], billing: Ing.fromJson(json["billing"]), shipping: Ing.fromJson(json["shipping"]), paymentMethod: json["payment_method"], paymentMethodTitle: json["payment_method_title"], transactionId: json["transaction_id"], ); Map<String, dynamic> toJson() => { "id": id, "parent_id": parentId, "number": number, "order_key": orderKey, "shipping_total": shippingTotal, "shipping_tax": shippingTax, "total": total, "total_tax": totalTax, "billing": billing.toJson(), "shipping": shipping.toJson(), "payment_method": paymentMethod, "payment_method_title": paymentMethodTitle, "transaction_id": transactionId, }; } void createOrder() async { if(_ordersModel.shipping == null){ _ordersModel.shipping = this.customerDetailModel.shipping; } if(this.customerDetailModel.shipping != null){ _ordersModel.shipping = this.customerDetailModel.shipping; } if(_ordersModel.billing == null){ _ordersModel.billing = this.customerDetailModel.billing; } if(this.customerDetailModel.billing != null){ _ordersModel.billing = this.customerDetailModel.billing; } if(ordersModel.lineItems == null){ _ordersModel.lineItems = new List<LineItems>(); } } جميع الأمثلة الموضحة مكتوبة بلغة Flutter
  3. تم إضافة جلسة session إلى الكود و تم التأكد من عمله أيضا <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form name="newad" method="post" enctype="multipart/form-data" action="index.php"> <table border="1"> <tr><td> <input type="file" name="image" id="" required> </td></tr> <tr><td> <input type="hidden" name="MAX_FILE_SIZE" value="90000" /> </td></tr> <tr><td><input name="describe" type="text" size="25" maxlength="100" required > </td></tr> <tr><td> <input name="Submit" type="submit" value="Upload image"> </td></tr> </table> </form> <?php $con = mysqli_connect("localhost", "root", "") or die ("فشل في الإتصال بقاعدة البيانات"); $db=mysqli_select_db($con, 'tc'); define ("MAX_SIZE","1000"); // this function to get extension of files................. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } $errors=0; if(isset($_POST['Submit'])) { $image=$_FILES['image']['name']; if ($image) { $filename = stripslashes($_FILES['image']['name']); $extension = getExtension($filename); $extension = strtolower($extension); if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) { echo '<h1>Unknown extension!</h1>'; $errors=1; } else { //$size= filesize($_FILES['image']['name']); $size = $_FILES["image"]["size"]; if ($size > MAX_SIZE*1024) { echo '<h1>You have exceeded the size limit!</h1>'; $errors=1; } $image_name=time().'.'.$extension; $newname="upload/".$image_name; //$copied = copy($_FILES['image']['tmp_name'], $newname); $copied = move_uploaded_file($_FILES["image"]["tmp_name"], $newname); if (!$copied) { echo '<h1></h1>'; $errors=1; }}}} if(isset($_POST['Submit']) && !$errors) { echo "<h1></h1>"; // echo "<img src=$newname>"; // ------------------- To Save Path of Image in DataBase and show it on Browser... $id = $_POST['id']; $describe = $_POST['describe']; $_SESSION['image_name'] = $newname; $result = @mysqli_query($con, "INSERT INTO `news` VALUES ('$id','$newname','$describe',NOW() )"); if($result) { header("location:session.php"); } else { echo "error"; } } ?> </body> </html> وملف session.php <?php session_start(); //عمل حالة شرطية للمقارنة if ($_SESSION['browser'] !== $_SERVER['HTTP_USER_AGENT']) { //sessionانهاء ال session_destroy(); echo "أنت غير معتمد"; exit(); } echo " "; ?> <img src="<?php echo $_SESSION['image_name']; ?>" />
  4. قم بتشغيل الأمر في terminals و التحقق من أن كل شيء يعمل بشكل صحيح عن طريق الأمر التالي flutter doctor وإذا ظهرت أخطاء هل من الممكن تزويدي بها. أيضا يمكنك في المسار التالي android/build.gradle تغيير android { compileSdkVersion 30 } وتأكد من تنزيل Android 11.0 (R) في sdk الخاص بالأندرويد, إذا لم تقم بتنزيل Android 11.0(R) أذهب إلى أيقونة SDK Manager و من ثم الذهاب إلى SDK Platforms ومن ثم أختيار Android 11.0 (R) وبعدها ثم بالضغط على apply.
  5. قم بالدخول الى مجلد App\Helpers ومن ثم التأكد من الملف هل يوجد أو لا. إذا كان موجود يمكنك التحقق من اسمه و طريقة استدعائه تمام. أو معرفة ما يقوم به الملف و هي برمجة المهام التي يقوم بها غالبا لن يكون معقد. إيضا يمكن الرجوع إلى توثيق الشركة و قراءة التوثيق كاملا ستجد حل كاملاً, ربما يكون هناك تحديث جديد للملفات قد تحل المشكلة.
  6. كل ما عليك هو إضافة جلسة session كالتالي session_start(); في أول الصفحة كي تسجل جلسات session. ومن ثم يمكنك عند رفع الصورة وتخزين اسمها في قاعدة البيانات أن تقوم بتخزين اسمها في جلسة ولتكن مثل $_SESSION['image_name'] = $imageName; بحيث أن $_SESSION['image_name' هي مفتاح الجلسة و قيمتها هي اسم الصورة وفي الصفحة الثانية هي تقوم بعرض محتوى الجلسة المحفوظة في جلسة session في وسم img ليعرض الصورة كالتالي <im src="uploads/<?php echo $_SESSION['image_name']; ?>" alt="" />
  7. يمكنك تعلم برمجة مواقع الويب أو برمجة تطبيقات الجوال, ولكن هذا يتناسب مع رغبتك في أيهما ستكون قابلية التعلم فيها سريعة عندك. برمجة مواقع الويب, كل ما يلزمك هو تعلم اللغات المستخدمة في برمجة مواقع الويب مثل HTML, CSS , JavaScript, PHP, Python, Node.js. يمكنك البدء ب html و يمكنك مشاهدة دورات على اليوتيوب تعلمك بناء هيكلية الموقع باستخدام هذه اللغة ومن ثم البدء بلغة css كي تقوم بوضع تنسيقات على الصفحات التي تنشأها باستخدام HTML. أيضا يمكنك تعلم بعدها javascript لتعطي أنيمشن و حركات للصفحة كي يستطيع الزائر التعامل مع الصفحة, و أخيرا يمكنك البدء بلغة تجعل الموقع يتفاعل مع المستخدمين ويخزن البيانات او يعرض عليهم محتويات بشكل ديناميكي باستخدام لغات مثل: PHP, Python, Node.js. برمجة التطبيقات الجوال, هناك نظامي تشغيل للجوالات, Android, iOS. يمكنك تعلم java , kotlin لبرمجة تطبيقات Android باستخدام برنامج Android Studio. يمكنك تعلم Swift, objective-c لبرمجة تطبيقات iOS باستخدام برنامج xcode. أو بتعلم لغات تستخدم في برمجة التطبيقات وهي تطبيقات هجينة مثل Flutter, Cordova, Ionic. ولكن هذا يضل حسب رغبتك في أي تريد التعلم والبدء فيها. بعد اتقان مجال معين يمكنك البدء بمشروعك أو العمل عن بعد عن طريق مواقع العمل الحر.
  8. أخي لاحظ أن الكود المرفق هو شغال و يتم تخزين البيانات داخل قاعدة البيانات, هل من الممكن تعمل لقطة شاشة لقاعدة البيانات عندك ؟
  9. شكرا أخي لرفعك الكود كاملاً, لقد وجدت خطأ في دالة التحقق من size الملف وقد تم استبدالها $size = $_FILES["image"]["size"]; و قد رفع الملف بنجاح وبدون أي مشكلة, الكود كاملاً. <form name="newad" method="post" enctype="multipart/form-data" action="index.php"> <table> <tr><td><input type="file" name="image"></td></tr> <input type="hidden" name="MAX_FILE_SIZE" value="90000" /> <tr><td><input name="Submit" type="submit" value="Upload image"></td></tr> </table> </form> <?php $con = mysqli_connect("localhost", "root", "") or die ("فشل في الإتصال بقاعدة لبينات "); $db=mysqli_select_db($con, 'tc'); define ("MAX_SIZE","1000"); // this function to get extension of files................. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } $errors=0; if(isset($_POST['Submit'])) { $image=$_FILES['image']['name']; if ($image) { $filename = stripslashes($_FILES['image']['name']); $extension = getExtension($filename); $extension = strtolower($extension); if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) { echo '<h1>Unknown extension!</h1>'; $errors=1; } else { //$size= filesize($_FILES['image']['name']); $size = $_FILES["image"]["size"]; if ($size > MAX_SIZE*1024) { echo '<h1>You have exceeded the size limit!</h1>'; $errors=1; } $image_name=time().'.'.$extension; $newname="upload/".$image_name; //$copied = copy($_FILES['image']['tmp_name'], $newname); $copied = move_uploaded_file($_FILES["image"]["tmp_name"], $newname); if (!$copied) { echo '<h1>Copy unsuccessfull!</h1>'; $errors=1; }}}} if(isset($_POST['Submit']) && !$errors) { echo "<h1>File Uploaded Successfully! Try again!</h1>"; // echo "<img src=$newname>"; // ------------------- To Save Path of Image in DataBase and show it on Browser... $result = @mysqli_query($con, "INSERT INTO `news` VALUES ('', '$newname')"); if($result) { echo "file added"; } else { echo "error"; } $gotten = @mysqli_query($con, "Select * From news"); while($row = @mysqli_fetch_array($gotten)) { $pic=$row['path']; $id=$row['id']; // echo "<img src=$pic>"; // Here to Display Image on Browser and In Blank Browser if you like..... echo " <a href='$pic' target='_blank'><img border='0' src=$pic alt=$pic></a> "; } } ?>
  10. أخي أرفق مجلد مشروعك كاملا مع التعديلات التي قمت بتعديلها كي أنظر من جديد
  11. يمكنك شراء شهادة SSL وتركيبها على الأستضافة التي تشتريها من شركات الأستضافة. هناك استضافات عندما تحجز منها استضافة توفر شهادة ssl مجانية و أو شراء شهادة SSL لمدة تحددها شركة الاستضافة. يمكنك من خيار SSL/TLS تركيب الشهادة المتوفرة لديك. بعد التركيب يمكن إضافة إلى ملف .htaccess الكود حتى تجبر الموقع على استخدام https في الصفحات. RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteOptions inherit RewriteEngine on Header set content-Security-Policy: upgrade-insecure-requests يوضع الكود في أعلى ملف .htaccess إذا كنت تقصد شيء أخر يمكن توضيح السؤال بشكل أكبر لو سمحت.
  12. ممكن إرفاق الكود الخاص بك ؟ لإضافة Firebase Cloud Messaging يجب إضافة مكتبة firebase_messaging: ^7.0.3 إلى ملف pupsbec.ymal في مشرعك تجد المكتبة هنا . ثم من firebase console تقوم بتحميل ملف google-service.json إلى مشروعك في مسار android\app, ثم إضافة classpath في ملف android/build.gradle dependencies { // Add the google services classpath classpath 'com.google.gms:google-services:4.3.2' } وفي ملف android/app\build.gradle تضع // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services' وفي ملف android/app/src/main/AndroidManifest.xml تضع <intent-filter> <action android:name="FLUTTER_NOTIFICATION_CLICK" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> ضمن activity tag. ومن ثم هنا تجد التوثيق الخاص بقوقل فايربيز لكيفية التعامل مع المكتبات بعد تضمينها في flutter هنا أو هنا يمكن النظر في الكود الخاص بك بعد إرفاقه.
  13. يمكنك باستخدام إطار العمل Laravel من تصميم إي موقع بعدة لغات, بحيث Laravel تقدم لك مجلد lang كامل لكي تضع فيه ملفات ترجمة اللغات في هذا المجلد. يمكنك في مسار المجلد الرئيسي ثم تختار مجلد resources ومن ثم مجلد lang ستجد في هذا المسار مجلد en وبداخله ملفات مثل: auth.php pagination.php passwords.php validation.php لو قمت بالدخول لهذه الملفات ستجد أنه يوجد في كل ملف array تحتوي على key, value بحيث key مفتاح الذي سيعبر عن القيمة value في اللغة فمثلاُ: <?php return [ 'failed' => 'These credentials do not match our records.', 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 'users' => 'users', ]; ?> بحيث المفتاح failed قيمته وهي These credentials do not match our records. هذا للغة الأنجليزية, فماذا لو أردنا أن نعمل لغة عربية للموقع بكل سهولة سنذهب إلى مجلد lang ونقوم بإنشاء مجلد جديد باسم ar ونضع به الملفات المذكورة كما في مجلد en للغة الأنجليزية مع الإبقاء على المفاتيح و تغيير القيمة, فمثلاً <?php return [ 'failed' => 'أوراق الاعتماد هذه لا تتطابق مع سجلاتنا.', 'throttle' => 'محاولات تسجيل دخول كثيرة جدًا. يرجى المحاولة مرة أخرى في: ثواني.', 'users' => 'الأعضاء', ]; هكذا قمنا بإنشاء ملف auth.php ولكن بداخل مجلد ar في مجلد lang. ولكن لم ننتهي بعد الأن يجب علينا استخدام قيمة المفاتيح keys لأنها متشابهة في كل لغة مع الأختلاف بقيمة values فمثلا لو أردنا جلب المفتاح failed, سنقوم بالتالي: <p>{{ trans('auth.failed') }}</p> لو لاحظت جيداً اننا قمنا بكتابة الأقواس المعكوفة ثم دالة trans لجلب وطباعة القيمة حسب اللغة, دعنا نفصل أكثر هذا auth يعني اسم الملف , failed يعني المفتاح failed في ملف auth.php حسب كل لغة. ولكن الأن يجب علينا تحديد لغة الموقع الرئيسية من خلال ملف config.php داخل مجلد config في المجلد الرئيسي للمشروع عن طريق تغيير 'locale' => 'ar', او 'locale' => 'en', ويمكنك من وضع عنصر select باستخدام html لتغيير اللغة <select class="form-control changeLang"> <option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option> <option value="ar" {{ session()->get('locale') == 'ar' ? 'selected' : '' }}>Arabic</option> </select> وأيضا سنضع كود جافا سكربت للقيام بتغيير اللغة حسب route نحدده و نعمل تحديث للصفحة حسب اللغة المختارة مثل <script type="text/javascript"> var url = "{{ route('changeLang') }}"; $(".changeLang").change(function(){ window.location.href = url + "?lang="+ $(this).val(); }); </script> سيكون route في ملف web.php Route::get('lang/change', 'IndexController@change')->name('changeLang'); مع وضع في دالة index في ملف IndexController. public function index(Request $request) { App::setLocale($request->lang); session()->put('locale', $request->lang); return redirect()->back(); } يتم قلب ذلك باستخدام html وتغيير اتجاه الصفحة عن طريق <!DOCTYPE> <html lang="ar" dir="rtl"> <html lang="en" dir="ltr"> بحيث rtl - right to left, ltr - left to right. أو يمكن استخدام مكتبة بوتستراب. لا, الأغلب نفس التصميم مع قلب الأتجاهات إلا إذا كان الموقع يختلف بالواجهات من اللغة العربية إلى اللغة الأنجليزية.
  14. اسم قاعدة البيانات هو tc صحيح. واسم الجدول المخزن فيه الاستعلامات هو news كما ذكرت ولكن مع تغيير حقل image إلى حقل path لانك تخزن اسم الصورة في حقل path. ممكن تغيير اسم الملف bas.php إلى الملف نفسه الذي حفظت به هذا الكود, لأنه هذا الملف سوف يعيد الرفع من خلاله مرة أخرى, لأنه يحتوي على كود التخزين داخل قاعدة البيانات و أيضا يحتوي على كود الرفع إلى مجلد تخزين الصور. يعني إذا حفظ الملف باسم index.php يجب تغيير الملف في خاصية action إلى نفس اسم الملف. CREATE TABLE `news` ( `id` int(11) NOT NULL, `path` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  15. وعليكم السلام ورحمة الله وبركاته يمكنك استخدام الإصدار التجريبي وأجراء كافة العمليات التي تريدها من خلال api المزود من قبل شركة hyperPay. يوجد في التوثيق الخاص باستخدام HyperPay شرح كامل ووافي لكيفية استخدام الإصدار التجريبي. يمكنك زيارة التوثيق من هنا أو ممكن مراسلة الدعم الفني الخاص بالشركة و الاستفسار عن أي شيء يجول في خاطرك وأخبارهم أنك مطور و تريد تجربة عمليات الدفع من خلال البوابة والتأكد من كل شيء على ما يرام. أو يمكنك فتح حساب عن طريق Request A Demo للحصول على استشارة مجانية من قبل الشركة.
  16. هل ممكن ترفق جميع ملفات المشروع كاملا ساعمل على ما تريد؟ او ممكن تقوم بفصل كل استعلام عن الاخر يعني كل قسم له استعلام خاص به للمنتجات و استعلام لجلب بيانات هذا القسم هذه الطريقة المستخدمة لتجنب الدخول في تعقيد الكود. وتعرض كل استعلام بالترتيب الذي تريده في الصفحة الرئيسية.
  17. مرحبا مجددا، لم أرى أنك قمت بتعديل السؤال والإجابة هي للسؤال قبل تعديله بحيث أنه بعد تعديل السؤال الطريقة التي تريد إرجاع اسم القسم مرة واحدة بنفس كودك لا يمكن بالطريقة الحالية ولكن ممكن أن تتم عن طريق أخفاء باقي الاسماء للقسم في كل تكرار عن طريق وضع class=“id-ثم رقم id” ومن ثم عن طريق css تقوم بإخفاء أي class لا تريد إظهاره باستخدام خاصية diaplay
  18. وعليكم السلام ورحمة الله وبركاته أولا وجدت عدة أخطاء منها أنك تستخدم mysql وهذا الأن أصبح أصدار قديم, أصدارات PHP الجديدة لا تدعم mysql, قمت بإصلاح جميع الأكواد mysql وتحويلها إلى mysqli لتشتغل على أصدارات PHP الجديدة. ثانيا وجدت مشكلة في دالة رفع الملف, هنا تقوم باستخدام دالة copy هنا عند استخدام دالة copy تقوم بنسخ الملف ووضعه على المسار الجديد ولكن يجب قبل ذلك هو وجود الملف على المسار الذي تريد نقل الملف منه, أي قبل ذلك يجب رفع الملف و من ثم القيام بنسخه, يعني تقوم باستخدام دالة move_uploaded_file($_FILES["image"]["tmp_name"], $newname); لتقوم برفع الملف و بعدها القيام بنسخ الملف إلى مساره الجديد. و أيضا لقد وجدت انك تقوم بحفظ مجلد الملفات المرفوعة داخل قاعدة البيانات وهذا خطأ فيجب حفظ اسم الملف داخل قاعدة البيانات ومن ثم عند جلبه تضع مسار مجلد الملفات المرفوعة و من ثم اسم الملف الذي تريده مثل: <img border='0' src=$pic alt=$pic> تصبح <img border='0' src=uploads/$pic alt=$pic> حتى لو أردت مستقبلاً تغيير اسم مجلد الرفع يكون الأمر سهلا و لا تقع بمشاكل بسبب حفظ اسم المجلد مع اسم الملف. الكود كاملا <form name="newad" method="post" enctype="multipart/form-data" action="bas.php"> <table> <tr><td><input type="file" name="image"></td></tr> <input type="hidden" name="MAX_FILE_SIZE" value="90000" /> <tr><td><input name="Submit" type="submit" value="Upload image"></td></tr> </table> </form> <?php $con = mysqli_connect("localhost", "root", "") or die ("فشل في الإتصال بقاعدة لبينات "); $db=mysqli_select_db($con, 'tc'); define ("MAX_SIZE","10"); // this function to get extension of files................. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } $errors=0; if(isset($_POST['Submit'])) { $image=$_FILES['image']['name']; if ($image) { $filename = stripslashes($_FILES['image']['name']); $extension = getExtension($filename); $extension = strtolower($extension); if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) { echo '<h1>Unknown extension!</h1>'; $errors=1; } else { $size=filesize($_FILES['image']['name']); if ($size > MAX_SIZE*1024) { echo '<h1>You have exceeded the size limit!</h1>'; $errors=1; } $image_name=time().'.'.$extension; $newname="upload/".$image_name; //$copied = copy($_FILES['image']['tmp_name'], $newname); $copied = move_uploaded_file($_FILES["image"]["tmp_name"], $newname); if (!$copied) { echo '<h1>Copy unsuccessfull!</h1>'; $errors=1; }}}} if(isset($_POST['Submit']) && !$errors) { echo "<h1>File Uploaded Successfully! Try again!</h1>"; // echo "<img src=$newname>"; // ------------------------------------------- To Save Path of Image in DataBase and show it on Browser... // table name $result = @mysqli_query($con, "INSERT INTO `news` VALUES ('', '$newname')"); if($result) { echo "file added"; } else { echo "error"; } $gotten = @mysqli_query($con, "Select * From news"); while($row = @mysqli_fetch_array($gotten)) { $pic=$row['path']; $id=$row['id']; // echo "<img src=$pic>"; // Here to Display Image on Browser and In Blank Browser if you like..... echo " <a href='$pic' target='_blank'> <img border='0' src=$pic alt=$pic> </a> "; } } ?>
  19. هل يمكنك إرفاق الكود هنا؟ يمكنك إضافة الأمر DISTINCT إلى استعلام mysql الخاص بك حتى يقوم بعدم تكرار السجلات المتشابهة, فمثلا عند استخدام هذا الأمر DISTINCT في هذا الكود لا يقوم بتكرار السجلات المتشابهة إطلاقاً SELECT DISTINCT columns FROM tbl; يجب إضافة الأمر DISTINCT بعد كلمة SELECT في الاستعلام. يمكنك أيضا قراءة المزيد عن هذا الأمر المستخدم من خلال توثيق SQL في موسوعة حسوب هنا. إما اذا كنت تقصد غير ذلك الرجاء توضيح السؤال.
  20. ممكن إرفاق صورة للكود عندك و صورة أيضا لنتيجة الكود؟ لمعرفة لماذا ترجع البيانات عدم مرتبة. لجلب بيانات من قاعدة البيانات بدون Loop هنا يتم ارجاع فقط صف واحد من داخل قاعدة البيانات. أما عند استخدام Loop يتم ارجاع جميع الصفوف من قاعدة البيانات فمثلا الأكواد التالي, مكتوبة بلغة PHP و في المثال الأول لو أردت جلب جميع صفوف جدول users وعرض جميع الأعضاء يمكنك استخدام الكود التالي: SELECT * FROM table_name // الاستعلام المستخدم في جلب جميع البيانات من قاعدة البيانات <?php $conn = new mysqli("localhost", "username", "password", "database"); $sql = "SELECT id, name FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>"; } } ?> هنا يتم ارجاع الصفوف أي جميع بيانات الأعضاء من داخل قاعدة البيانات بدون أي شرط. أما من خلال الكود التالي يتم ارجاع الصفوف من داخل قاعدة البيانات بشرط معين من خلال الأمر WHERE. SELECT id, name, FROM users WHERE name='bilal'" // استعلام جلب البيانات بشرط تحدده <?php $conn = new mysqli("localhost", "username", "password", "database"); $sql = "SELECT id, name FROM users WHERE name='bilal'"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>"; } } ?> هنا يتم أرجاع جميع الأعضاء الذين يكون مخزن اسمائهم باسم Bilal داخل قاعدة البيانات كما تلاحظ في المثال أعلى, عن طريق أسناد قيمة شرط وهي WHERE name='bilal' إلى الأستعلام. إذا لم يتم استخدام Loop يتم ارجاع صف واحد فقط تحدده في الأستعلام عن طريق وضع شرط مثل هذا الكود. $sql = "SELECT id, name, FROM users WHERE id=1"; <?php $conn = new mysqli("localhost", "username", "password", "database"); $sql = "SELECT id, name FROM users WHERE id=1"; $result = $conn->query($sql); $row = $result->fetch_assoc(); echo "id: " . $row["id"]. " - Name: " . $row["name"]; ?> لاحظ أنه استبدلنا شرط جلب البيانات عن طريق الاسم إلى id اليوزر داخل قاعدة البيانات, لأنه من الممكن تكرار الاسم ولكن لا يمكن تكرار id اليوزر, فعندها سيتم جلب صف واحد أي العضو الذي يكون له id = 1 داخل قاعدة البيانات ولو لاحظت أيضا لم نستخدم loop في المثال الأخير لأننا نقوم بجلب صف واحد وليس عدة صفوف من داخل قاعدة البيانات. جميع الأكواد المستعملة في الأمثلة هي أكواد من لغة PHP.
  21. عند نقلك للأكواد و تجريبها في بيئة عملك يجب المراعاة في نقل الأكواد إلى أن لغات البرمجة حساسة في الأحرف والكلمات و تختلف من Small Letter إلى Capital Letter. أيضا عند متابعة درس ما, يجب نقل الأكواد جيداً و تطبيقها والتأكد من مطابقة الكود مع الكود الذي تنقله في محررك. أنصح بمراجعة توثيق اللغة التي تتعلمها لفهم و رؤية الكلمات الخاصة باللغة و أكوادها.
  22. في Flutter هناك عدة مكتبات لأدارة الحالة في التطبيق من أشهرها: 1- Bloc 2- Provider 3- استخدام SetState(). 4- Redux 5- Fish-Redux 6- GetIt 7- MobX 8- Binder 9- GetX 10- RiverPood يمكنك زيارة الموقع الرسمي لفريم وورك Flutter و مراجعة جميع مكتبات إدارة الحالة.
  23. ما في طريقة غير بوابة الدفع, وموجود أيضا بوابات كثيرة تدعم الخليج والبوابات المذكورة أيضا تدعم الخليج. بالنسبة للسيناريو يجب أن تأخذ و تفكر بأفضل طريقة مربحة لك.
  24. في أكثر من سيناريو يتم استخدامه. أولا: ممكن يكون صاحب التطبيق له نسبة معينة من الارباح على كل طلب و لا يتدخل في عملية التوصيل أو لا. ثانيا: ممكن يتم الأتفاق مع أصحاب المطاعم بتوزيع الأرباح عليهم شهريا أو اسبوعيا وتبقى الأموال في محفظتك ولكن معروف لكل صاحب مطعم كم أمواله. حسب الألية المفضلة لديك. كيف ممكن أن تنفذ الفكرة وهي كالتالي: يكون لك حساب في أحدى بوابات الدفع المشهورة مثل Stripe, 2checkout, PayPal وتقوم باستخدام SDK الخاص بكل بوابة دفع في تطبيقك, هذه البوابات تستخدم البطاقات الأئتمانية للدفع عن طريقها. كل يوابة دفع لها رسوم تختلف عن الأخرى, عندما يقوم الزبون بالدفع تنتقل الأموال إلى حسابك في هذه البوابة وأنت تقوم بتوزيع الأرباح بعدها من خلال الألية المستخدمة لديك في توزيع الأرباح.
  25. ممكن تخبرني بأي لغة تريد عمل fetch لانه لأي لغة كود خاص فيها.
×
×
  • أضف...