PDA

View Full Version : سوال: Auto ID افزودن رکورد به یک Table



moslem_f
جمعه 31 خرداد 1392, 22:20 عصر
سلام عرض ادب و خسته نباشید در مورد این مطلب هر چه جست و جو کردم به نتیجه نرسیدم خواهشمندم اگر در موضوع تاپیک مشکلی بود ببخشید بیشتر به توضیحات می پردازم؛
برای ثبت یک رکورد جدید به یک تیبل از دیتا بیس مای اس کیو ال از قسمت Insert اقدام به ثبت رکورد می کنم چگونه می توان کاری کرد که اولین ID از 1 شروع شده و در صورتی که خودم فراموش کردم که فیلد ID را مقدار دهی کنم خود به خود آخرین آیدی را بررسی کرده و نسبت به ID قبل ID جدید را یک واحد افزایش داده و رکورد را با موفقیت ثبت کند چون هنگامی که من بعد از ساخت تیبل اولین رکورد رو ثبت می کنم خودم دستی مقدار 1 رو به ID اون رکورد میدم اما وقتی در ثبت بعدی یا به قولی Insert بعدی ID را وارد نکنم خود به خود ID 0 در رکورد های اون Table ثبت می شود و خطایی مبنی بر


1 row inserted.
Warning: #1366 Incorrect integer value: '' for column 'ID' at row 1


حال می خواستم بدانم چگونه می توان کاری کنم که اتومات آخرین آیدی را یک واحد افزایش داده و برابر با مقدار ID رکورد جدید قرار دهد نه این که مقدار 0 را بدهد.
و حال چرا نمی خوام ID اولین رکورد از 0 شروع شود به علت این که دو تیبل با هم در ارتباط می باشند و من نیز شرطی قرار دادم که اگر رکورد های داخل دیتا بیس کم تر از 1 بود نشان داده نشود با دستور ادامه به به شروع حلقه بر می گردد حال در زیر کد آن را قرار میدهم تا خودتان شرطی که قرار دادم رو بخونید و بهترین راهنمایی رو به من کنید و در مورد این که من می خوام اولین ID رکورد از 1 شروع بشه به نظر اساتید کار درستی هست با تشکر.
ارادتمند : مسلم فلاح نیت


while($row = mysql_fetch_array($Portfolio))
{ $id = $row['ID'];
$result_Portfolio = mysql_query("SELECT * FROM `portfolio` WHERE `Ref_Portfolio`='$id' ")or die(mysql_error());;
if(mysql_num_rows($result_Portfolio) < 1)
continue;

$result_Portfolio = mysql_query("SELECT * FROM `portfolio` WHERE `Ref_Portfolio`='$id' ")or die(mysql_error());;

while($row_link = mysql_fetch_array($result_Portfolio))
{
echo "<div class='lbox'><div class='ptop'><h2>{$row_link['Portfolio_Ttile']}</h2></div>".
"<div class='pcenter'><div class='textp'>{$row_link['Text_Portfolio']}</div><div class='pimage'></div><div class='metabox'><a class='more-link' href='../indexwpmore/index.html'></a><span class='view'> : </span></div></div><div class='pbottom'></div></div>";


}
}

فرزند کوروش
جمعه 31 خرداد 1392, 22:31 عصر
موقع اینسرت کردن جدول ای دیتو از نوع AUTO_INCREMENT و بصورت PRIMARY بزار

moslem_f
جمعه 31 خرداد 1392, 22:48 عصر
سلام عرض ادب و خسته نباشید دوست عزیز ممنونم بابت پاسخ شما در مورد شرطی که گذاشتم توضیحی ندارید و یا این که این کار درسته که می خوام از یک شروع بشه چگونه میتوانم کاری کنم که به صورت اتومات از 1 رکورد ها رو اضافه کند نه از 0 با تشکر.
ارادتمند : مسلم فلاح نیت

dousti_design
جمعه 31 خرداد 1392, 23:45 عصر
سلام عرض ادب و خسته نباشید در مورد این مطلب هر چه جست و جو کردم به نتیجه نرسیدم خواهشمندم اگر در موضوع تاپیک مشکلی بود ببخشید بیشتر به توضیحات می پردازم؛
برای ثبت یک رکورد جدید به یک تیبل از دیتا بیس مای اس کیو ال از قسمت Insert اقدام به ثبت رکورد می کنم چگونه می توان کاری کرد که اولین ID از 1 شروع شده و در صورتی که خودم فراموش کردم که فیلد ID را مقدار دهی کنم خود به خود آخرین آیدی را بررسی کرده و نسبت به ID قبل ID جدید را یک واحد افزایش داده و رکورد را با موفقیت ثبت کند چون هنگامی که من بعد از ساخت تیبل اولین رکورد رو ثبت می کنم خودم دستی مقدار 1 رو به ID اون رکورد میدم اما وقتی در ثبت بعدی یا به قولی Insert بعدی ID را وارد نکنم خود به خود ID 0 در رکورد های اون Table ثبت می شود و خطایی مبنی بر
موقع ساختن جدول شما میتونید نوع یک فیلد رو primary key و auto increment بدید که در اینصورت اگر موقع درج به این فیلد مقدار ندید(مقدار ندید با مقدار خالی '' فرق داره. یعنی اینکه اصلا داخل فیلدها و مقدار ها اشاره ای بهش نکنید) این فیلد بصورت اتوماتیک از 1 شروع میشه و مقداردهی میشه میره بالا.

حال می خواستم بدانم چگونه می توان کاری کنم که اتومات آخرین آیدی را یک واحد افزایش داده و برابر با مقدار ID رکورد جدید قرار دهد نه این که مقدار 0 را بدهد.
و حال چرا نمی خوام ID اولین رکورد از 0 شروع شود به علت این که دو تیبل با هم در ارتباط می باشند و من نیز شرطی قرار دادم که اگر رکورد های داخل دیتا بیس کم تر از 1 بود نشان داده نشود با دستور ادامه به به شروع حلقه بر می گردد حال در زیر کد آن را قرار میدهم تا خودتان شرطی که قرار دادم رو بخونید و بهترین راهنمایی رو به من کنید و در مورد این که من می خوام اولین ID رکورد از 1 شروع بشه به نظر اساتید کار درستی هست با تشکر.
ارادتمند : مسلم فلاح نیت
دوست عزیز تابع mysql_num_rows ربطی به id رکورد ها نداره و فقط تعداد رکورد های برگشتی از یک کوئری رو برمیگردونه. ممکنه اصلا فیلد id در کار نباشه. ربطی به اون نداره.
در ضمن auto increment بصورت پیشفرض از 1 شروع میشه خودش.