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

مسعود زاهي

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

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

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

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

    1

أجوبة بواسطة مسعود زاهي

  1. بتاريخ 5 ساعة قال ميلاد بن صالح:

    باستخدام الدوال والمصفوفات اكتب برنامج يقوم بقراءة بيانات 10 سيارات ( الاسم ، رقيم السيارة ، السعر اللون)، ومن ثم :

    1-كتابة دالة لقراءة بيانات السيارات ودالة أخرى لطباعتها.

    2-كتابة دالة لإيجاد عدد السيارات التي يزيد سعرها عن 20000

    3- كتابة دالة لطباعة بيانات سيارة ما بإدخال اسم ولون السيارة .

    4- كتابة دالة للبحث عن سيارة ما بادخال رقم السيارة وطباعة بياناتها إن وجدت

    5- كتابة دالة تقوم بترتيب البيانات ترتيباً تصاعديا من الأعلى سعراً إلى الأقل سعراً

    6- كتابة دالة تقوم بطباعة عدد السيارات التى تحمل اسم معين يدخله المستخدم.

    مرحبا ميلاد،

    نحن لا نقوم بحل التمارين الخاصة بكم ولكن نقوم بمساعدتكم على حلها وتصحيح الأخطاء إن وُجدت.

    اتبع هذه الخطوات لحل هذا التمرين:

    • قم بتعريف هيكل بيانات Car يحتوي على الخصائص التالية: name (اسم السيارة)، carNumber (رقم السيارة)، price (سعر السيارة)، color (لون السيارة).
    • قم بتعريف ثابت SIZE ليكون حجم المصفوفة التي ستحتوي على بيانات السيارات.
    • قم بتعريف دالة readCarsData لقراءة بيانات السيارات من المستخدم. في هذه الدالة، استخدم حلقة for للتكرار على جميع عناصر المصفوفة واستخدم العبارات cin لقراءة البيانات من المستخدم.
    • قم بتعريف دالة printCarsData لطباعة بيانات السيارات. في هذه الدالة، استخدم حلقة for للتكرار على جميع عناصر المصفوفة واستخدم العبارات cout لطباعة البيانات.
    • قم بتعريف دالة countCarsWithPriceAbove لإيجاد عدد السيارات التي يكون سعرها أعلى من 20000. في هذه الدالة، استخدم حلقة for للتكرار على جميع عناصر المصفوفة واستخدم شرط if لزيادة العداد بواحد إذا كان سعر السيارة أعلى من 20000.
    • قم بتعريف دالة printCarDataByNameAndColor لطباعة بيانات سيارة معينة بناءً على اسم السيارة ولونها. في هذه الدالة، استخدم حلقة for للتكرار على جميع عناصر المصفوفة واستخدم الشروط if للتحقق مما إذا كانت السيارة تطابق الاسم واللون المعطين كمدخل، وإذا كانت متطابقة، قم بطباعة بياناتها.
    • قم بتعريف دالة sortCarsByPrice لترتيب بيانات السيارات ترتيبًا تصاعديًا بناءً على السعر. يمكنك استخدام أحد خوارزميات الفرز المعروفة مثل فرز الاندماج (Merge Sort) أو فرز الاختيار (Selection Sort) أو أي خوارزمية فرز تناسب احتياجاتك.
    • قم بتعريف دالة countCarsByName لإحصاء عدد السيارات التي تحمل اسمًا معينًا يتم إدخاله بواسطة المستخدم. في هذه الدالة، استخدم حلقة for للتكرار على جميع عناصر المصفوفة واستخدم شرط if لزيادة العداد بواحد إذا كان اسم السيارة يطابق الاسم المعطى.
    • قم بكتابة main دالة لتجميع الأمور معًا. في الدالة main، قم بتعريف مصفوفة من السيارات واستخدم الدوال التي تم تعريفها لقراءة البيانات، طباعتها، إيجاد عدد السيارات بأسعار أعلى من 20000، طباعة بيانات سيارة معينة بناءً على الاسم واللون، وترتيب البيانات ترتيبًا تصاعديًا بناءً على السعر.

    بالتوفيق.

    • شكرًا 1
  2. بتاريخ 19 دقائق مضت قال Waleed Alomar:

    السلام عليكم

    كنت احاول تنزيل مكتبة pandas ومكتبة openpyxl

    ولكن اثناء التنزيل انطفئ الحاسوب وعند اعادة تشغيله حاوبت تنزيله مرة اخرى ولكن ظهر لي هذا الخطا ولم اعرف ما السبب وما هو الحل

    IMG_20230605_230646_558.jpg

    عليكم السلام مرحبا وليد،

    خطأ "Read timed out" يحدث عندما يستغرق عملية تنزيل الحزمة باستخدام أداة pip وقتًا طويلاً جدًا للاتصال بمصدر التنزيل. هذا الخطأ قد يحدث بسبب اتصال ضعيف بالإنترنت أو تأخر في استجابة خادم التنزيل.

    في حالة حدوث الخطأ مرة أخرى حاول استعمال بيئة افتراضية جديدة وقم بتنزيل التطبيقين فيها.

    بالتوفيق.

    • أعجبني 1
  3. بتاريخ 2 دقائق مضت قال الاء محمود:

    import docx

    from pathlib import Path

    doc = docx.document(Path.home()/ Path('G:/python cource','project','word','academy_1.docx'))

    print(len(docx.paragraph()))

    رسالة الخطأ

    "G:\python cource\project\Word\venv\Scripts\python.exe" "G:\python cource\project\Word\ReadWord.py" 
    Traceback (most recent call last):
      File "G:\python cource\project\Word\ReadWord.py", line 2, in <module>
        import docx
      File "G:\python cource\project\Word\venv\Lib\site-packages\docx.py", line 30, in <module>
        from exceptions import PendingDeprecationWarning
    ModuleNotFoundError: No module named 'exceptions'

    Process finished with exit code 1

    مرحبا آلاء،

    الخطأ

     ModuleNotFoundError: No module named 'exceptions'

    يشير لعدم تثبيت الحزمة python-docx في البيئة التي تعملين عليها.

    للتأكد من أن الحزمة python-docx مثبتة يرجى كتابة الأمر:

    pip show python-docx

    إذا كان هذا السؤال تابع لإحدى الدورات الخاصة بالأكاديمية فرجاءً طرحه تحت فيديو الدرس وشكراً.

    بالتوفيق.

  4. بتاريخ 7 دقائق مضت قال Aoumeur Khiat:

    ماهي الرخص التي تتوافق مع GPL ؟

    إذا كان لديك برنامج يستخدم رخصة GPL، فإن ذلك يعني أن أي برنامج يتم إنشاؤه من خلال استخدام الشفرة المصدرية لهذا البرنامج يجب أن يتبع نفس الرخصة. وبمعنى آخر، فإن أي شخص يقوم بتوزيع البرنامج المشتق - الذي تم إنشاؤه باستخدام البرنامج الأصلي - يجب أن يوفر الشفرة المصدرية للبرنامج المشتق ويجب أن يتم توزيعه تحت نفس رخصة GPL.

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

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

    • أعجبني 1
  5. بتاريخ 3 دقائق مضت قال Aoumeur Khiat:

    ما معنى التوافق مع GPL ؟

    توافق مع GPL يعني الالتزام بشروط رخصة البرمجيات الحرة العامة GNU (GNU General Public License) التي تنظم استخدام وتوزيع البرمجيات ذات المصدر المفتوح.

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

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

    • أعجبني 1
  6. بتاريخ 18 دقائق مضت قال سماح يحياوي:

    السلام عليكم لقد قمت بنثبيت lightGBMو لكن عند استعماله يظهر خطأ انه غير مثبت مع العلم ان استعمل pycharmو windows 7 و python 3.7وشكرا

    وعليكم السلام،

    يبدو أن الخطأ الذي تواجهه يرجع إلى عدم وجود lightGBM في المسار الصحيح الذي يستخدمه Python عند البحث عن المكتبات المثبتة.

    لحل هذه المشكلة، يمكنك محاولة الخطوات التالية:

    التأكد من أنك قمت بتثبيت lightGBM باستخدام pip بنجاح. يمكنك التحقق من ذلك باستخدام الأمر التالي في موجه الأوامر:

    pip show lightgbm

    سيتم عرض معلومات حول lightGBM ومسار تثبيته.

    كما تأكد من أنك تقوم بالعمل على البيئة التي ثبت فيها lightGBM سواء البيئة الافتراضية أو البيئة العامة.

    بالتوفيق.

  7. بتاريخ الآن قال أبو مهيب:

    شاكر لشرحك الواضح
    حسنا في حال كنت اريد انشاء موقع ويب او تطبيق ويب وغيرها هل أحتاج لتعلم لغة أخرى مثل JavaScript او HTML5
    ام لغة Python تجمع كل شيء ويكفي أن اتعلمها وحدها ؟ .

     

    على الرغم من أن بايثون يوفر الكثير من المكتبات والإطارات لتطوير تطبيقات الويب، إلا أنه من الضروري أن تتعلم لغات الويب الأخرى مثل HTML وCSS و JavaScript لتطوير تطبيقات الويب بشكل كامل.

    • HTML هي لغة توصيف النص الهيكلي والمحتوى لصفحات الويب وتستخدم لإنشاء العناصر المختلفة مثل الصور والنصوص والجداول وغيرها.
    • CSS هي لغة تنسيق العرض وتستخدم لتعديل تنسيق صفحات الويب وجعلها أكثر جاذبية وأناقة.
    • JavaScript هي لغة برمجة الويب الأساسية وتستخدم لجعل صفحات الويب تفاعلية وديناميكية ولإضافة العناصر المختلفة مثل الحركة والتحقق من البيانات وغيرها.

    بالتوفيق.

    • أعجبني 1
  8. بتاريخ 23 دقائق مضت قال أبو مهيب:

    هل اللغة تدعم الويب أبلكيشن ؟

    نعم، بايثون تدعم تطوير تطبيقات الويب. يمكن استخدام بايثون لإنشاء مواقع الويب وتطبيقات الويب باستخدام العديد من الإطارات والمكتبات المختلفة المتاحة في بايثون، مثل Django و Flask و Pyramid و CherryPy وغيرها.

    باستخدام إطارات العمل الخاصة بـ Python، يمكن للمطورين بسهولة إنشاء مواقع الويب التفاعلية، و تطبيقات الويب، وحتى الواجهات البرمجية للتطبيقات (APIs)، وغير ذلك الكثير. ويمكن استخدام بايثون مع تقنيات الويب الحديثة مثل HTML5 وCSS3 وJavaScript وغيرها.

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

    كما يمكنك التعرف على Flask أيضا من الرابط.

    وأيضا توفر أكاديمية حسوب دورة تطوير التطبيقات باستخدام لغة Python يمكنك التعرف عليها من الرابط.

    بالتوفيق.

  9. عندما تتعلم ال HTML و CSS و JavaScript، فإنك تمتلك أساسًا قويًا لتطوير مواقع الويب الأساسية. ولكن هناك الكثير من الأشياء التي يمكنك القيام بها لتحسين مهاراتك وإثراء خبراتك في هذا المجال. وهنا بعض الاقتراحات:

    • تعلم إطارات العمل (Frameworks): هناك الكثير من الإطارات الشهيرة مثل React و Angular و Vue.js. يمكنك تعلمها واستخدامها لتطوير تطبيقات الويب المتقدمة.
    • تعلم لغات البرمجة الخلفية (Backend programming languages): تعلم لغات البرمجة الخلفية مثل PHP و Ruby و Python و Node.js. هذه اللغات تستخدم لتطوير المنطق والوظائف التي تحدث في الخلفية من الموقع.
    • تعلم قواعد البيانات (Databases): قواعد البيانات مهمة لتخزين البيانات في المواقع، ويمكنك تعلم SQL و MySQL و MongoDB لتطوير تطبيقات الويب الأكثر تعقيدا.
    • تعلم تصميم المواقع وتجربة الأدوات (Web Design and Tools): يمكنك تعلم تصميم المواقع واستخدام الأدوات المختلفة مثل Adobe Photoshop و Sketch و Figma وغيرها لتصميم مواقع جميلة وفعالة.
    • بناء مشاريع الويب الكاملة (Full-stack web projects): يمكنك بناء مشاريع الويب الكاملة لتطبيق ما تعلمته من HTML و CSS و JavaScript ولغات البرمجة الخلفية وقواعد البيانات. هذا سيساعدك على تعزيز خبراتك وإثبات قدراتك.
    • البدء في التدوين أو إنشاء الفيديوهات لمشاركة ما تعلمته وخبراتك مع المجتمع الأوسع وتطوير مهاراتك في التواصل والشرح.
    • الانضمام إلى المجتمعات البرمجية (Coding communities): يمكنك الانضمام إلى المجتمعات البرمجية
  10. بتاريخ 38 دقائق مضت قال بيشوى اميل شفيق2:

    رسالة خطاء فى ديجانجو ارجو المساعدة فى الحل مرفق الملف مضغوط الخطا عند محاولة تشغيل السرفر py manage.py31_12_2022.rar

    مرحبا شفيق،

    أرفق صورة الخطأ الذي يظهر لك عند محاولة تشغيل السرفر حتى نستطيع مساعدتك.

    بالتوفيق.

  11. بتاريخ 13 دقائق مضت قال Zeina Almakdisi:

    شكرا لك 

    لا أقصد المشكلة في ذلك 

    لامشكلة في استخدام النقطة ضمن اطار دجانغو لم اصادف أي مشكلة في الفورمات لدي.

    مشكلتي تنحصر عند محاولة استدعاء احد البارمترات الذي قمت بمعالجته باستخدام تقنية autocomplete 

    ماهي الطريقة؟ 

     

    @مسعود زاهي أرجو المساعدة اذا أمكن ..

    مرحبا زينة،

    يجب عليك إضافة الروابط التي أشرت إليها في الإجابة السابقة:

    urlpatterns = [
        url(
            r'^center-autocomplete/$',
            CenterAutocomplete.as_view(),
            name='center-autocomplete',
        ),
        url(
            r'^doctor-autocomplete/$',
            DoctorAutocomplete.as_view(),
            name='doctor-autocomplete',
        ),
    ]

    وفي حالة قمت بإضافة الروابط ومازالت المشكلة قائمة قومي بمشاركة الشيفرة الخاصة بك على شكل ملف مضغوط حتى نتمكن من مساعدتك أكثر ومعرفة مصدر الخطأ.

    تحياتي.

     

  12. توجد عدة طرق لحذف المسافات من السلاسل النصية:

    • يمكنك استخدام التابع Replace
    str = str.Replace(" ", string.Empty);

             حيث str هو السلسلة النصية.

    • عن طريق انشاء سلسلة نصية جديدة خالية من المسافات باستخدام الشيفرة التالية:
      string new_string = new string(str.ToCharArray()
              .Where(c => !Char.IsWhiteSpace(c))
              .ToArray());

       

  13. بتاريخ 6 دقائق مضت قال Zeina Almakdisi:

    حاول تطبيق هذه الخطوات كثيرا يتم حفظها

    لكن لا يسمح له بتسجيل الدخول

     

    قد يكون شيء آخر يمنع الأدمن من الدخول.

    يمكنك معرفة كل المستخدمين الذين يملكون صلاحيات الأدمن وهم في حالة نشطة ( is_active=True) من خلال سطر الأوامر:

    python manage.py shell
    >>> from django.contrib.auth.models import User # نقوم باستدعاء نموذج المستخدمين
    >>> User.objects.filter(is_staff=True).values("username", "is_active") # معرفة المستخدمين الذي يملكون صلاحيات الأدمن

     

    • أعجبني 1
  14. بتاريخ الآن قال Zeina Almakdisi:

    شكرا لاهتمامك..

    لا مشكلة في ذلك نجح في تسجيل الدخول 

    لكنه مااحتاجه هو جعل الادمن يقوم بانشاء ادمن جديد

     

    لإنشاء أدمن جديد عن طريق واجهة الأدمن عليك بإنشاء مستخدم جديد بعدها التعديل عليه واختيار Staff status في حالة توفرها لديك أو اختيار 

    Superuser status إذا كنت تريدين جعله كسوبر أدمن.

     

    Capture.PNG

    • أعجبني 1
  15. بتاريخ 2 دقائق مضت قال Zeina Almakdisi:

    الادمن الجديد يضاف الى القاعدة بشكل صحيح مع الصلاحيات 

    لكن عند محاولة تسجيل الدخول يظهر :

    علما: انني متأكدة من ادخال البيانات بشكل صحيح 

    error.png

    مرحبا زينة،

    قومي بإنشاء أدمن جديد باستخدام الأمر:

    python manage.py createsuperuser

    وجربي الدخول به، وأخبرينا بالنتيجة.

    • أعجبني 1
  16. بتاريخ 3 دقائق مضت قال Zeina Almakdisi:

    مرحبا..

    ضمن اطار عمل دجانغو عملت على تقسيم انواع المستخدمين عند تسجيل الدخول 

    وجعل لكل نوع مستخدم صلاحيات مختلفة

    قبل التقسيم كنت استطيع من خلال صفحة الادمن اضافة ادمن جديد ومنحه صلاحيات محددة لكن بعد التقسيم 

    (ظهرت مشكلة في عدم قدرة الادمن الجديد على تسجيل الدخول  )

    علما لايوجد أي خطأ في تسجيل باقي المستخدمين

    هل توجد تعليمة لم اقم بها؟؟

    class User(AbstractUser):
        is_superuser=models.BooleanField('is_superuser',default=False)
        is_Pharmacy=models.BooleanField('Is owner pharmacy',default=False)
        is_Info_Patient=models.BooleanField('Is patient',default=False)
        is_Hospital=models.BooleanField('Is owner hospital',default=False)
        is_Clinic=models.BooleanField('Is owner clinic',default=False)
        is_Health_Center=models.BooleanField('Is owner center',default=False)
    

    Views.py:

     

    
    def signup(request):
        form= SignUpForm()
        if request.method == 'POST':
            form = SignUpForm(request.POST)
            if form.is_valid():
                user=form.save()
                username=form.cleaned_data.get('username')
                password=form.cleaned_data.get('password')
                user=authenticate(request,username=username,password=password)
    
                auth_login(request , user)
            return redirect('index:medical_index')
        else:
            form=SignUpForm()
        return render(request, 'user/signup.html',{
            'form':form
        })

     

    1111111111111111111111111111111.png

    مرحبا زينة،

    ماهو الخطأ الذي يظهر لك عند محاولة الدخول باستخدام الأدمن الجديد ؟

     

    • أعجبني 1
  17. بتاريخ 4 ساعة قال إبراهيم أحمد3:

    السلام عليكم.
    المشكلة في هذا الكود أنه كان يشغل الصوت yes.wav في حال تحقق الشرط الموجود في دالة onsend حتى قمت بإضافة الشرط الثاني في حال كانت الإجابة خطأ, أصبح الصوتَيْن لا يعملان.
    الكود:
    ```

    import wx
    import winsound
    
    enletters= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    
    class len(wx.Frame):
        def __init__(self, parent):
            super(len,self).__init__(parent,-1, title= 'النظام التعليمي, الأحرف الإنجليزية المرتبة')
            self.p = wx.Panel(self,-1)
            self.lettern= (0)
            self.letter= (enletters[self.lettern])
            wx.StaticText(self.p, -1, "الإجابات: ")
            self.verify = wx.TextCtrl(self.p, -1, style=wx.TE_READONLY+wx.TE_MULTILINE+wx.HSCROLL)
    
            self.wt= wx.StaticText(self.p, -1, f"اكتب حرف  {self.letter}  ")
            self.write = wx.TextCtrl(self.p, -1)
            self.write.SetFocus()
    
            self.send= wx.Button(self.p, -1, "إرسال الإجابة")
            self.send.Bind(wx.EVT_BUTTON, self.onsend)
    
            self.Show()
    
        def onsend(self, event):
            self.result= self.write.GetValue()
            if self.result == self.letter:
                self.verify.write(f'صحيح {self.letter}')
                winsound.PlaySound('data\yes.wav', 1)
                if self.lettern == 25:
                    self.lettern= (0)
                else:
                    self.lettern= self.lettern+1
    
                self.letter= (enletters[self.lettern])
                self.wt.SetLabel(f"اكتب حرف {self.letter} ")
                self.write.SetFocus()
                self.write.SetValue("")
    
            if self.result != self.letter:
                self.verify.write(f'خطأ {self.letter}')
                winsound.PlaySound('data\no.wav', 1)
                self.write.SetFocus()
                self.write.SetValue("")
    
    app = wx.App()
    len(None)
    app.MainLoop()


    ```

    مرحبا ابراهيم،

    سبب عدم عمل الصوت هو المسار الذي وضعته لملف الصوت:

    winsound.PlaySound('data\yes.wav', 1)

    إذ يجب عليك كتابته على الشكل التالي:

    winsound.PlaySound('data\\yes.wav', 1)

    كما يجب عمل elif في الشرط الثاني:

    if self.result != self.letter: #هنا
     
    elif self.result != self.letter: # الأصح

    بالتوفيق.

    • أعجبني 1
  18. بتاريخ 14 دقائق مضت قال علي الكاسر:

    لدي ثلاثه جداول في قاعدة البيانات
    الجدول الاول جدول المستخدمين users
    ويتكون من الاعمده id و name وتوجد بداخله البيانات التاليه
    name | id
    ali | 1
    ahmed | 2
    khaled | 3
    salem | 4
    الجدول الثاني جدول الحضر block وتوجد بداخله الاعمده والبيانات التاليه
    عمود block_id وعمود user1 لتخزين اي دي المستخدم الذي قام بالحضر وعمود user2 لتخزين اي دي المسخدم المحضور
    وهذه بيانات الجدول
    user2 | user1 | block_id
    3 | 1 | 1
    4 | 1 | 2
    الجدول الثالث جدول الدردشه chat وفيه الاعمده التاليه
    عمود chat_id وعمود user لتخزين اي دي المستخدم المرسل للرساله وعمود msg لتخزين نص الرساله
    وهذه بيانات الجدول وطبعا هذا شات عام وليس خاص
    msg | user | chat_id
    hello | 4 | 1
    good morning | 3 | 2
    welcome | 2 | 3
    i love you | 1 |4
    يتضح من بيانات الجدولين الاولين ان المستخدم رقم 1 قام بحضر المسخدمين رقم 3 و 4
    الان اريد جملةالاستعلام لعرض رسائل الشات بحيث لا تظر رسائل المستخدمين المحجوبين ورجاءا لا احد يأتي ويكتب جملة الاستعلام تبع الاساسيات وحديثي التعلم هذه

    لدي ثلاثه جداول في قاعدة البيانات
    الجدول الاول جدول المستخدمين users
    ويتكون من الاعمده id و name وتوجد بداخله البيانات التاليه
    name | id
    ali | 1
    ahmed | 2
    khaled | 3
    salem | 4
    الجدول الثاني جدول الحضر block وتوجد بداخله الاعمده والبيانات التاليه
    عمود block_id وعمود user1 لتخزين اي دي المستخدم الذي قام بالحضر وعمود user2 لتخزين اي دي المسخدم المحضور
    وهذه بيانات الجدول
    user2 | user1 | block_id
    3 | 1 | 1
    4 | 1 | 2
    الجدول الثالث جدول الدردشه chat وفيه الاعمده التاليه
    عمود chat_id وعمود user لتخزين اي دي المستخدم المرسل للرساله وعمود msg لتخزين نص الرساله
    وهذه بيانات الجدول وطبعا هذا شات عام وليس خاص
    msg | user | chat_id
    hello | 4 | 1
    good morning | 3 | 2
    welcome | 2 | 3
    i love you | 1 |4
    يتضح من بيانات الجدولين الاولين ان المستخدم رقم 1 قام بحضر المسخدمين رقم 3 و 4
    الان اريد جملةالاستعلام لعرض رسائل الشات بحيث لا تظهر رسائل المستخدمين المحضورين للمستخدمين الذين حضروهم ورجاءا لا احد يأتي ويكتب جملة الاستعلام تبع الاساسيات وحديثي التعلم هذه

    SELECT * FROM  chat  WHER user != 3 and user ! = 4

    هذه الجمله مليت من تكرارها وانا فاهمها وهذه من الاساسيات ، اريد جمله استعلاميه ترجع للمستخدم الزائر جميع الرسائل ماعدا رسائل المستخدمين الذين قام بحضرهم اعتمادا على الجداول الثلاثه، واذا لم يكن هناك جملة استعلاميه مباشره تعمل هذا، فكيف اقوم بهذا الامر واخفي رسائل المستخدم المحضور عن المستخدم الحاضر له. 

     

    مرحبا علي،

    للحصول على الرسائل الموجودة في الجدول chat بدون رسائل المحضورين يكفي عمل الإستعلام الآتي:

    SELECT * FROM chat WHERE user not in (SELECT user2 from block WHERE user1=user_id)
    /* user_id: هو الايدي الخاص بالمستخدم الحالي */

    بالتوفيق.

    • شكرًا 1
  19. بتاريخ 12 دقائق مضت قال Zeina Almakdisi:

    مرحبااا 

    لدي فورم تسجيل ضمن صفحة Html يوجد سكربت يقوم بالحصول على موقع المستخدم 

             <script>
              var x = document.getElementById("demo");
          
              function getLocation() {
                if (navigator.geolocation) {
                  navigator.geolocation.getCurrentPosition(showPosition);
                } else { 
                  x.innerHTML = "Geolocation is not supported by this browser.";
                }
              }
              
              function showPosition(position) {
                x.innerHTML = "Latitude: " + position.coords.latitude + 
                "<br>Longitude: " + position.coords.longitude;
              }
              
              </script>  

    احاول تمرير القيم الى المربع تلقائيا (الصورة لتوضيح مااحاول القيام به)

        <div class="col-md-6 form-group mt-3 mt-md-0">
          <input  class="form-control" id="imagee" placeholder="imagee" {{form_hospital.imagee}}
      <br>
    
            
          <input type="text" name="latitude" value=""  {{location.lat}}//// احتاج تمرير قيمة Latitude هنا 
          بدل من طباعتها على الشاشة
         <input type="text" name="longitude" value="" {{location.lng}}//// احتاج تمرير قيمة Longitude هنا 
          بدل من طباعتها على الشاشة

    33333333.png

    مرحبا زينة،

    يجب أولا إعطاء معرف id خاص لكل حقل:

    <input id="latitude" type="text" name="latitude" value=""> 
          
    <input id="longitude" type="text" name="longitude" value=""> 
         

    ثم ملأ هذه الحقول في الدالة showPosition على الشكل التالي:

    function showPosition(position) {
      x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude;
      document.getElementById("latitude").value= position.coords.latitude;
      document.getElementById("longitude").value= position.coords.longitude;
    }

    بالتوفيق.

  20. بتاريخ 1 ساعة قال إبراهيم أحمد3:

    مرحبا.
    أنا أستخدم مكتبة shelve للتشفير.
    أقوم بتشفير ملف يحتوي على الأحرف الانجليزية, كل سطر فيه حرف.
    الكود:

    import shelve
    
    
    enletters = []
    with open("enletters.txt", encoding="utf-8") as file:
        for line in file:
            line = line.strip("\n")
            enletters.append([line[0], line[1:]])
    
    
    with shelve.open("enletters") as data:
        data["enletters"] = enletters


    عندما أقوم بطباعة القائمة, تظهر الحروف مع رموز غريبة.
    الكود:
    ```

    import shelve
    
    with shelve.open("data/enletters/enletters") as enldata:
        enletters = enldata["enletters"]
    print(enletters)


    ```
    النتيجة:

    [['a', ''], ['b', ''], ['c', ''], ['d', ''], ['e', ''], ['f', ''], ['g', ''], ['h', ''], ['i', ''], ['j', ''], ['k', ''], ['l', ''], ['m', ''], ['n', ''], ['o', ''], ['p', ''], ['q', ''], ['r', ''], ['s', ''], ['t', ''], ['u', ''], ['v', ''], ['w', ''], ['x', ''], ['y', ''], ['z', '']]


    حاولت طباعة كلمات, كل سطر فيه كلمة, المشكلة في الكلمات أنه يظهر أول حرف, وبعدها يضع قوس ويظهر بقية حروف الكلمة.
    مثل:
    [['a', 'xe'], ['b', 'anana'], ['c', 'at'], ['d', 'og'], ['e', 'gg'], ['f', 'lower'], ['g', 'round'], ['h', 'uman'], ['j'
    ['b', 'anana'] هي بالأصل banana.

    مرحبا ابراهيم،

    هل يمكنك مشاركة الملف الذي تريد تشفيره لتجريب الشيفرة ؟

    شكرا لك.

  21. بتاريخ الآن قال Zeina Almakdisi:

    قمت بوضعهم ضمن AppointmentForm

    
    class AppointmentForm(forms.ModelForm):
       class Meta: 
            model = Appointment
            fields = ('appointment_d','appointment_time',
           'note','image','center','doctor')

     

    الأمر يتطلب مهارات متقدمة في برمجة الويب. لأن الفلترة تتم بصفة آنية أي يجب استخدام الجافاسكربت للإتصال بالسرفر وتمرير اسم المركز المختار والسرفر يقوم بإرجاع قائمة الأطباء المنتمين له.

    أسهل طريقة للوصول لذلك هو باستخدام المكتبة django-autocomplete-light  على الشكل التالي:

    1- تثبيت المكتبة: 

    pip install django-autocomplete-light

    2- إضافة المكتبة إلى ملف الإعدادات في INSTALLED_APPS:

    'dal',
    'dal_select2',
    'django.contrib.admin', # ضعي المكتبات فوق هذه المكتبة

    3- تعريف دوال عرض جديدة تقوم بجلب اسماء المراكز واسماء الدكاترة:

    class CenterAutocomplete(autocomplete.Select2QuerySetView):
        def get_queryset(self):
            
            if not self.request.user.is_authenticated:
                return Center.objects.none()
    
            qs = Center.objects.all()
            
            if self.q: # هنا نقوم بفلترة النتائج الخاصة بالمراكز
                qs = qs.filter(name__istartswith=self.q) # نقوم بالفلترة باستخدام name
    
            return qs
          
    class DoctorAutocomplete(autocomplete.Select2QuerySetView):
        def get_queryset(self):
            
            if not self.request.user.is_authenticated:
                return Center.objects.none()
    
            qs = Center.objects.all()
            
            center = self.forwarded.get('center', None)
            
            if center:
                qs = qs.filter(center__id=center)   # نقوم بفلترة الدكاترة باستخدام اسم المركز
                
            if self.q:
                qs = qs.filter(name__istartswith=self.q) # 
    		
            return qs

    4- نقوم بإنشاء روابط لهذه الدوال في ملف urls.py:

    urlpatterns = [
        url(
            r'^center-autocomplete/$',
            CenterAutocomplete.as_view(),
            name='center-autocomplete',
        ),
        url(
            r'^doctor-autocomplete/$',
            DoctorAutocomplete.as_view(),
            name='doctor-autocomplete',
        ),
    ]

    5- نقوم بإضافة هذه الروابط إلى النموذج الخاص بنا وتغيير ال widget:

    class AppointmentForm(forms.ModelForm):
       class Meta: 
            model = Appointment
            fields = ('appointment_d','appointment_time',
           'note','image','center','doctor')
            widgets = {
                'center': autocomplete.ModelSelect2(url='center-autocomplete'),
                'doctor': autocomplete.ModelSelect2(url='doctor-autocomplete', forward=['center'])
            }

    في حالة لم تشتغل معك الشيفرة قومي بإرفاق مشروعك على شكل ملف مضغوط وسوف نقوم بمساعدتك للوصول إلى النتيجة التي ترغبين بها.

    بالتوفيق.

    • شكرًا 1
  22. بتاريخ 4 دقائق مضت قال Zeina Almakdisi:

    مرحبا لدي فورم الحصول على موعد 

    من ضمن الفورم يوجد مربع اول اختيار اسم المركز والثاني اختيار الدكاترة الموجودين ضمن هذا المركز فقط

    احتاج الى اظهار اسماء الدكاترة الموجودين ضمن المركز المختار فقط

    هل يجب ان اقوم بالتعديل على القاعدة ضمن Postgresql؟؟؟

     

    /////models.py
    
    class Appointment(Info_Patient):
         
          image         = models.ImageField(_("Attach medical documents"),blank=True,null=True)
          note         =models.TextField(_("you can send a Note:"),max_length=250,blank=True,null=True)
          appointment_d=models.DateField(_("Date"), default=datetime.now,max_length=100)
          appointment_time= models.TimeField(_("Time:"), default=datetime.now,max_length=100)
    
          center =models.ForeignKey('accounts.Center',verbose_name=_("Choose health center"),   on_delete=models.CASCADE, unique=False)
    
          doctor =models.ForeignKey('accounts.ListDoctorCenter',verbose_name=_("Choose your doctor"),   on_delete=models.CASCADE, unique=False  )
    
    
        

     

     

    def appointment(request):
        if request.method == "POST":    
            centerdoctor =ListDoctorCenter.objects.filter(Center=request.id)/////هنا حاولت ان اقوم بعمل فلترة لكن لم احصل على أي نتيجة
            appointment = AppointmentForm(request.POST, request.FILES)
            if appointment.is_valid():
                appointment.instance.user = request.user
                appointment.save()
                messages.success(request, ('Your websit was successfully added!'))
            else:
                HttpResponse(request, 'Error saving form')
            return redirect("patient:requestt",{'centerdoctor':centerdoctor,})
    
        appointment = AppointmentForm()
        add = Appointment.objects.all()
        return render(request, 'appointment.html',{
            'appointment':appointment,
            'add':add,
       })

     

    111.png

    مرحبا زينة،

    هل الحقول Center و Doctor ضمن النموذج AppointmentForm أو معمولين مباشرة في القالب؟

    تحياتي.

     

    • أعجبني 1
  23. بتاريخ 7 دقائق مضت قال Zeina Almakdisi:
    function initMap() {
      map = new google.maps.Map(document.getElementById("map"), {
        zoom: 8,
        center: { lat: 32.397, lng: 36.644 },
        mapTypeControl: false,
      });
    
      
    
        {% for location_center in Marker %}
        addMarker({lat: {{location_center.lat}},lng:{{location_center.lng}}});
        {% endfor %}
    \\\\\\أقوم بجلب المواقع من القاعدة 
    
    
     
      function addMarker(coords){
        var icons;
        {% for location_center in Marker %}
        
        if("{{location_center.Specialization}}"=='Pharmacy' ){
         icons= "{% static 'medical/assets/img/hero-bg.jpg' %}";
        }
       else if ("{{location_center.Specialization}}"== 'Hospital'){
        icons= "{% static 'medical/assets/img/about.jpg' %}";
      }
      else if ("{{location_center.Specialization}}"== 'Clinic'){
        icons="{% static 'medical/assets/img/about.jpg' %}";
      }
      else if ("{{location_center.Specialization}}"== 'Health_Clinic'){
        icons= "{% static 'medical/assets/img/logoph.png' %}"
      }
    
      
        var marker=new google.maps.Marker({
          position:coords,
          type: "info",///////Specialization
          map:map,
       
        }); 

     

    عليك بتغيير الدالة addMarker على الشكل التالي:

    /* نقوم بتمرير متغير جديد إلى الدالة  */
    function addMarker(coords, specialization){
        var icons;
    
        if( specialization =='Pharmacy' ){
         icons= "{% static 'medical/assets/img/hero-bg.jpg' %}";
        }
         else if ( specialization == 'Hospital'){
          icons= "{% static 'medical/assets/img/about.jpg' %}";
        }
        else if (specialization == 'Clinic'){
          icons="{% static 'medical/assets/img/about.jpg' %}";
        }
        else if (specialization == 'Health_Clinic'){
          icons= "{% static 'medical/assets/img/logoph.png' %}"
        }
    
      
        var marker=new google.maps.Marker({
          position:coords,
          type: "info",///////Specialization
          map:map,
          icon: icons
        }); 
     }

    واستدعاءها على الشكل:

    {% for location_center in Marker %}
    	addMarker({lat: {{location_center.lat}},lng:{{location_center.lng}}} , "{{location_center.Specialization}}");
    {% endfor %}

    بالتوفيق.

    • شكرًا 1
  24. بتاريخ 6 دقائق مضت قال Zeina Almakdisi:

    مازالت تظهر الصورة الاولى للجميع 

    هذه:

    if({{location_center.Specialization}}='Pharmacy' ){
         icons= "{% static 'medical/assets/img/phar-bg.jpg' %}";
        }

    في هذه الحالة عليك مراجعة الشيفرة بشكل كامل. مافائدة المتغير Marker هل هو عبارة عن قائمة (list) ؟ أو عبارة عن قيمة وحيدة. ومتى يتم استدعاء الدالة addMarker في القالب.

    • أعجبني 1
  25. بتاريخ 2 دقائق مضت قال Zeina Almakdisi:

    مرحبا

    لدي خريطة من google maps api وقاعدة بيانات أاخذ منها المواقع واضعهم على الخريطة 

    المشكلة انني احاول ان اجعل لكل اختصاص علامة مميزة (للصيدلة علامة تختلف عن المشفى وهكذا...) 

    عند التنفيذ يظهر صورة واحدة للكل 

    مقطع الشفيرة الخاص بإدراج الصورة:

     

      function addMarker(coords){
        var icons;
        {% for location_center in Marker %}
        
        if({{location_center.Specialization}}='Pharmacy' ){
         icons= "{% static 'medical/assets/img/phar-bg.jpg' %}";
        }
       else if ({{location_center.Specialization}}= 'Hospital'){
        icons= "{% static 'medical/assets/img/hos.jpg' %}";
      }
      else if ({{location_center.Specialization}}= 'Clinic'){
        icons= "{% static 'medical/assets/img/logoph.jpg' %}";
      }
      else if ({{location_center.Specialization}}= 'Health_Clinic'){
        icons= "{% static 'medical/assets/img/healt.png' %}"
      }
    
      {% endfor %}
        var marker=new google.maps.Marker({
          position:coords,
          type: "info",
          map:map,
          icon:icons,
     
        }); 

    مايظهر في ل console:

     

    ssss.png

    مرحبا زينة،

    حاولي وضع القيمة {{location_center.Specialization}} بين " " واستعمال == بدل = على الشكل التالي:

    if ("{{location_center.Specialization}}" == "Hospital") 

    وأخبرينا بالنتيجة.

    • أعجبني 1
×
×
  • أضف...