View Full Version : سوال: ارسال اطلاعات xml به mysql
saman9074
شنبه 23 خرداد 1394, 18:12 عصر
سلام دوستان می خواستم ببینم میتونم اطلاعات فایل xml رو به mysql ببرم؟ کتابی مقاله ای آموزشی اگه هست ممنون میشم لینک بدید.
pyramid_ali
شنبه 23 خرداد 1394, 19:04 عصر
میشه منظورتو دقیق تر بگی؟ یه مثالی چیزی
saman9074
شنبه 23 خرداد 1394, 19:55 عصر
دو تا فایل زیر رو براتون آپ می کنم این دو تا یکی شامل اطلاعات کارمندان یکی هم جزئیات فیش حقوقی هست که از نرم افزار مدیریت مالی به صورت xml خروجی گرفته شده است.
من می خوام اونا رو به mysql ارسال کنم و از طریق سایت به کارمندان شرکت فیش حقوقی رو نمایش بدم حالا می خوام بدونم چطوری میشه این کار رو کردن؟
132220
pyramid_ali
یک شنبه 24 خرداد 1394, 23:42 عصر
بعید میدونم روشی مستقیم واسه کوئری زدن باشه! ولی اگه از php استفاده می کنی خیلی راحت می تونی اطلاعات xml رو استخراج کنی و با توجه به نیازت واسش جدول بسازی و اونا رو با یه اسکریپت راحت وارد جدول کنی!
واسه اینکارم خیلی راحت می تونی از کدی که تو زیر بهت نشون میدم استفاده کنی!
$xmlDoc = new DOMDocument();$xmlDoc->load("note.xml");
البته این فقط شروع کاره، ولی خیلی راحت می تونی با دام داکیومنت کار کنی! واسه اطلاعات بیشتر هم بهترین جا سایت php.net هست که یه سری بهش بزن!
pbm_soy
دوشنبه 25 خرداد 1394, 00:49 صبح
میتونی کل فایل XML را در یک فیلد متنی در دیتابیس ذخیره کنی و بعدا آنرا هرطور که دوستداری نمایش دهی
مگر اینکه بخواهی بعدا براساس اطلاعات فایل XML هم پزس وجوهایی را اجرا کنی که در آنصورت بهترین کار گفته دوستمون است که فایل XML را لود کنی و اطلاعاتش را در فیلدهای جداگانه در دیتابیس ذخیره کنی
saman9074
چهارشنبه 27 خرداد 1394, 01:28 صبح
سلام من چند تا آموزش گرفتم و این کد رو نوشتم اما کار نمیکنه کسی میتونه کمک کنه ؟
<?php
$url = "127.0.0.1/ali/ali.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
$xml=simplexml_load_string($data) or die("Error: Cannot create object");
$conn = new mysqli('localhost', 'root', '', 'abcms');
if($conn->connect_error){
die('cannot open database');
}
foreach ($xml -> ROWDATA as $ROWDATA) {
$Row = $ROWDATA -> Row;
$Month = $ROWDATA -> Month;
$Year = $ROWDATA -> Year;
$CompanyName = $ROWDATA -> CompanyName;
$TafCode = $ROWDATA -> TafCode;
$Family = $ROWDATA -> Family;
$Name = $ROWDATA -> Name;
$CardNum = $ROWDATA -> CardNum;
$PersonnelNum = $ROWDATA -> PersonnelNum;
$Accountnum = $ROWDATA -> Accountnum;
$BankName = $ROWDATA -> BankName;
$WageTitle = $ROWDATA -> WageTitle;
$Wage = $ROWDATA -> Wage;
$EmploymentType = $ROWDATA -> EmploymentType;
$OfficeLocation = $ROWDATA -> OfficeLocation;
$expenseCenter = $ROWDATA -> expenseCenter;
$Side = $ROWDATA -> Side;
$SalarySum = $ROWDATA -> SalarySum;
$FractionsSum = $ROWDATA -> FractionsSum;
$Payment = $ROWDATA -> Payment;
//mysql send
$sql = "INSERT INTO `xmltomysql`('Row',`Month`, `Year`, `CompanyName`, `TafCode`, `Family`, `Name`, `CardNum`, `PersonnelNum`, `Accountnum`, `BankName`, `WageTitle`, `Wage`, `EmploymentType`, `OfficeLocation`, `expenseCenter`, `Side`, `SalarySum`, `FractionsSum`, `Payment`)"
."VALUES('$Row','$Month','$Year','$CompanyName','$Ta fCode','$Family','$Name','$CardNum','$PersonnelNum ','$Accountnum','$BankName','$WageTitle','$Wage',' $EmploymentType','$OfficeLocation','$expenseCenter ','$Side','$SalarySum','$FractionsSum','$Payment')";
$result = $conn->query($sql);
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>صفحه ارسال اطلاعات مالی به سایت</title>
</head>
<body>
</body>
</html>
saman9074
جمعه 29 خرداد 1394, 01:17 صبح
کسی نیست کمک کنه و بگه مشکل کجاست؟
pbm_soy
جمعه 29 خرداد 1394, 01:45 صبح
سوال اول شما در پست اول جواب داده شده است!
شما یک برنامه پست کردید و گفتید کار نمیکنه!
اولا بگید این برنامه قرار چیکار کنه؟
دوما بگید برنامه که کار نمیکنه بجاش چیکار میکنه؟ خطا میده؟ یا چیز خارج از انتظار نمایش میدهد؟ یا خطاش چی هست؟
pyramid_ali
شنبه 30 خرداد 1394, 11:49 صبح
اول از همه باید بهت بگم که نیازی به استفاده از curl واسه لود کردن فایل xml ات نداری! کافی بود مثله همون خطی که بهت گفتم واسه لود از آدرس فایلت استفاده کنی! در ضمن شما توی یک صفحه کدی نوشته اید که با لود کردنش تمام کدها اجرا میشن! بهتر بود براش یه فرم فقط با submit می خواستین که در صورت submit شدن کداتون اجرا بشه! و در آخر اینکه شما باید بگی چه اروری دریفات می کنی تا بهتر بشه کمکت کرد!
saman9074
یک شنبه 31 خرداد 1394, 03:30 صبح
دوستان مشکل حل شد اما یک مشکل دیگه من کد زیر رو برای یک xml دیگه نوشتم چرا دوبار داده ها رو در پایگاه داده ذخیره میکنه؟
کد PHP:
<?php
//ارتباط با پایگاه داده
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "abcms";
// ایجاد ارتباط
$conn = mysqli_connect($servername, $username, $password, $dbname);
// بررسی ارتباط
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//تایین نوع انکود
mysqli_set_charset($conn, 'utf8');
//فراخوانی فایل ایکس ام ال
$De = simplexml_load_file('detail.xml');
//حلقه مربوط به اطلاعات جزئی فیش حقوقی
foreach($De->ROW as $ROWD){
//گرفتن اطلاعات فیش
$IDRef = $ROWD -> _IDRef;
$Type = $ROWD -> _Type;
if($Type==1){
$hoghoq = $ROWD -> _Title;
$HDay = $ROWD -> _Day;
$HCost = $ROWD -> _Cost;
$salary = "INSERT INTO salary(IDRef, Type, hoghoq, HDay, HCost)
VALUES('$IDRef','$Type', '$hoghoq','$HDay','$HCost')";
if ($conn->query($salary) === TRUE) {
echo "New record created successfully DR";
} else {
echo "Error: " . $salary . "<br>" . $conn->error;
}
}
elseif($Type == 2){
$kosorat = $ROWD -> _Title;
$kCost = $ROWD -> _Cost;
$shortage = "INSERT INTO shortage(IDRef, Type, kosorat, kCost)
VALUES('$IDRef','$Type', '$kosorat','$kCost')";
if ($conn->query($shortage) === TRUE) {
echo "New record created successfully DR";
} else {
echo "Error: " . $shortage . "<br>" . $conn->error;
}
}
elseif($Type ==3){
$Comment = $ROWD -> _Title;
$CCost = $ROWD -> _Cost;
$description = "INSERT INTO description(IDRef, Type, Comment, CCost)
VALUES('$IDRef','$Type', '$Comment','$CCost')";
if ($conn->query($description) === TRUE) {
echo "New record created successfully DR";
} else {
echo "Error: " . $description . "<br>" . $conn->error;
}
}
}
//بستن ارتباط پایگاه داده
$conn->close();
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ارسال اطلاعات جزئی کاربران به پایگاه داده</title>
</head>
<body>
</body>
</html>
فایل XML:
132456
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.