PDA

View Full Version : سوال: آيا امكان استخراج اطلاعات از mysql به صورت معكوس هست؟



mehdimalek
پنج شنبه 23 مهر 1388, 13:43 عصر
با سلام :
چطور ميشه اطلاعات يك بانك اطلاعاتي mysql را از طريق php به صورت معكوس استخراج كرد؟
براي مثال فرض كه ما اطلاعاتي را از طريق ورودي يك فرم گرفته و داخل جدولي ذخيره مي كنيم:


<?php
$nm=$_POST['Name'];
$em=$_POST['Email'];
$cm=$_POST['Comment'];
//*************
$con=mysql_connect($myhost,$myus,$myps)or die("error1");
mysql_select_db($mydb,$con)or die("error2");
$result=mysql_query("insert into $mytb values('$nm','$em','$cm')");
if($result){echo"GOOD";}else{echo"NO";}
mysql_close($con);
?>

دوستان! كدهاي بالا را خلاصه نوشتم و اگه اشباه هست براي اينه كه اينجا درام با عجله مي نويسم يعني مشكل من درست ننوشتن كد نيست و كد بالا درست عمل ميكنه!
حالا فرض كه صفحه اي داريم كه با رفتن به اين صفحه تمامي اطلاعات جدول بالا قابل مشاهده است:


<?php
$con=mysql_connect($myhost,$myus,$myps )or die("error1");
mysql_select_db($mydb,$con)or die("error2");
$qu="select * from $mytb";
$result=mysql_query($qu);
if(!$result){ echo"No query!<hr />"; exit; }
//**********
While($line= mysql_fetch_array($result,MYSQL_ASSOC)){
Foreach($line as $str){
echo $str."<br/>";
}
echo"<hr/>";
}
mysql_free_result($result);
mysql_close($con);
?>

كد بالا هم اگه اينجا درست نوشته باشم براي من درست عمل ميكنه!
اما مشكل اينه كه اگه يك نام تازه و ايميل و نظر تازه وارد بشه و آن وقت بخواهيم تمام اطلاعات را ببينيم، تازه ترين اطلاعات داده شده آخر از همه به نمايش در مي آيند. آيا تابعي يا راه ساده اي براي نمايش اطلاعات يك جدول به صورت معكوس وجود دارد؟ يعني اينكه تازه ترين اطلاعات اول از همه نمايش داده شوند!
با تشكر از توجه شما

امیـرحسین
پنج شنبه 23 مهر 1388, 17:24 عصر
دستور ORDER BY توی MySQL کارش مرتبسازی اطلاعاته. مثلا:
SELECT * FROM `table` ORDER BY `name` DESC
کلمه اول نام ستونی هست که اطلاعات باید براساسش مرتب بشه و کلمه دوم شکل چینش بصورت صعودی (ASC) و نزولی (DESC) هست.
برای کار شما، باید زمان ثبت نظر رو هم ذخیره کنید و براساس اون ستون و نزولی اطلاعات رو نمایش بدید....

mehdimalek
پنج شنبه 23 مهر 1388, 18:27 عصر
ممنون از جوابتون
من اين كد رو قبلا امتحان كردم اما نميدونم چرا جواب نگرفتم .براي مثال اگه در دستور اوليه ترتيب خروجي:
a
n
i
وقتي از DESC يا ASC استفاده ميكنم نتايج درهم ريخته ميده و اصلا معكوس نيست! براي مثال ترتيب ميشه:
n
i
a
ويا
i
a
n
منظورم اينه كه بجاي داشتن خروجي به ترتيب:
i
n
a
دو خروجي بالا رو ميده و يه چيز ديگه هم اينكه وقتي از دستور فوق استفاده كردم براي خواندن از جدول، وقتي كارم تموم شد و خواستم
يه مقدار تازه به جدول اضافه كنم به آخر اضافه نمي كنه و وسط يا يه جاي ديگه اضافه ميشه! چرا؟
آيا آموزشي خوب براي اين مطلب هست يا جايي هست كه بيشتر مطلع بشم

s_salavati2002
پنج شنبه 23 مهر 1388, 20:12 عصر
ممنون از جوابتون
من اين كد رو قبلا امتحان كردم اما نميدونم چرا جواب نگرفتم .براي مثال اگه در دستور اوليه ترتيب خروجي:
a
n
i
وقتي از DESC يا ASC استفاده ميكنم نتايج درهم ريخته ميده و اصلا معكوس نيست! براي مثال ترتيب ميشه:
n
i
a
ويا
i
a
n
منظورم اينه كه بجاي داشتن خروجي به ترتيب:
i
n
a
دو خروجي بالا رو ميده و يه چيز ديگه هم اينكه وقتي از دستور فوق استفاده كردم براي خواندن از جدول، وقتي كارم تموم شد و خواستم
يه مقدار تازه به جدول اضافه كنم به آخر اضافه نمي كنه و وسط يا يه جاي ديگه اضافه ميشه! چرا؟
آيا آموزشي خوب براي اين مطلب هست يا جايي هست كه بيشتر مطلع بشم
اگر فارسیت مشکل داره اشکال از کاراکترستته

mehdimalek
جمعه 24 مهر 1388, 17:54 عصر
دوستان مشكل اينجا بود كه منه بيسوات كليد اصلي رو براي جدول تعيين نكرده بود!
يه سوال ديگه:لبخندساده: داشتم:
براي تعيين اينكه يك جدول چندتا خط از اطلاعات رو برگردونده استفاده از كد زير هست:


.
.
$Query=mysql_query("SELECT * FROM `tablename`");
$Num=mysql_num_rows($Query);
.
.

سوالم اينه كه آيا ميشه بدون خواندن محتوي جدول و به صورت سريعتر به تعداد رديفهايي كه در جدول وجود داره دسترسي داشت ؟
==================
صميمانه متشكرم

s_salavati2002
جمعه 24 مهر 1388, 22:02 عصر
دوستان مشكل اينجا بود كه منه بيسوات كليد اصلي رو براي جدول تعيين نكرده بود!
يه سوال ديگه:لبخندساده: داشتم:
براي تعيين اينكه يك جدول چندتا خط از اطلاعات رو برگردونده استفاده از كد زير هست:


.
.
$Query=mysql_query("SELECT * FROM `tablename`");
$Num=mysql_num_rows($Query);
.
.
سوالم اينه كه آيا ميشه بدون خواندن محتوي جدول و به صورت سريعتر به تعداد رديفهايي كه در جدول وجود داره دسترسي داشت ؟
==================
صميمانه متشكرم



SELECT count( `field` ) FROM table

mehdimalek
جمعه 01 آبان 1388, 14:03 عصر
از جوابهاتون ممنونم