PDA

View Full Version : سوال: رفع اشکال در کد



scofield007
سه شنبه 08 بهمن 1392, 12:02 عصر
سلام.خسته نباشید

کدی برای ثبت اطلاعات کاربر داخل جدول members پس از ثبت نام نوشتم . ولی به نظر میاد exec-register در خطوط 7و8 مشکل داره.مشکل این خطوط چی هست؟

ممنون

exec-register

<?php
$con = @mysql_connect('localhost','root','','login') or die
('can not connect' . mysql_error());

$sql = "INSERT INTO members (firstname , lastname , login , passwd)
VALUES ('$_POST[name]','$_POST[family]','$_POST[namkarbari]','$_POST[password]')";
mysql_query($con , $sql);
if (!mysql_query($con,$sql))
{
die ('error' . mysql_error());
}
else
{
echo "1 record added";
header("location home.html");
}

?>


register.html

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="test.css">
<meta charset="utf-8">
<title>ثبت نام</title>
</head>

<body>
<div id="wrap">
<div id="banner">

</div>
<div id="header">
<ul>
<li id="navigation"><a href="#">صفحه اصلی</a></li>
<li id="navigation"><a href="#">ثبت نام</a></li>
</ul>
</div>
<div id="content">
<h3>لطفا خانه های خالی را پر کنید.</h3>
<form method="post" action="exec-register.php">
<table>
<tr>
<td>نام:</td>
<td><input type="text" name="name" maxlength="12" /></td>
</tr>
<tr>
<td>نام خانوادگی:</td>
<td><input type="text" name="family" maxlength="20"/></td>
</tr>
<tr>
<td>نام کاربری:</td>
<td><input type="text" name="namkarbari" maxlength="10" /></td>
</tr>
<tr>
<td>رمز عبور:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Register" /></td>
</tr>
</table>
</form>
</div>
<div id="navleft">

</div>
<div id="footer">
</div>
</div>
</body>
</html>

scofield007
سه شنبه 08 بهمن 1392, 12:19 عصر
اینم خطاش هست

Warning: mysql_query() expects parameter 1 to be string, resource given in C:\xampp\htdocs\macromedia\proje\SITE2\exec-register.php on line 7

Warning: mysql_query() expects parameter 1 to be string, resource given in C:\xampp\htdocs\macromedia\proje\SITE2\exec-register.php on line 8
error

scofield007
سه شنبه 08 بهمن 1392, 12:27 عصر
مشکل برطرف شد
باید mysql رو به mysqli تبدیل می کردم
نمیدونم چرا؟!!

SA_Developer
سه شنبه 08 بهمن 1392, 13:02 عصر
مشکل برطرف شد
باید mysql رو به mysqli تبدیل می کردم
نمیدونم چرا؟!!
خطا به این علت بود که شما ترتیب پارامتر ها رو رعایت نکردی باید به این شکل مینوشتی:


mysql_query($sql , $con);

ولی تو این تابع نیاز نیست Resource رو مشخص کنی پس اینطوری هم میتونی بنویسی:

mysql_query( $sql );

اما تو mySQLi ترتیب پارامتر ها برعکسه وپارامترها هم اجباری ان به همین دلیله که واسه شما کار کرده.

** نکته مهم : دیگه توابع *_Mysql قدیمی شدن و تو ورژن های بعدی php حذف میشن پس همیشه از MySQLi استفاده کنید.

http://php.net/mysql_query
http://php.net/mysqli

scofield007
سه شنبه 08 بهمن 1392, 21:39 عصر
این قطعه کد وظیفه ثبت اطلاعات کاربر رو به عهده داره.ولی اشکالی که داره به جای ثبت یک رکورد ، 2 رکورد مثل هم ثبت می کند.

مشکل کد از کجاست؟



<?php
$con = mysqli_connect("localhost","root","","login") or die
('can not connect' . mysqli_error());

