-
مشکل در جستجو در Mysql
سلام به همگی
دوستان این کد چرا قسمت Else درست کار نمی کنه ، کد به این صورت هستش که نام کاربر تو بانک جستجو
میشه اگر باشه پیغام میده سلام نام کاربر و اگر نباشه پیغام بده کاربر مجاز نمی باشد ولی ، الان وقتی کاربر
مجاز نباشه به تعداد کاربرا، می نویسه کاربر مجاز نمی باشد فرض کن 10 تا کاربر تو بانک باشه 10 بار می نویسه
کاربر مجاز نمی باشد ، و همین طور اگه مجاز باشه ، می نویسه سلام نام کاربر ، کاربر مجاز نمی باشد:41:
مغزم هنگ کرد راستش خیلی روش کار کردم نشد که نشد با Switch هم امتحان کردم ولی اونم همین جوریه
مشکل کجاست اگر کدهام اشتباه لطفا طرز صحیحش رو بنویسید
ممنون از راهنمایی
کد:
<?php
$link = mysql_connect("localhost","amir","123456");
mysql_select_db("bank");
$f = $_POST['user'];
$x = " select * from table1";
$y =mysql_query($x);
for($i = 1; $r = mysql_fetch_row($y);$i++){
if($r[0]==$f)
print " salam $f";
else
print "کاربر مجاز نمی باشد ";
}
?>
-
اگه بخوایم کد خودتونو درست کنیم میشه این:
[php]
<?php
$link = mysql_connect("localhost", "amir", "123456");
mysql_select_db("bank");
$f = $_POST['user'];
$x = " select * from table1";
$y = mysql_query($x);
for ($i = 1; $r = mysql_fetch_row($y); $i++) {
if ($r[0] == $f) {
print " salam $f";
break;
}
else {
print "کاربر مجاز نمی باشد ";
}
}
?>
[/php]
ولی این روش درست نیست. فرض کن اگه یک میلیون کاربر داشته باشی چی میشه؟؟؟
راههای دیگه ای هم هست که ببینی یه نام کاربری تو دیتابیس هست یا نه مثلاً این:
[php]
<?php
$link = mysql_connect("localhost", "amir", "123456");
mysql_select_db("bank");
$f = $_POST['user'];
$y = mysql_query("SELECT COUNT(*) FROM table1 WHERE `user` = '$f';");
list($count) = mysql_fetch_row($y);
if ($count > 0)
print "نام کارربری مورد نظر وجود دارد";
else
print "کاربر مجاز نمی باشد ";
?>
[/php]
البته باید حواست باشه به این آسونی همون داده هایی رو که با فرم پست شده نزاری تو کوئری دیتابیس
وقتی میخوای داده ها رو تو دیتابیس ذخیره کنی اول اونا رو فیل-تر کن تا ریسکش کم بشه تو کد بالا هم با همون روش داده هاتو فیل-تر کن تا با داده های قبلی مطابقت داشته باشه
-
سلام
neopersia جان دستت درد نکنه ، راستش باز هم تو کد اول وقتی کاربر مجاز نیست به تعداد کاربرا می نویسه که کاربر مجاز نمی باشد
خودم هم گیج شدم آخه تو برنامه نویسی همین جوری درسته
-
من بازم میگم روش اول درست نیست .کد اول منم کامل نبود ولی اگه اصرار داری از این روش استفاده کنی این یکی رو امتحان کن:
[php]
<?php
$link = mysql_connect("localhost", "amir", "123456");
mysql_select_db("bank");
$f = $_POST['user'];
$x = " select * from table1";
$y = mysql_query($x);
$exist = false;
for ($i = 1; $r = mysql_fetch_row($y); $i++) {
if ($r[0] == $f) {
$exist = true;
break;
}
}
if($exist)
echo 'نام کاربری مورد نظر وجود دارد';
else
echo 'نام کاربری موجود نمی باشد';
?>
[/php]
-
سلام
دستت درد نکنه ، این بار کار کرد.
راستش من تازه کارم، این کد رو هم تو یه مقاله نوشته بود .
اگر شما می گین اشتباهه من از دومی استفاده می کنم. به هر حال از لطفی که کردین و جواب دادین واقعا
ممنونم نمی دونم اگه دوستای خوبی مثل شما و بقیه دوستان تو این فروم نبودن این مشکلات رو چطوری
می تونستم حل کنم . و اگه لطف کنی و بگی اشکال کجاست ممنون میشم آخه من زیاد وارد نیستم شما
گفته بودین که اگر مثلا یک میلیون کاربر داشته باشید اونوقت نمیشه از این کد استفاده کرد ؟ چرا؟
والا من باید بیشتر تلاش کنم واقعا روم نمیشه این سوال ها رو بپرسم :11:
ممنون
-
فرض کنید یک میلیون کاربر داریم که و نام کاربری ارسال شده به برنامه مربوط به آخرین رکورد در دیتابیس باشه
حالا باید یک میلیون رکورد از دیتابیس فراخوانده بشه که تبعاً فشار زیادی به سرور دیتابیس وارد میکنه
گذشته از وضعیت سرور دیتابیس حالا این یکی میلیون رکورد باید یکی یکی چک بشه تا ببینیم آیا نام مورد نظر ما وجود داره یا نه اینم تلف کردن منابع سرور هست (cpu, حافظه، بالارفتن زمان اجرای برنامه...)
شاید این کار تو طراحی نرم افزارهای شخصی مشکل زیادی ایجاد نکنه ولی روی وب درد سر ساز میشه
تازه این مشکلات برای چک کردن نام کاربری یک کاربر بود
وقتی یک میلیون کاربر داشته باشی مطمئناً در هر لحظه ممکنه تعداد زیادی کاربر به صور همزمان وارد سیستم بشن!!
این یعنی مشکلات قبلی ضرب در تعداد کاربرانی که می خواهند به طور همزمان وارد سیستم بشن!