דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. הסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת

הסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת

מתוזמן נעוץ נעול הועבר תכנות
48 פוסטים 5 כותבים 293 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • E eido

    @צדיק-תמים הקוד הבא זה מה שהתכוונת?

    $sqlNew = "SELECT * 
            FROM appartments 
            WHERE $where 
            AND created_at >= ?
            AND alreadyRead NOT LIKE ?
             ORDER BY created_at DESC";
    
    $sqlOld = "SELECT * 
            FROM appartments 
            WHERE $where 
            AND (created_at < ? OR alreadyRead LIKE ?)
             ORDER BY created_at DESC";
    

    וזה מסמן כנקרא

    $sql = "UPDATE appartments
    SET alreadyRead = IF(alreadyRead LIKE ?, alreadyRead, CONCAT(alreadyRead, ?))
    WHERE adId = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssi", "%".$_REQUEST['phone']."%", $_REQUEST['phone'].", ", $_REQUEST['adId']);
    
    E מנותק
    E מנותק
    eido
    כתב נערך לאחרונה על ידי
    #37

    כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

    @צדיק-תמים הקוד הבא זה מה שהתכוונת?

    $sqlNew = "SELECT *
    FROM appartments
    WHERE $where
    AND created_at >= ?
    AND alreadyRead NOT LIKE ?
    ORDER BY created_at DESC";

    $sqlOld = "SELECT *
    FROM appartments
    WHERE $where
    AND (created_at < ? OR alreadyRead LIKE ?)
    ORDER BY created_at DESC";
    וזה מסמן כנקרא

    $sql = "UPDATE appartments
    SET alreadyRead = IF(alreadyRead LIKE ?, alreadyRead, CONCAT(alreadyRead, ?))
    WHERE adId = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssi", "%".$_REQUEST['phone']."%", $_REQUEST['phone'].", ", $_REQUEST['adId']);

    @צדיק-תמים

    צדיק תמיםצ תגובה 1 תגובה אחרונה
    0
    • E eido

      כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

      @צדיק-תמים הקוד הבא זה מה שהתכוונת?

      $sqlNew = "SELECT *
      FROM appartments
      WHERE $where
      AND created_at >= ?
      AND alreadyRead NOT LIKE ?
      ORDER BY created_at DESC";

      $sqlOld = "SELECT *
      FROM appartments
      WHERE $where
      AND (created_at < ? OR alreadyRead LIKE ?)
      ORDER BY created_at DESC";
      וזה מסמן כנקרא

      $sql = "UPDATE appartments
      SET alreadyRead = IF(alreadyRead LIKE ?, alreadyRead, CONCAT(alreadyRead, ?))
      WHERE adId = ?";
      $stmt = $conn->prepare($sql);
      $stmt->bind_param("ssi", "%".$_REQUEST['phone']."%", $_REQUEST['phone'].", ", $_REQUEST['adId']);

      @צדיק-תמים

      צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      כתב נערך לאחרונה על ידי צדיק תמים
      #38

      @eido אם אין לך אפשרות לעמודת ARRAY ממש, עדיף עם טבלה נפרדת כדי שתוכל לעשות אינדקסים

      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
      טיפים

      E 2 תגובות תגובה אחרונה
      0
      • צדיק תמיםצ צדיק תמים

        @eido אם אין לך אפשרות לעמודת ARRAY ממש, עדיף עם טבלה נפרדת כדי שתוכל לעשות אינדקסים

        E מנותק
        E מנותק
        eido
        כתב נערך לאחרונה על ידי
        #39

        @צדיק-תמים אין array...
        השאלה כמה זה קריטי, זה לא יד2... לא מאמין שזה יהיה גדול בצורה משמעותית.

        תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ צדיק תמים

          @Shmuel754 כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

          כי ברגע שהוא רוצה להוציא התראה צינתוק למתעניין, התהליך של פלטור בזמן אמת הופך למשימה שלו שהוא צריך לבצע, ולכן הוא מניע את התהליך בחיפוש ורישום, תהליך חד-פעמי, שהמשך המתקשר רק שולף נתונים.

          זה לא תהליך חד פעמי, זה מתעדכן בכל הוספת/שינוי/מחיקה של מודעה. אולי לא הבנתי אותך נכון, מה מטרת הטבלה הזאת?

          @Shmuel754 כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

          נרשם למעלה שהוא מעדכן את תאריך המודעה בהתאם לתאריך שהוא רוצה לפרסם,
          והלוג של מחר זה הנתונים של היום, וכל הנושא זה המבט מלמעלה לראות את כל ההיסטוריה בסדר יורד, מבלי לנהל לוג נפרד.

          אני לא מסכים, נתונים והסטוריה זה לא אותו דבר, בתפקוד השוטף של האפליקציה אין עניין להתעסק עם ההסטוריה הסטוריה מיועדת למקרי קצה שתיארת אותם יפה, שמישהו רוצה לדעת מה היה קודם ומה אחר כך, לזה מספיק טבלאות נפרדות של הסטוריה או audit log, לא הגיוני בגלל זה לסרבל את כל המבנה של הנתונים

          S מנותק
          S מנותק
          Shmuel754
          כתב נערך לאחרונה על ידי
          #40

          @צדיק-תמים כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

          @Shmuel754 כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

          כי ברגע שהוא רוצה להוציא התראה צינתוק למתעניין, התהליך של פלטור בזמן אמת הופך למשימה שלו שהוא צריך לבצע, ולכן הוא מניע את התהליך בחיפוש ורישום, תהליך חד-פעמי, שהמשך המתקשר רק שולף נתונים.

          זה לא תהליך חד פעמי, זה מתעדכן בכל הוספת/שינוי/מחיקה של מודעה. אולי לא הבנתי אותך נכון, מה מטרת הטבלה הזאת? מעין לוג כדי שנוכל לראות בעתיד איזה התראות נשלחו ללקוח?

          אני מסתכל על זה כך,
          נכס, כוללים נתונים שאינם משתנים, לא ישוב ורחוב ולא חדרים ולא בעלים, אם זה משתנה מדובר במודעה/נכס אחר מה שמשתנה זה המחיר, ותאריך הפרסום, וזה נתונים שיש לנהל, ברור שזה מקושר למודעה וזה טבלת הפרסומים, כשאתה רושם שינוי של המודעה הכוונה כנראה לנתוני הפרסום ולא לנתוני הבסיס.
          כשהנתונים לא רלוונטים, אתה לא מוחק אותם אבל זה הופך לסוג של היסטוריה, ואם תרצה תקרא לזה לוג.

          @Shmuel754 כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

          נרשם למעלה שהוא מעדכן את תאריך המודעה בהתאם לתאריך שהוא רוצה לפרסם,
          והלוג של מחר זה הנתונים של היום, וכל הנושא זה המבט מלמעלה לראות את כל ההיסטוריה בסדר יורד, מבלי לנהל לוג נפרד.

          אני לא מסכים, נתונים והסטוריה זה לא אותו דבר, בתפקוד השוטף של האפליקציה אין עניין להתעסק עם ההסטוריה הסטוריה מיועדת למקרי קצה שתיארת אותם יפה, שמישהו רוצה לדעת מה היה קודם ומה אחר כך, לזה מספיק טבלאות נפרדות של הסטוריה או audit log, לא הגיוני בגלל זה לסרבל את כל המבנה של הנתונים

          תגובה 1 תגובה אחרונה
          0
          • E מנותק
            E מנותק
            eido
            כתב נערך לאחרונה על ידי eido
            #41

            @Shmuel754 העלת באמת טענה עם הד"ת וכו', השאלה כמה אני חייב לדאוג ללקוח לכל הסיפור הזה, זה לא משהו שסוכם מראש, ותכלס יש לוגים די מפורטים על כל פעולה של המאזין, חשבתי במוצר המוגמר לבטל את רובם כמעט, אבל אחרי הטענות שלך אולי אשאיר כמה שיכולים להיות חשובים.
            הענין שלוגים זה דבר שאפשר בקלות לשנות ולשכתב.

            תגובה 1 תגובה אחרונה
            0
            • צדיק תמיםצ צדיק תמים

              @eido אם אין לך אפשרות לעמודת ARRAY ממש, עדיף עם טבלה נפרדת כדי שתוכל לעשות אינדקסים

              E מנותק
              E מנותק
              eido
              כתב נערך לאחרונה על ידי
              #42

              @צדיק-תמים אם אני כבר עושה טבלה נפרדת שמכילה את מספר המודעה ואת המזהה של מי ששמע את המודעה, למה לא להישאר ברעיון המקורי ולעשות טבלה שתכיל במקום מספר הודעה ומזהה של מי ששמע אותה, מספר מודעה ומזהה של מי שלא שמע אותה?

              צדיק תמיםצ תגובה 1 תגובה אחרונה
              0
              • E eido

                @צדיק-תמים אם אני כבר עושה טבלה נפרדת שמכילה את מספר המודעה ואת המזהה של מי ששמע את המודעה, למה לא להישאר ברעיון המקורי ולעשות טבלה שתכיל במקום מספר הודעה ומזהה של מי ששמע אותה, מספר מודעה ומזהה של מי שלא שמע אותה?

                צדיק תמיםצ מנותק
                צדיק תמיםצ מנותק
                צדיק תמים
                כתב נערך לאחרונה על ידי
                #43

                @eido נראה לי שכתבתי כבר את כל ההסברים, זה נהיה דיון מעגלי.

                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                טיפים

                תגובה 1 תגובה אחרונה
                0
                • E מנותק
                  E מנותק
                  eido
                  כתב נערך לאחרונה על ידי eido
                  #44

                  דיברנו על טבלה סטטית מיותרת וחיפוש דינאמי, כל עוד לא היתה טבלה מיותרת הסכמתי, אבל כאן יש את אותה הטבלה בדיוק (טוב, כמעט בדיוק) רק שבשיטה שלי היא חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות.

                  אולי חסרה לי הבנה ברעיון מאחורי ההצעה שלך.

                  צדיק תמיםצ תגובה 1 תגובה אחרונה
                  0
                  • E eido

                    דיברנו על טבלה סטטית מיותרת וחיפוש דינאמי, כל עוד לא היתה טבלה מיותרת הסכמתי, אבל כאן יש את אותה הטבלה בדיוק (טוב, כמעט בדיוק) רק שבשיטה שלי היא חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות.

                    אולי חסרה לי הבנה ברעיון מאחורי ההצעה שלך.

                    צדיק תמיםצ מנותק
                    צדיק תמיםצ מנותק
                    צדיק תמים
                    כתב נערך לאחרונה על ידי צדיק תמים
                    #45

                    @eido המידע מי שמע הוא מידע שאתה צריך אותו. הוא לא תוצר של פילטור, ולכן הגיוני לשמור אותו. המידע "המודעה הזאת מתאימה למשתמש הזה כי הוא לא ראה אותה עדיין ויש לו קמפיין מתאים" הוא תוצר של שאילתה ויכול להשתנות בכל רגע ולכן לא שומרים אותו בצורה סטטית

                    @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

                    חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

                    אם תהיה לך בעיית איטיות אחרי אינדקסים מתאימים נדבר, לא נראה לי סביר שתגיע לזה

                    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                    טיפים

                    E תגובה 1 תגובה אחרונה
                    2
                    • צדיק תמיםצ צדיק תמים

                      @eido המידע מי שמע הוא מידע שאתה צריך אותו. הוא לא תוצר של פילטור, ולכן הגיוני לשמור אותו. המידע "המודעה הזאת מתאימה למשתמש הזה כי הוא לא ראה אותה עדיין ויש לו קמפיין מתאים" הוא תוצר של שאילתה ויכול להשתנות בכל רגע ולכן לא שומרים אותו בצורה סטטית

                      @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

                      חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

                      אם תהיה לך בעיית איטיות אחרי אינדקסים מתאימים נדבר, לא נראה לי סביר שתגיע לזה

                      E מנותק
                      E מנותק
                      eido
                      כתב נערך לאחרונה על ידי
                      #46

                      @צדיק-תמים כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

                      @eido המידע מי שמע הוא מידע שאתה צריך אותו. הוא לא תוצר של פילטור, ולכן הגיוני לשמור אותו. המידע "המודעה הזאת מתאימה למשתמש הזה כי הוא לא ראה אותה עדיין ויש לו קמפיין מתאים" הוא תוצר של שאילתה ויכול להשתנות בכל רגע ולכן לא שומרים אותו בצורה סטטית

                      @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

                      חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

                      אם תהיה לך בעיית איטיות אחרי אינדקסים מתאימים נדבר, לא נראה לי סביר שתגיע לזה

                      אז אתה אומר שזה ענין עקרוני, אם אפשר להשיג את זה עם שאילתא - מיותר לשמור. אם זה מידע לשאילתא - צריך לשמור. גם אם בסוף זה אותו הנתון ואותה הטבלה. אני מבין נכון?

                      צדיק תמיםצ תגובה 1 תגובה אחרונה
                      2
                      • E eido

                        @צדיק-תמים כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

                        @eido המידע מי שמע הוא מידע שאתה צריך אותו. הוא לא תוצר של פילטור, ולכן הגיוני לשמור אותו. המידע "המודעה הזאת מתאימה למשתמש הזה כי הוא לא ראה אותה עדיין ויש לו קמפיין מתאים" הוא תוצר של שאילתה ויכול להשתנות בכל רגע ולכן לא שומרים אותו בצורה סטטית

                        @eido כתב בהסרת מודעות ממסד נתונים - מורכב להסביר בשורה אחת:

                        חוסכת מהמאזין זמן ריצה כמו קאש שמושכים ממנו את המודעות

                        אם תהיה לך בעיית איטיות אחרי אינדקסים מתאימים נדבר, לא נראה לי סביר שתגיע לזה

                        אז אתה אומר שזה ענין עקרוני, אם אפשר להשיג את זה עם שאילתא - מיותר לשמור. אם זה מידע לשאילתא - צריך לשמור. גם אם בסוף זה אותו הנתון ואותה הטבלה. אני מבין נכון?

                        צדיק תמיםצ מנותק
                        צדיק תמיםצ מנותק
                        צדיק תמים
                        כתב נערך לאחרונה על ידי
                        #47

                        @eido כן, זה עקרון חשוב מאוד שחוסך הרבה באגים וסרבול

                        Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                        טיפים

                        תגובה 1 תגובה אחרונה
                        1
                        • E מנותק
                          E מנותק
                          eido
                          כתב נערך לאחרונה על ידי
                          #48

                          טוב, אז זה הקוד החדש:
                          מציאת מודעות:

                          $sqlNew = "SELECT a.*
                          FROM appartments a
                          WHERE $where
                            AND a.created_at >= ?
                            AND NOT EXISTS (
                                  SELECT 1
                                  FROM apartment_reads ar
                                  WHERE ar.apartment_id = a.id
                                    AND ar.phone = ?
                            )
                          ORDER BY a.created_at DESC";
                          
                          $sqlOld = "SELECT a.*
                          FROM appartments a
                          WHERE $where
                            AND (
                                  a.created_at < ?
                                  OR EXISTS (
                                      SELECT 1
                                      FROM apartment_reads ar
                                      WHERE ar.apartment_id = a.id
                                        AND ar.phone = ?
                                  )
                                )
                          ORDER BY a.created_at DESC";
                          

                          סימון כנקראה:

                           $sql = "INSERT INTO apartment_reads (apartment_id, phone)
                              VALUES (?, ?)";
                          

                          בעצם הפעולות שאני עושה הן רק במציאת המודעות ובסימון כנקרא, נכון?
                          ברגע שאני מוחק את המודעה, נמחק גם מה שקשור אליה בטבלה (

                          FOREIGN KEY (apartment_id) REFERENCES appartments(id) ON DELETE CASCADE
                          

                          ),
                          וכשאני מוסיף או מוחק סינון אני לא צריך לבצע שום פעולה.

                          תגובה 1 תגובה אחרונה
                          0
                          תגובה
                          • תגובה כנושא
                          התחברו כדי לפרסם תגובה
                          • מהישן לחדש
                          • מהחדש לישן
                          • הכי הרבה הצבעות


                          • 1
                          • 2
                          • 3
                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום