PDA

View Full Version : خواندن داده از بانک اطلاعاتی



Moein65
سه شنبه 15 اسفند 1391, 13:00 عصر
سلام
من یه فیلدی در بانک اطلاعاتی دارم از نوع باینری ,که داده از نوع استراکچر توشه . حالا اگه من بخوام به داده های توی استراکچر دسترسی داشته باشم توی فرم php چطوری باید عمل کنم؟
خیلی واجبه کمکم کنین با تشکر

Moein65
چهارشنبه 16 اسفند 1391, 10:08 صبح
آقا کسی نیست کمک کنه اساتید محترم....

MMSHFE
چهارشنبه 16 اسفند 1391, 10:16 صبح
موقع ذخیره کردن چطوری عمل کردین؟ محتوای یکی از فیلدهای نمونه اون رو بگذارین تا ببینیم چی به چیه.

Moein65
چهارشنبه 16 اسفند 1391, 11:18 صبح
یه جدول دارم که یکی از فیلدهاش از نوع باینریه.و مختصات طول و عرض برنامه gps رو نگه میداره ساختارش هم اینتوریه


struct GpsPoint
{
int Time ;
double Longi;
double Lati;
} ;


struct GPSPack
{
int PCount ;
GpsPoint GPoint[30];
} ;



حالا من میخوام تو php مختصات طول و عرض رو بگیرم و خط مسیر ماشین رو رو نقشه نشون بدم

MMSHFE
چهارشنبه 16 اسفند 1391, 11:55 صبح
توی دیتابیس چطور ذخیره شده؟ با serialize یا json_encode ؟ هرکدوم هست، باید عکسش رو یعنی unserialize یا json_decode رو صدا بزنید تا برگرده به حالت اولش. اگر هم مستقیماً ذخیره کردین که باید بگم اشتباهه. نوع فیلدتون رو text بگذارین و موقع ذخیره کردن، با یکی از توابعی که اول گفته شد به رشته تبدیل و ذخیره کنید و موقع خوندن هم با تابع متناظرش که بعدش گفتم، به حالت عادی برگردونید.

Moein65
چهارشنبه 16 اسفند 1391, 12:31 عصر
به من یه جدول دادن که توش فیلد باینری من فقط میخوام تو ساختار استراکچر که گفتم حرکت کنم مقدار طول و عرض نقاط رو که به صورت باینری ذخیره شده تبدیل به دابل کنم بفرستم به تابع.
من این کار رو میکنم ولی جواب نمیده



$sql="SELECT Gpack FROM $tbl_name";
$result=mssql_query($sql);

// Start looping rows in mysql database.
$i = 0;
while($rows=mssql_fetch_assoc($result)){



while($row =mssql_fetch_assoc($rows))
{
$shape->addPoint(
new ShapePoint($row[('Longi')], $row[('Lati')], $i)
);
}

$i++;
}

کجاش غلطه

MMSHFE
چهارشنبه 16 اسفند 1391, 13:13 عصر
نه باید دوی سازنده ShapePoint اول اطلاعاتی که از دیتابیس گرفتین رو unserialize کنید و بعد بهش بدین. مثلاً اینطوری:


<?php
$sql = "SELECT `Gpack` FROM {$tbl_name}";
$result = mssql_query($sql);
// Start looping rows in mysql database.
$i = 0;
while($rows = mssql_fetch_assoc($result)) {
while($row = mssql_fetch_assoc($rows)) {
$point = unserialize($row);
$shape->addPoint(
new ShapePoint(
$point['Longi'],
$point['Lati'],
$i++
)
);
}
}
?>

Moein65
چهارشنبه 16 اسفند 1391, 13:47 عصر
مشکل من حل نشد!! این پیغام رو میده
Warning: mssql_fetch_assoc() expects parameter 1 to be resource, array given
با دستور unserialize() یعنی داده های باینری تبدیل به دابل میشن؟

MMSHFE
چهارشنبه 16 اسفند 1391, 14:54 عصر
نه عزیز چه گیری به دابل دادین؟ کلاً منطقش اینه: هرچیزی توی دیتابیس بخواد ذخیره بشه باید بصورت ترکیبی از کارکترها در بیاد. حالا یا خودش کارکتری هست (مثل اعداد و رشته ها و...) و یا اینکه از انواع ارجاعی مثل Object و Structure و Array و... است که باید با serialize تبدیل به نوع رشته ای بشه. موقع خوندن از دیتابیس هم باید دوباره از حالت رشته ای برگردونید به حالت عادی که با unserialize انجام میشه و محتوای دیتابیس رو به نوع عادی که قبل از ذخیره توی دیتابیس داشت برمیگردونه.
خطایی هم که تولید شده بخاطر اینه که کوئری رو نتونسته اجرا کنه.

Moein65
چهارشنبه 16 اسفند 1391, 15:24 عصر
داده های من تو سی پلاس پلاس برنامه نویسی و مقدار دهی شده به وسیله تابع intTohex. حالا من میخوام hex رو به int برگردونم اونم تو php?

MMSHFE
چهارشنبه 16 اسفند 1391, 15:27 عصر
تابع hexdec برای همین کار هست. مثال:


echo hexdec('FF'); // output: 255

Moein65
چهارشنبه 16 اسفند 1391, 15:31 عصر
من مبتدی ایم این طوری بنویسم؟


$sql="SELECT Gpack FROM $tbl_name";
$result=mssql_query($sql);

// Start looping rows in mysql database.
$i = 0;
while($rows=mssql_fetch_assoc($result)){



while($row =mssql_fetch_assoc($rows))
{

$point = unserialize($row);
$shape->addPoint(
new ShapePoint($Point[hexdec('Longi')],$Point[hexdec('Lati')], $i++)
);
}


}

Moein65
شنبه 19 اسفند 1391, 09:22 صبح
کسی نیست کمک کنه؟؟؟؟

MMSHFE
شنبه 19 اسفند 1391, 23:56 عصر
$sql = "SELECT `Gpack` FROM {$tbl_name}";
$result = mssql_query($sql);

// Start looping rows in mysql database.
$i = 0;
while($row = mssql_fetch_assoc($result)) {
$point = unserialize($row['Gpack']);
$shape->addPoint(new ShapePoint(hexdec($Point['Longi']), hexdec($Point['Lati']), $i++));
}

Moein65
دوشنبه 21 اسفند 1391, 14:20 عصر
آقا تشکر یه دو تا خط کشید ولی نمیدونم کجاست. این پیغام رو میده
Notice: unserialize() [function.unserialize (http://localhost/n/function.unserialize)]: Error at offset 0 of 255 bytes