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

    מערכת עדכון/שינוי פרטים אישיים, על בסיס נתונים קיימים

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

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

      אני רוצה שהלקוחות יחייגו למערכת ויעברו שלב אחרי שלב
      שמכם כפי שמופיע הוא .... לאישור הקש 1 לתיקון 2.
      ת"ז שלכם הוא... לאישור הקש 1 לתיקון 2.
      וכן הלאה

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

      תודה רבה

      S תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • S
        soris1989 @אאד נערך לאחרונה על ידי soris1989

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

        להלן קובץ dataSource בפורמט CSV: (ניתן להמיר את זה בקובץ מקור ב-EXCEL, ולממש את זה בהתאם ע"י שימוש בחבילת: phpoffice/phpspreadsheet, תוריד אותה לפרויקט שלך באמצעות ה-composer)
        datasource.csv

        <?php
        
        $apiCallId = $_GET['ApiCallId'];
        $apiPhone = $_GET['ApiPhone'];
        
        if (!$_GET['identity']) {
            echo 'read=t=אנא הזן את מספר תעודת הזהות=identity,,9,,15,Digits,';
            exit;
        }
        
        $csvFile = __DIR__ . '/./datasource.csv'; // קובץ מקור
        $tempFile = __DIR__ . '/./temp.csv'; // קובץ זמני לשמירה
        
        $dataSource = [];
        $matchRecord = [];
        $matchIndex = null;
        
        // קריאת קובץ CSV המכיל את כל נתוני המשתמשים
        if (($handle = fopen($csvFile, "r")) !== false) {
            $headersRow = fgetcsv($handle); // דילוג על השורה הראשונה שמכילה כותרות לעמודות
            $dataSource[] = $headersRow;
        
            $index = 1;
            while (($row = fgetcsv($handle, 1000, ",")) !== false) {
                $dataSource[] = $row; // הוספת כל שורה למערך
        
                if (trim($row[1]) === trim($_GET['identity'])) {
                    $matchRecord = $row;
                    $matchIndex = $index;
                    break;
                }
        
                $index++;
            }
        
            fclose($handle);
        } else {
            echo "שגיאה בפתיחת קובץ ה-CSV!";
        }
        
        
        if ($matchRecord) { // מצב עדכון משתמש לאחר מציאת התאמה עם רשומה כלשי בקובץ מקור CSV
        
            if ($matchRecord[2]) { // בדיקה האם שם המשתמש הוזן לרשומה
                if (!$_GET['name_confirmation']) {
                    $name = trim($matchRecord[2]);
                    echo "read=t=שמכם כפי שמופיע הוא $name, לאישור הקש 1, לתיקון הקש 2=name_confirmation,,1,1,8,Digits,";
                    exit;
                }
        
                // במידה ומקש 2 לתיקון השם הוקש
                if ($_GET['name_confirmation'] == 2) {
                    if (!$_GET['new_name']) {
                        // הזנת ההקלטה + תמלול - מודול זה כרוך בתשלום של 0.4 יחידות
                        echo "read=t=אנא הקלט את שמך=new_name,,voice,,no,,record,";
                        exit;
                    }
                }
        
                # וכן על זה הדרך עבור כל השדות שאתה רוצה לבדוק
                # .....
        
            } else { // השם לא הוזן לרשומה 
                if (!$_GET['new_name']) {
                    echo "read=t=אנא הקלט את שמך=new_name,,voice,,no,,record,";
                    exit;
                }
            }
        
            $phone = $matchRecord[0];
            $identity = $matchRecord[1];
            $name = $_GET['name_confirmation'] == 2 ? trim($_GET['new_name']) : trim($matchRecord[2]);
            # וכן ניתן להוסיף עוד שדות
            #....
        
            $updateRecord = [$phone, $identity, $name];
            for ($i = 0; $i < $dataSource[$matchIndex]; $i++) {
                $dataSource[$matchIndex][$i] = $updateRecord[$i];
            }
        } else { // מצב יצירה של משתמש, כאשר אין התאמה של ת.ז עם אף רשומה בקובץ מקור
        
            if (!$_GET['name']) {
                echo "read=t=אנא הקלט את שמך=new_name,,voice,,no,,record,";
                exit;
            }
        
            $phone = $apiPhone;
            $identity = trim($_GET['identity']);
            $name = trim($_GET['name']);
        
            # וכן ניתן להוסיף עוד שדות
            #....
        
            // יצירת מערך שיהא רשומה חדשה במסמך CSV
            $newRecord = [$phone, $identity, $name];
        
            $dataSource[] = $newRecord;
        }
        
        
        $output = fopen($tempFile, "w"); // פתיחת קובץ זמני לכתיבה
        foreach ($dataSource as $record) {
            fputcsv($output, $record); // כתיבת השורה המעודכנת
        }
        fclose($output);
        
        // מחיקת הקובץ הישן והחלפתו בקובץ החדש
        unlink($csvFile);
        rename($tempFile, $csvFile);
        
        
        תגובה 1 תגובה אחרונה תגובה ציטוט 1
        • 1
          1.21212E+13 נערך לאחרונה על ידי

          @אאד
          יש אפשרות להעלות קובץ של ini הכולל טלפון =שם, לשלוחה ולהגדירה כמובא כאן וכאן
          ולעשות שם תפריט לאישור תעביר לנתון הבא ולתיקון תעביר למודול זה
          ואח"כ יעבור לנתון הבא אחרי יציאה מזיהוי
          כך זה אצלי
          שלוחה 1 תפריט

          type=menu
          enter_id=yes
          enter_id_type=phone
          login_add_val_name=yes
          say_name=val_name
          delete_id_exit=yes
          

          שלוח 1/1 תפריט

          type=menu
          enter_id=yes
          enter_id_type=phone
          login_add_val_name=yes
          say_name=val_name
          delete_id_exit=yes
          

          שלוחה 1/2

          type=add_id_to_list
          add_id_to_list_location_list=/1/1/EnterIDValName
          add_id_to_list_value_type=keyboard
          add_id_to_list_value_change=yes
          add_id_to_list_end_goto=../1
          add_id_to_list_error_end_goto=../1
          delete_id_exit=yes
          
          תגובה 1 תגובה אחרונה תגובה ציטוט 1
          • פוסט ראשון
            פוסט אחרון