$sql = "INSERT INTO members (firstname , lastname , login , passwd)
VALUES ('$_POST[name]','$_POST[family]','$_POST[namkarbari]','$_POST[password]')";
mysqli_query($con , $sql);
if (!mysqli_query($con,$sql))
{
die ('error' . mysqli_error());
}
else
{
echo "1 record added";
header("location: home.html");
}
?>

foreach
سه شنبه 08 بهمن 1392, 21:45 عصر
این قطعه کد وظیفه ثبت اطلاعات کاربر رو به عهده داره.ولی اشکالی که داره به جای ثبت یک رکورد ، 2 رکورد مثل هم ثبت می کند.

مشکل کد از کجاست؟



<?php
$con = mysqli_connect("localhost","root","","login") or die
('can not connect' . mysqli_error());

$sql = "INSERT INTO members (firstname , lastname , login , passwd)
VALUES ('$_POST[name]','$_POST[family]','$_POST[namkarbari]','$_POST[password]')";
mysqli_query($con , $sql);
if (!mysqli_query($con,$sql))
{
die ('error' . mysqli_error());
}
else
{
echo "1 record added";
header("location: home.html");
}
?>
خوب شما 2 بار کوئری رو اجرا کردید


mysqli_query($con , $sql);
if (!mysqli_query($con,$sql))

scofield007
سه شنبه 08 بهمن 1392, 22:04 عصر
خوب شما 2 بار کوئری رو اجرا کردید


mysqli_query($con , $sql);
if (!mysqli_query($con,$sql))


پس حدسم درست بود.برای اینکه بتونم در صورت خطا پیغامی برای کاربر نمایش بدم باید چکار کنم؟

foreach
سه شنبه 08 بهمن 1392, 22:11 عصر
پس حدسم درست بود.برای اینکه بتونم در صورت خطا پیغامی برای کاربر نمایش بدم باید چکار کنم؟


mysqli_query($con,$sql) or die('error');

و یا


$query = mysqli_query($con,$sql);

if(!$query) {
die('error');
}

scofield007
چهارشنبه 09 بهمن 1392, 17:20 عصر
این فرم مربوط به ثبت نام کاربر هست.طوری نوشتم که کاربر بعد ثبت نام به صفحه profile.php هدایت بشه.ولی متاسفانه این عمل انجام نمیشه و هنگام ثبت نام بعد از وارد کردن مشخصات و سپس کلیک بر روی دکمه ثبت نام (در صفحه register.php) ثبت نام فرد انجام شده ولی هدایت فرد به سمت صفحه profile.php صورت نمیگیرد.
مشکل کار از کجاست اساتید محترم؟



<?php
session_start();

$_SESSION['namkarbari'] = $_POST['namkarbari'];
$_SESSION['password'] = $_POST['password'];

$con = mysqli_connect("localhost","root","","login") or die
("can not connect" . mysqli_error());

$sql = "INSERT INTO members (firstname , lastname , login , passwd)
VALUES ('$_POST[name]','$_POST[family]','$_POST[namkarbari]','$_POST[password]')";

mysqli_query($con , $sql) or die ("ERROR" . mysqli_error());

header("location profile.php");
?>

scofield007
چهارشنبه 09 بهمن 1392, 18:17 عصر
اگر سوالم سخته لطفا به من بگید :|

2undercover
چهارشنبه 09 بهمن 1392, 18:42 عصر
اگر سوالم سخته لطفا به من بگید :|

بهتره یک بار مستندات خود PHP رو مطالعه کنید، به جواب بیشتر سوالاتون می رسید.

مشکل شما در اون قسمت هم اینه که بعد نام Header باید از کاراکتر : استفاده کنید!

scofield007
چهارشنبه 09 بهمن 1392, 19:40 عصر
بهتره یک بار مستندات خود PHP رو مطالعه کنید، به جواب بیشتر سوالاتون می رسید.

مشکل شما در اون قسمت هم اینه که بعد نام Header باید از کاراکتر : استفاده کنید!

خیلی ممنون
مستندات php کجا قرار داره؟

SadeghPro19
چهارشنبه 09 بهمن 1392, 21:22 عصر
خوده سایت PHP
php.net