درود بر شما
امروز میخام وارد کردن اطلاعات از یک فایل اکسل رو داخل دیتابیس mysql توسط PHP آموزش بدم
البته من الان فقط درباره mysql میگم اما خودتون هم میدونید که فرقی نداره چی باشه دیتابیس
راه ساده و بی دردسری که خودم رفتم رو براتون میگم شاید راه های دیگه ای هم باشه اما بر هر حال ….
اول از همه نیاز داریم به یک کلاس به نام simplexlsx که با PHP محبوبمون نوشته شده ، اخر مطلب فایل برای دانلود آماده هست
خوب فرض کنیم یک فرمی داریم که یک فایل xlsx بهش وارد میشه و نیاز داریم بعد از آپلود وارد دیتابیس بشه
فرم رو به ساده ترین شکل ممکنه من اینجا ساختم
<form method="post" action="" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="send" name="btn"> </form>
خوب حالا بعد از انتخاب فایل اکسل و فشردن دکمه send باید این کار رو انجام بدیم
if(isset($_POST['btn'])) { include_once 'simplexlsx.class.php'; $xlsx = new SimpleXLSX($_FILES['file']['tmp_name']); list($cols,) = $xlsx->dimension(); foreach( $xlsx->rows() as $k => $r) { if ($k == 0) continue; // skip first row for( $i = 1; $i <= $cols; $i++) { if ($r[1] != "" && $i<=4) { $array[$k] = $r; } } } }
خوب تمام رکورد های فایل اکسل رو توی متغیر $array داریم . وقتشه که بوسیله یک حلقه وارد دیتابیس کنیمشون.
foreach($array as $item) { mysqli_query($DB,"INSERT INTO `place` (`col1`,`col2`) VALUES('{$item[0]}','{$item[1]}')"); }
نباید مشکل خاصی باشه و باید دیتا توی mysql ذخیره شده باشه.
فایل کلاس simplexlsx رو میتونید از اینجا دانلود کنید
ایول دمت گرم مشتی
سلام
میشه کدهای دکمه send رو توضیح بدید؟
مخصوصا:
if ($r[1] != “” && $i<=4) {
$array[$k] = $r;
سلام هادی جانوقتی دکمه send زده میشه اول از همه فایل مربوط به کلاس کار با اکسل رو include میکنیم به برنامه
سپس یک شی از اون کلاس میسازیم و بوسیله یک حلقه foreach از رکورد اول فایل اکسل شروع میکنیم به خوندن تا آخر
اصولا سطر اول در فایل اکسل ستون های اون میباشن که لازم نداریم اون سطر رو وارد دیتابیس کنیم و ازش رد میشیم(if ($k == 0) continue)
قسمت بعدش داره توی هر سطر گردش میکنه و هر ستون از هر سطر رو میریزه توی یک آرایه (به عنوان مثال هر سطر ۴ ستون داره)
و آرایه نهایی رو آخر سر وارد دیتابیس میکنیم
سلام عبارات فارسی رو علامت سوال ثبت میکنه در دیتابیس . utf8 دیتابیش و کانکشن رو هم ست کردم
سلام سعید جان
شما باید Collation ستون هایی که فارسی قراره داخلشون وارد بشه رو utf8_unicode_ci قرار بدی
دمت گرم حال کردم باهات
سایتت و مطالبی که میزاری فوق العاده س
از این به بعد کاربر روزانتم
برعکس اینکار رو هم میزاری؟ ممنون
عالی بود
دلم نیومد تشکر نکنم
خداقوت و مرسی از اینکه مفید بودید