PDA

View Full Version : سوال: پرداخت اعتبار به کاربر



iman65
سه شنبه 09 تیر 1388, 13:40 عصر
با سلام و احترام
یک مشکل دوستان عزیز
با استفاده از کد زیر هنگامی که کاربر در سایت وارد شود مبلغ 500 ریال به حسابش وارد می شه ولی وقتی فعال کنم کدرو برای ورود به سایت بعد از وارد کردن یوزر و پسورد و کلیک رو ورود ارور می ده
لطفا راهنماییم کنید
ممنونم
//mysql_query("SET NAMES 'utf-8'", $link);
$query="INSERT INTO login VALUES('$ip','$myusername','$date_sabt')";
$result=mysql_query($query,$link) or die (mysql_error());
// $query="INSERT INTO account VALUES('$myusername','$subject','$date_sabt','$tim e_sabt',500)";
// $result=mysql_query($query,$link) or die (mysql_error());

iman65
سه شنبه 09 تیر 1388, 14:01 عصر
این خطا
Column count doesn
't match value count at row 1
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

soheil.moradi
سه شنبه 09 تیر 1388, 14:07 عصر
سلام دوست عزیز
البته اساس برنامه نویسیت اشتباه هست. من دو خطی که کاربر login می شه را برات طبق روشی که خودت نوشته بودی نوشتم، که البته باز هم اون اشتباه هست و منظورم از نوشتن این دو خط، فقط یادآوری اشتباه شما در نحوه نوشتن query هست:
به اینصورت:

<?
mysql_query("INSERT INTO `login` (`ip`, `username`, `date_sabt`) VALUES ('$ip', '$myusername', '$date_sabt')") or die(mysql_error());
mysql_query("INSERT INTO `account` (`username`, `subject`, `date_sabt`, `time_sabt`, `amount`) VALUES ('$myusername','$subject','$date_sabt','$time_sabt ',500)");

?>اما عرضم به خدمتت که شما اگر میگی کاربر در سایت وارد شد، دیگه نباید از کوئری Insert استفاده بکنی.
اینجا شما باید SELECT کنی اون یوزر را از دیتابیس.

که من تقریباً این دو خط را برات صحیحش را مینویسم، اما تنظیم کردنش با برنامۀ خودت، پای خودت:

<?
// Login query
$q_login = mysql_query("SELECT * FROM `members` WHERE `username`='".mysql_real_escape_string($_POST['username'])."' AND `password`='".mysql_real_escape_string($_POST['password'])."'");
// Check if username is in your database
if(@mysql_num_rows($q_login)==1){
// Get all information of logged in username
$login = mysql_fetch_assoc($q_login);
// Insert amount to logged in member
mysql_query("INSERT INTO `accounts` (`username`, `subject`, `date_sabt`, `time_sabt`, `amount`) VALUES ('".$login['id']."', '".$subject."', '".$date_sabt."', '".$time_sabt."', 500");
}
?>

soheil.moradi
سه شنبه 09 تیر 1388, 14:12 عصر
اشتباهی که شما در برنامه ات داشتی این هست که موقعی که میخوای یه کوئری را به بانک اضافه بکنی فقط مقادیر را اضافه می کنی، شما باید نام فیلدها را هم به کوئری بشناسونی
مثل این:

<?
mysql_query("INSERT INTO `account` (`name`) VALUES ('soheil')");
?>

iman65
سه شنبه 09 تیر 1388, 14:30 عصر
من نتونستم کاری کنم
برنامه نویس نستم من
متوجه منظور شما نشدم که کد رو چه کار کنم
ممنونم از راهنماییت

soheil.moradi
سه شنبه 09 تیر 1388, 15:01 عصر
ببین ایمان جان، به کدها توجه بکن (البته اگر از کدهای PHP چیزی سر در میاری)
شما گفتی که میخواهی یه کاربر وقتی وارد می شه یه کارهایی صورت بگیره (پرداخت 500 ریال)
خوب ابتدا باید اون کاربر را با توجه به username و password ای که وارد کرده توی فرم ورودت، از دیتابیس select بکنی.
حالا بعد از اینکه صحت ورودش مشخص شد، که با دستور if مشخص کردم، باید یه کوئری Insert برای اضافه کردن 500 ریال به حساب طرف اقدام بکنی.
خیلی واضح برات نوشتم، کامنت هم برات گذاشتم