PDA

View Full Version : خواندن فایل های متنی یک پوشه و نوشتن آنها در دیتابیس



بیتا حکمت
چهارشنبه 26 آذر 1393, 11:24 صبح
سلام به همگی.

من یک پوشه دارم که اسم این پوشه txtfiles هست ، و یک جدول دارم به این صورت

ID
name
text

میخوام نام فایل به name و محتویات فایل متنی به text در دیتابیس اضافه بشه و ایـــــــن برای همه فایل های پوشه ای که گفتم انجام بشه ، فقط اینو می دونم باس از حلقه استفاده کنم اما نمی دونم چطوری .

Tarragon
چهارشنبه 26 آذر 1393, 11:33 صبح
سلام
اگر می خواهید یک نمونه فایل قرار بدید و یک export هم از جدول بگزارید تا کمکتون کنیم.

بیتا حکمت
چهارشنبه 26 آذر 1393, 11:57 صبح
سلام
اگر می خواهید یک نمونه فایل قرار بدید و یک export هم از جدول بگزارید تا کمکتون کنیم.

ممنون از لطف اتون ، این کوئری ساخت جدوله



CREATE TABLE mytable(id INT( 6 ) UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
filename VARCHAR( 30 ) NOT NULL ,
filetext VARCHAR( 255 ) NOT NULL ,
reg_date TIMESTAMP



البته اینم بگم که نمی دونم واسه یه متن طولانی چه فیلدی مناسب تره ، منظورم همون filetext هست ، بقیه اشم هم بالا توضیح دادم ، میخوام از داخل پوشه فایل های متنی خونده بشن و اسم به filename و متن به filetext اضافه بشه
اینم پوشه :
http://uplod.ir/lxekzxk9bqa0/txtfiles.zip.htm


(http://uplod.ir/lxekzxk9bqa0/txtfiles.zip.htm)

Tarragon
چهارشنبه 26 آذر 1393, 12:22 عصر
سلام
شما می تونید با استفاده از تابع scanDir اسم فایل های درون یک پوشه رو بدست بیارید و با استفاده از foreach اون ها رو دونه دونه بوسیله کوئری زیر وارد دیتابیس کنید.

mysql_query('INSERT INTO `temp`.`mytable` (`id`, `filename`, `filetext`, `reg_date`) VALUES (NULL, '".$filename."', '".$filecontent."', CURRENT_TIMESTAMP);');

واسه ی متن های طولانی بستگی داره که چقدر طولانی باشه در مورد اسم ها و معمولا ترکیبات اسمی بهترین چیز همین varchar(255) هست اما واسه واسه ی متون text پیشنهاد می شه و کار بهتر هم اینه که بیاید تو یک فایل سیو کنید و آدرس فایل رو توی دیتابیس بگذارید اینجوری خیلی دیتابیس کم حجم تر می شه.( این روش برای ذخیره عکس و مانند عکس در دیتابیس مناسب هستش.)

hamedarian2009
چهارشنبه 26 آذر 1393, 13:20 عصر
سلام میتونید به این روش انجام بدین


$dir= glob('txtfiles/*.txt');

$fileNames = array();
$fileContents = array();
foreach($dir as $file){
$fileName = end(explode('/', $file));
array_push($fileNames, $fileName);

$content = file_get_contents($file);
array_push($fileContents, $content);
}
if(count($fileNames)>0){
for($i=0; $i<count($fileNames); $i++){
$sql = "INSERT INTO `table`(`name`, `text`) VALUES ('".$fileNames[$i]."','".$fileContents[$i]."')";
}
}

hamedarian2009
چهارشنبه 26 آذر 1393, 13:24 عصر
CREATE TABLE mytable(id INT( 6 ) UNSIGNED AUTO_INCREMENT PRIMARY KEY ,filename VARCHAR( 30 ) NOT NULL ,filetext VARCHAR( 255 ) NOT NULL ,reg_date TIMESTAMP




بهتره نوع ستون text جدولتون رو از نوع text بزارین چون اینی که گزاشتین تا 255 تا کاراکتر رو قبول میکنه و طولش ممکنه برای محتویات فایلتون کم باشه