• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استخراج معكوس اطلاعات! آيا امكان داره؟
#1
Question 
با سلام :
چطور ميشه اطلاعات يك بانك اطلاعاتي 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);
?>
كد بالا هم اگه اينجا درست نوشته باشم براي من درست عمل ميكنه!
اما مشكل اينه كه اگه يك نام تازه و ايميل و نظر تازه وارد بشه و آن وقت بخواهيم تمام اطلاعات را ببينيم، تازه ترين اطلاعات داده شده آخر از همه به نمايش در مي آيند. آيا تابعي يا راه ساده اي براي نمايش اطلاعات يك جدول به صورت معكوس وجود دارد؟ يعني اينكه تازه ترين اطلاعات اول از همه نمايش داده شوند!
با تشكر از توجه شما
  پاسخ
تشکر شده توسط :
#2
خود دستورات SQL همچین کاری رو انجام می دن
کد:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC
فقط کافی از این نوع select استفاده کنید
لینک : http://www.w3schools.com/sql/sql_orderby.asp
  پاسخ
تشکر شده توسط : admin mehdimalek HiddeN
#3
یادمه قبلا که اینو نمی دونستم خیلی کد PHP می نوشتم که این کارو برام انجام بده
درحالی که غافل بودم که خوده SQL اینکارو بسادگی انجام می ده Big Grin
  پاسخ
تشکر شده توسط :
#4
ممنون از جوابتون
من اين كد رو قبلا امتحان كردم اما نميدونم چرا جواب نگرفتم .براي مثال اگه در دستور اوليه ترتيب خروجي:
a
n
i
وقتي از DESC يا ASC استفاده ميكنم نتايج درهم ريخته ميده و اصلا معكوس نيست! براي مثال ترتيب ميشه:
n
i
a
ويا
i
a
n
منظورم اينه كه بجاي داشتن خروجي به ترتيب:
i
n
a
دو خروجي بالا رو ميده و يه چيز ديگه هم اينكه وقتي از دستور فوق استفاده كردم براي خواندن از جدول، وقتي كارم تموم شد و خواستم
يه مقدار تازه به جدول اضافه كنم به آخر اضافه نمي كنه و وسط يا يه جاي ديگه اضافه ميشه! چرا؟
آيا آموزشي خوب براي اين مطلب هست يا جايي هست كه بيشتر مطلع بشم!
  پاسخ
تشکر شده توسط :
#5
شما کلید اصلی داخل جدول دارید؟ اگر دارید بر اساس کلید اصلی مرتب سازی رو انجام بدید
  پاسخ
تشکر شده توسط : oia mehdimalek
#6
بقول وحید باید از ستون کلید اصلی استفاده کنید
  پاسخ
تشکر شده توسط : mehdimalek
#7
درسته من كليد اصلي رو براي جدولم تعيين نكردم!
اگه جوابتون را درست درك كرده باشم بايد يكي از ستون ها را مثلا ستون Name را به عنوان كليد اصلي تعيين كنم درسته؟
آيا ميشه هر ستوني رو به عنوان كليد اصلي تعيين كنم ... مثلا همون ستون Name .
اگه نه ستوني كه بايد كليد اصلي باشه بايد چه خصوصياتي داشته باشه؟Huh
يه سوال ديگه هم داشتم:
براي تعيين اينكه يك جدول چندتا خط از اطلاعات رو برگردونده استفاده از كد زير هست:
کد:
.
.
$Query=mysql_query("SELECT * FROM `tablename`");
$Num=mysql_num_rows($Query);
.
.
سوالم اينه كه آيا ميشه بدون خواندن محتوي جدول و به صورت سريعتر به تعداد رديفهايي كه در جدول وجود داره دسترسي داشت ؟
=====================
در آخر بايد از تمامي كساني كه وقت صرف نوشتم جواب ميكنن تشكر كنم و صادقانه بگم كه توي اين سايت خيلي از مشكلات من حل شد و باز هم ممنونتون هستم.Big Grin
  پاسخ
تشکر شده توسط : oia
#8
(۱۳۸۸ مهر ۲۴, ۰۸:۱۵ ب.ظ)mehdimalek نوشته: در آخر بايد از تمامي كساني كه وقت صرف نوشتم جواب ميكنن تشكر كنم و صادقانه بگم كه توي اين سايت خيلي از مشكلات من حل شد و باز هم ممنونتون هستم.Big Grin

افرین Wink

مگه انتخاب کردن یک جدول چه سختی برای شما داره که دنبال یک روش سریع تر می گردین؟
درمورد کبید هم که من تجربی فهمیدم که
کیلید یعنی یک ستونی مقدارش برای هر ردیف یکتاست
هر ستونی نمی تونه سنون کلید باشه مثلا ستون اسم چون ممکنه دوتا اسم وحید داشته باشیم
اما مثلا شماره دانشجویی می تونه باشه
البته بیشتر وقت ها یک ستون به جدول اضافه می کنن که مقدارش یک عدد طبیعیه و از یک به ترتیب به صورت اتوماتیک هر رکورد رو شماره گذاری می کنه تا انتها
و این ستون رو کلید جدول انتخاب می کنن

Cool
  پاسخ
تشکر شده توسط : admin mehdimalek
#9
برای به دست آوردم تعداد کل رکوردها از این کوئری استفاده کن
کد پی‌اچ‌پی:
SELECT COUNT(*) FROM `tablename 
  پاسخ
تشکر شده توسط : oia mehdimalek
#10
ببخشيد كه دير جواب دام يعني دير تشكر كردم
از جوابهايي كه داديد ممنون هستم و واقعا خوبه كه كسي دونسته هاش رو در اختيار كسي ديگه كه نياز داره بذاره.
  پاسخ
تشکر شده توسط : oia


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان