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

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

העלאת קובץ csv לתוך מסד בPHP

מתוזמן נעוץ נעול הועבר תכנות
9 פוסטים 2 כותבים 162 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN מנותק
    nigunN מנותק
    nigun
    כתב ב נערך לאחרונה על ידי
    #1

    אני צריך סקריפט שבו הקובץ CSV יומר למסד MYSQL ושם הטבלה יהיה כשם הקובץ
    אני מחפש ברחבי הרשת משהו ברור
    ויצאתי קצת מבולבל
    מישהו יכול לעזור\לתת לינק?
    ועל הדרך גם איך להוריד את הנותונים מהמסד לקובץ CSV

    מייל: nigun@duck.com

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

    לא משנה לך השפה? אני יכול לענות לך בC#? אני מבין שהגזמתי :), אז בא תכתוב איזה שפה/פלטפורמה אתה צריך.

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

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

    יו פיפסתי את הכותרת, סליחה!

    צריך לבנות פוקנציה שמקבלת שתי ארגומנטים: 1) שם הקובץ, 2) מחרוזת החיבור למסד.
    בתוך הפונקציה עלינו לעשות את הצעדים הבאים:
    א. ניתוח הCSV - למערך אסוציאטיבי או כל דרך אחרת, באופן שיש לנו את כל שמות העמודות ואת אוסף השורות.
    ב. בדיקה האם טבלה בשם קיימת במסד (ואם כן הוספה/מחיקה ?) ואם לא יצירת טבלה ע"י פקודת sql של CREATE TABLE, שלמחרוזת היצירה נשרשר את כל שמות העמודות של הCSV כשדות בטבלה מסוג טקסט.
    ג. מעבר בלולאה על פני השורות עם פקודת INSERT לכל אחד.

    איפה אתה מתקשה?
    בינתיים כתעסוקה אנסה לחפש מה שחיפשת - פתרון כבר מוכן.

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

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

    שכחתי שאם קובץ הCSV נמצא בשרת בו נמצא המסד או עכ"פ אפשר להעביר אותו לשם, ישנה אפשרות לייבא אותו בפקודת LOAD DATA INFILE.

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

    nigunN תגובה 1 תגובה אחרונה
    3
  • nigunN מנותק
    nigunN מנותק
    nigun
    השיב לdovid ב נערך לאחרונה על ידי
    #5

    @dovid
    לגבי LOAD DATA INFILE לא הצלחתי להשתמש בזה
    כנראה בגלל איזה הגבלה בשרת השיתופי וCPANEL
    למעשה מה שחסר לי זה פונקציה לבדיקת שם הקובץ
    והעלאה בפוסט ישירות בלי לשמור בשרת עצמו

    מייל: nigun@duck.com

    dovidD תגובה 1 תגובה אחרונה
    0
  • dovidD מחובר
    dovidD מחובר
    dovid ניהול
    השיב לnigun ב נערך לאחרונה על ידי
    #6

    @nigun אמר בהעלאת קובץ csv לתוך מסד בPHP:

    למעשה מה שחסר לי זה פונקציה לבדיקת שם הקובץ

    $filename=$_FILES['nameofyourfileinput']['name'];
    

    https://stackoverflow.com/a/28807492/1271037

    והעלאה בפוסט ישירות בלי לשמור בשרת עצמו

    תחפש php csv parse without saving
    https://stackoverflow.com/a/18125132/1271037

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

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

    אני לא יודע למה
    אבל לפעמים אני מחפש משהו ולא מוצא
    אחר כך אני חוזר ופתאום הכל זורם
    תכל'ס בסוף מצאתי כמה סקריפטים ושיניתי למה שאני צריך
    אבל עכשיו שם הטבלה נהיה name.csv
    ואני לא מצליח לעשות split כדי להוריד את ה.CSV
    אני כמובן ימשיך לחפש לבד
    אבל אולי יכתוב מדריך איך מחפשים בגוגל
    בכל מקרה אני יעלה פה את הקוד אם משהו ירצה את זה בעתיד
    וגם לשמוע הערות
    נ.ב. אני עשיתי מחיקה לטבלה לפני הכנסת הנתונים כי אני מעוניין לדרוס את מה שהיה לפני זה

    <?php
    
    $con=mysqli_connect("localhost","root","","db");
    
    
     
    if ( isset( $_FILES['userfile'] ) )
    {
      $csv_file = $_FILES['userfile']['tmp_name'];
      $csv_name = $_FILES['userfile']['name'];
    
    $CREATE = "CREATE TABLE IF NOT EXISTS `$csv_name` (
       `id` int(11) unsigned NOT NULL auto_increment,
       `aa` char(50) NOT NULL default '',
       `bb` char(50) NOT NULL default '',
      
       PRIMARY KEY  (`id`)
       ) ENGINE=InnoDB  ";
         mysqli_query($con,$CREATE);
    
      if ( ! is_file( $csv_file ) )
        exit('File not found.');
     $DELETE=mysqli_query($con,"DELETE  FROM `$csv_name`");
      $sql = '';
    
      if (($handle = fopen( $csv_file, "r")) !== FALSE)
      {
          while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
          {
          
             $sql = mysqli_query($con,"INSERT INTO `$csv_name` SET
                `id` = '$data[0]',
                `aa` = '$data[1]',
                `bb` = '$data[2]';
              ");
          }
          fclose($handle);
      }
    
    
      exit( "Complete!  " );
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
      <title>CSV to MySQL Via PHP</title>
    </head>
    <body>
      <form enctype="multipart/form-data" method="POST">
        <input name="userfile" type="file">
        <input type="submit" value="Upload">
      </form>
    </body>
    </html>
    

    וכמעט שכחתי
    איך אני מתעלם מהשורה הראשונה (של הכותרות)?
    (אני יודע שאפשר עם LOAD DATA INFILE אבל זה לא עובד לי)
    עריכה: בדקתי ומצאתי שבמקרה הספיצפי הזה אני סך הכל נותן לכותרת ID 0 ואז הוא לא נרשם
    אבל אשמח לדעת מה הפתרון במקרים אחרים

    מייל: nigun@duck.com

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

    @nigun
    מצאתי את הפתרון
    הייתי אמור לעשות explode
    ככה

    $piece = explode('.', $csv_name);
    $name= $piece[0]; // piece1
    

    בכל מקרה מי מתנדב לכתוב מדריך לחיפוש בגוגל?

    מייל: nigun@duck.com

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

    שאלה הבאה
    איך אני מעלה קבצים בעברית?

    מייל: nigun@duck.com

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

  • התחברות

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

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

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

  • התחברו או הירשמו כדי לחפש.