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

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

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

בניית טופס רכישה לפי אותיות

מתוזמן נעוץ נעול הועבר תכנות
16 פוסטים 5 כותבים 243 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אבי 203א מנותק
    אבי 203א מנותק
    אבי 203
    כתב ב נערך לאחרונה על ידי
    #1

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

    https://www.av-digital.co.il/

    nigunN תגובה 1 תגובה אחרונה
    0
    • nigunN מנותק
      nigunN מנותק
      nigun
      השיב לאבי 203 ב נערך לאחרונה על ידי
      #2

      @אבי-203
      איזה אותיות? לספר תורה?

      מייל: nigun@duck.com

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

        כן

        https://www.av-digital.co.il/

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

          איזה אנשים ישרים עוד יש בעולם...

          תגובה 1 תגובה אחרונה
          0
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי
            #5

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

            var allLeteres = {48646, "y": 152896 :"x", ...}
            

            וכן הלאה.
            אחרי קניה, אתה עושה

            allLeters["א"] -=1;
            

            הנה קוד שמתאר את העניין:

            var source = "פה יש את טקסט של כל התורה....";
            var allLeters = {};
            [...source].forEach(x => allLeters[x] =  1 + (allLeters[x] || 0));
            
            
            function subLetters(word){
            	for(var l of word){
            		if(!allLeters[l]) throw "אין מספיק אותיות...";
                    allLeters[l] -= 1;
                }
            }
            
            
            //allLeters
            //{פ: 1, ה: 3, " ": 6, י: 1, ש: 2, …}
            subLetters("טסט")
            

            נ.ב. מה תעשה כשיישאר אלפי אותיות ו,י בסוף ללא אותיות נוספות, מישהו יקנה?

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            5
            • yossizY מנותק
              yossizY מנותק
              yossiz
              כתב ב נערך לאחרונה על ידי yossiz
              #6

              @אבי-203 תזכור להוריד אותיות לא חוקיות מהקלט (או שתדאג שהם לא יופיעו באוביקט allLeters), לדוגמה רווחים... (אולי תקבץ ביחד אותיות סופיות ביחד עם האות הלא-סופית)
              @dovid לפרוס את כל התורה כולה לתוך מערך נשמע לא כל כך יעיל. אבל פעם אחת למי איכפת...
              אני מאמין שזה יותר יעיל:

              for (i=0;i<source.length;i++) {
                  x = source[i];
                  allLeters[x] =  1 + (allLeters[x] || 0));
              }
              

              עריכה: לא צדקתי... http://jsben.ch/GnbDe
              עריכה2: סליחה, זה משהו אחר שם... הנה: http://jsben.ch/bqrRx (אבל יש שם באג בדף וזה לא מראה את התוצאות, למעשה הקוד שלי כ-70% משל @dovid )

              נ.ב. למה מופיע {1} אחרי הקוד שלי? זה לא נמצא במקור.

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              dovidD תגובה 1 תגובה אחרונה
              3
              • אבי 203א מנותק
                אבי 203א מנותק
                אבי 203
                כתב ב נערך לאחרונה על ידי
                #7

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

                מה נעשה עם היתרות? ת. אני עושה את זה שיראו כמה נשאר מכל אות, ואז שיתאימו את עצמם, בנוסף יהיה אופציה אות אקראית ואז אקח ממי שנשאר הכי הרבה..

                נ.ב הנה הפירוט המדוייק (מצאתי באיזה מקום..)
                א 27057
                ב 16344
                ג 2109
                ד 7032
                ה 28052
                ו 30513
                ז 2198
                ח 7187
                ט 1802
                י 31530
                כ+ך 11940
                ל 21570
                מ+ם 25095
                נ+ן 14141
                ס 1833
                ע 11247
                פ+ף 4809
                צ+ץ 3982
                ק 4694
                ר 18125
                ש 15596
                ת 17949
                סכ"ה - 304805

                https://www.av-digital.co.il/

                תגובה 1 תגובה אחרונה
                4
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  השיב לyossiz ב נערך לאחרונה על ידי
                  #8

                  @yossiz אמר בבניית טופס רכישה לפי אותיות:

                  @dovid לפרוס את כל התורה כולה לתוך מערך נשמע לא כל כך יעיל. אבל פעם אחת למי איכפת...

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

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  4
                  • אבי 203א מנותק
                    אבי 203א מנותק
                    אבי 203
                    כתב ב נערך לאחרונה על ידי אבי 203
                    #9

                    @dovid @yossiz
                    מתקדם ומתקשה. תודה.
                    שאלה בהקדים.
                    בשביל לבצע שינוי בשדה מסויים אני חייב פילטר או אפשר להפנות עם תנאי במקום query
                    כלומר שמתי את האותיות במסד נתונים, עם העמודות הבאות: שם האות, וכמות [ועוד אחד עותק של הכמות שלא ישתנה]
                    אני חייב לבצע query שיסנן את הטבלה התואמת לאות שצווינה, ואז יוריד מהכמות אחד, או אפשר לכתוב ישר הורד אחד מהכמות של האות המתאימה.
                    מקווה שהצלחתי להסביר.

                    וגם זה משום מה לא עובד לי, הוא מוריד רק 1 גם אם אותה האות מוזכרת פעמים, למשל 'אבא' הוא מוריד 1 א' ואחד ב'. איפה טעיתי?

                    
                    
                    function subLetters(word){
                    
                    	for(var l of word){
                    		console.log(l);
                     wixData.query("ot")
                     .contains('ot', l)
                      .find()
                        .then( (results) => {
                          let itemupdate = results.items[0].ms - 1;
                    	  console.log(itemupdate);
                            let item = results.items[0];
                            item.ms = itemupdate;
                    	   console.log(item);
                            wixData.update("ot", item);
                          }
                        } )
                        .catch( (err) => {
                          let errorMsg = err;
                        } );
                    
                        }
                    }
                    

                    https://www.av-digital.co.il/

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      אני מנחש בעיית מקביליות אבל הייתי מעדיף לצפות בפלט של הקונסול, יש לך אותו?

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                        @אבי-203 אמר בבניית טופס רכישה לפי אותיות:

                        מצורף. תודה.
                        לשם 'אבא'

                        }

                        ![alt text](imaביאור 2019-10-31 235012.png ge url)

                        
                        export function postData(word){
                        	for(var l of word){
                        		console.log(l);
                         wixData.query("ot")
                         .contains('ot', l)
                          .find()
                            .then( (results) => {
                              let itemupdate = results.items[0].ms - 1;
                        	  console.log(itemupdate);
                        	  if(itemupdate > 0) {
                                let item = results.items[0];
                                item.ms = itemupdate;
                        	   console.log(item);
                                wixData.update("ot", item);
                              } else {
                        		console.log("נגמר האות, חפש אות אחרת או אות אקראית");
                              }
                            } )
                            .catch( (err) => {
                              let errorMsg = err;
                            } );
                        
                            }
                        	return;
                        }
                        

                        https://www.av-digital.co.il/

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          כתב ב נערך לאחרונה על ידי dovid
                          #12

                          אוקי הבעיה פשוטה.
                          בלולאה שעוברת על הלולאות יש קריאה לDB שקוראת מה הסכום הנוכחי.
                          שמים את הסכום במשתנה - 1, ומעדכנים.
                          כעת העדכון לא מיידי, כך ששתי הקריאות לא' נעשים לפני העדכון הראשון.
                          יש כמה דרכים להתמודד עם זה, לי נראה הכי יעיל לרכז לפני העדכון את מספר האותיות שיש להסיר:

                          
                          export function postData (word) {
                             var lettersToSub = {};
                          
                             for (var l of word)
                                lettersToSub[l] = 1 + (lettersToSub[l] || 0);
                          
                             for (var ot in lettersToSub) {
                          
                                wixData.query("ot")
                                   .contains('ot', ot)
                                   .find()
                                   .then((results) => {
                                      let itemupdate = results.items[0].ms - lettersToSub[ot];
                          
                                      if (itemupdate >= 0) {
                                         let item = results.items[0];
                                         item.ms = itemupdate;
                                         wixData.update("ot", item);
                                      } else console.log("נגמר האות, חפש אות אחרת או אות אקראית");
                          
                                   }).catch(console.log);
                             }
                          
                             return;
                          }
                          

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          תגובה 1 תגובה אחרונה
                          2
                          • אבי 203א מנותק
                            אבי 203א מנותק
                            אבי 203
                            כתב ב נערך לאחרונה על ידי אבי 203
                            #13

                            @dovid @yossiz @magicode
                            זה עדין מוריד רק אחד.
                            נראה שהוא עדין מבצע את הלולאה של האותיות ואז העדכון. כנראה גם ללא צבירה. הוא מוריד לכל אות אחד.
                            תודה על העזרה

                            https://www.av-digital.co.il/

                            תגובה 1 תגובה אחרונה
                            0
                            • dovidD מנותק
                              dovidD מנותק
                              dovid ניהול
                              כתב ב נערך לאחרונה על ידי
                              #14

                              תנסה את הקוד הבא, ואם זה נכשל תביא את הפלט של הקונסול.

                              export function postData (word) {
                                 var lettersToSub = {};
                               
                                 for (var l of word)
                                    lettersToSub[l] = 1 + (lettersToSub[l] || 0);
                               
                                 for (var ot in lettersToSub) {
                               	  console.log(ot, lettersToSub[ot]); 	
                                    wixData.query("ot")
                                       .contains('ot', ot)
                                       .find()
                                       .then((results) => {
                                          let itemupdate = results.items[0].ms - lettersToSub[ot];
                               
                                          if (itemupdate >= 0) {
                                             let item = results.items[0];
                                             item.ms = itemupdate;
                                             return wixData.update("ot", item)
                                                           .then(x => console.log(x[0].ms, x[0].ot));
                                          } else console.log("נגמר האות, חפש אות אחרת או אות אקראית");
                                        }).catch(console.log);
                                 }
                               
                                 return;
                              }
                              
                              

                              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                              בכל נושא אפשר ליצור קשר dovid@tchumim.com

                              תגובה 1 תגובה אחרונה
                              2
                              • אבי 203א מנותק
                                אבי 203א מנותק
                                אבי 203
                                כתב ב נערך לאחרונה על ידי
                                #15

                                @dovid אמר בבניית טופס רכישה לפי אותיות:

                                export function postData (word) { var lettersToSub = {}; for (var l of word) lettersToSub[l] = 1 + (lettersToSub[l] || 0); for (var ot in lettersToSub) { console.log(ot, lettersToSub[ot]); wixData.query("ot") .contains('ot', ot) .find() .then((results) => { let itemupdate = results.items[0].ms - lettersToSub[ot]; if (itemupdate >= 0) { let item = results.items[0]; item.ms = itemupdate; return wixData.update("ot", item) .then(x => console.log(x[0].ms, x[0].ot)); } else console.log("נגמר האות, חפש אות אחרת או אות אקראית"); }).catch(console.log); } return; }

                                ואוו!!!
                                עובד נהדר!
                                מה סידרת לא תפסתי.

                                https://www.av-digital.co.il/

                                תגובה 1 תגובה אחרונה
                                0
                                • dovidD מנותק
                                  dovidD מנותק
                                  dovid ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #16

                                  משונה, לא שיניתי כלום חוץ מתיעוד (console.log) ודאגה שיהיה פלט במקרה של שגיאה בהupdate.

                                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                  תגובה 1 תגובה אחרונה
                                  3

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

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

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