מערכת עדכון/שינוי פרטים אישיים, על בסיס נתונים קיימים
-
שלום רב
מה הדרך הכי קלה לעשות מערכת לעדכון/שינוי פרטים אישיים
לדוגמה
יש לי אקסל עם נתונים רבים על אנשים כמו שם כתובת ת"ז ועודאני רוצה שהלקוחות יחייגו למערכת ויעברו שלב אחרי שלב
שמכם כפי שמופיע הוא .... לאישור הקש 1 לתיקון 2.
ת"ז שלכם הוא... לאישור הקש 1 לתיקון 2.
וכן הלאהומי שלא רשום יעבור את כל התהליך הנ"ל ג"כ רק לעדכון מחדש
או מי שחסר איזה פרט...תודה רבה
-
@אאד קוד להמחשה עבור שלוחת 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);
-
@אאד
יש אפשרות להעלות קובץ של 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