مشکل در دستور if مربوط به اجرای Query
سلام
کد زیر را برای عضویت شخص نوشتم ولی نمی دونم اشکال if دوم چیه. دراین باره سرچ کردم به نتیجه نرسیدم . میشه چک کنید . در کد زیر ابتدا فرمی هست که اگر نام کاربری و رمز عبور وارد شود چک می کند که
آیا در دیتابیس موجود هست یا نه اگر بود پیغام میده و دوباره فرم ظاهر میشه اگر نه که درج میشه در دیتا بیس . مشکل اینه که در if آخری که مقایسه میکنه شرط ها بدرستی چک نمیشه !!
<?php if(!isset($_POST['username'])){
session_start();
session_destroy();
$_SESSION=array();
?>
<form action="" id="m12" method="post" >
<div align="right">
<blockquote>
<p name="پرسش" cols="" rows="">
<label></label>
</p>
<p name="پرسش" cols="" rows=""> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="name" type="text" id="name" class="style5" />
</label>
<span class="style5"> نام </span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="family" type="text" id="family" class="style5"/>
</label>
<span class="style5">نام خانوادگی</span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="email" type="text" id="email" class="style5" />
</label>
<span class="style5">ایمیل</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="tel" type="text" id="tel" class="style5" />
</label>
<span class="style5">تلفن</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="username" type="text" id="username" class="style5" />
</label>
<span class="style5"> نام کاربری</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="password" type="password" id="password" class="style5" />
</label>
<span class="style5"> رمزعبور</span></p>
<p name="پرسش" cols="" rows="">
<label></label>
<label>
<input name="Submit2" type="reset" class="style5" value="انصراف" />
<input name="Submit" type="submit" class="style5" value="ثبت" />
</label>
</p>
</blockquote>
</div>
</form>
<?php } else{ ?>
<?php
$username=trim($_POST['username']);
$password=trim($_POST['password']);
$tel=trim($_POST['tel']);
$email=trim($_POST['email']);
$family=trim($_POST['family']);
$name=trim($_POST['name']);
?>
<?php $link=mysql_connect('localhost', 'root', '' );
if(!$link)
{die('آخ وصل نشد');};
$database="meshkat";
mysql_select_db($database) or die('به دیتابیس وصل نشد');
?>
<?php $search = "SELECT * FROM person WHERE (`username`='{$username}' AND `password`='{$password}') ";
$result=mysql_query($search,$link);
$row = mysql_fetch_array($result);
if ($row!=="") {?>
<div> چنین نام کاربری وجود دارد لطفا عملیات خود را تکرار کنید </div>
<form action=" membership.php" id="m12" method="post" >
<div align="right">
<blockquote>
<p name="پرسش" cols="" rows="">
<label></label>
</p>
<p name="پرسش" cols="" rows=""> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="name" type="text" id="name" class="style5" />
</label>
<span class="style5"> نام </span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="family" type="text" id="family" class="style5"/>
</label>
<span class="style5">نام خانوادگی</span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="email" type="text" id="email" class="style5" />
</label>
<span class="style5">ایمیل</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="tel" type="text" id="tel" class="style5" />
</label>
<span class="style5">تلفن</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="username" type="text" id="username" class="style5" />
</label>
<span class="style5"> نام کاربری</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="password" type="password" id="password" class="style5" />
</label>
<span class="style5"> رمزعبور</span></p>
<p name="پرسش" cols="" rows="">
<label></label>
<label>
<input name="Submit2" type="reset" class="style5" value="انصراف" />
<input name="Submit" type="submit" class="style5" value="ثبت" />
</label>
</p>
</blockquote>
</div>
</form>
<?php ;} else {session_start();
$_SESSION['username']=$row['username'];
header("location:insert_membership.php ") ;
} ; exit(); } ?>
</div>
نقل قول: اشکال این کد چیه
اینجوری تست نمیکنن که کوئری نتیجه داشته یا نه
if ($row!=="") {?>
این یعنی چی ؟
شما برای اینکه ببینید کوئریتون خالیه یا نتیجه داره میتونید از mysql_num_row آستفاده کنید که بهتون یه عدد برمیگردونه که تعداد ردیف های پیدا شده درنتیجه کوئریتونه
);
$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);
if($num_rows > 0 )
echo 'choose another user';
نقل قول: اشکال این کد چیه
سلام
ممنون . ولی مشکل حل نشد.
نقل قول: اشکال این کد چیه
کد زیر رو بزن ببین جواب می ده؟؟؟
if(mysql_result($Result, 0) > 0 )
die("نام کاربري تکراري است!");
اگر جواب نداد کد هاتو به این شکل تغییر بده:
1 - فایل php به نام configدر ست کن واین کد هارو داخلش بریز وذخیره کن:
<?php
function connect()
{
mysql_connect("localhost" ,"root","")or die(mysql_error());
mysql_select_db("meshkat");
}
?>
بعد فایل ذخیره در دیتا بیس تو به این شکل تغییر بده:
<?php if(!isset($_POST['username'])){
include("config.php");
session_start();
session_destroy();
$_SESSION=array();
?>
<form action="" id="m12" method="post" >
<div align="right">
<blockquote>
<p name="پرسش" cols="" rows="">
<label></label>
</p>
<p name="پرسش" cols="" rows=""> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="name" type="text" id="name" class="style5" />
</label>
<span class="style5"> نام </span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="family" type="text" id="family" class="style5"/>
</label>
<span class="style5">نام خانوادگی</span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="email" type="text" id="email" class="style5" />
</label>
<span class="style5">ایمیل</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="tel" type="text" id="tel" class="style5" />
</label>
<span class="style5">تلفن</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="username" type="text" id="username" class="style5" />
</label>
<span class="style5"> نام کاربری</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="password" type="password" id="password" class="style5" />
</label>
<span class="style5"> رمزعبور</span></p>
<p name="پرسش" cols="" rows="">
<label></label>
<label>
<input name="Submit2" type="reset" class="style5" value="انصراف" />
<input name="Submit" type="submit" class="style5" value="ثبت" />
</label>
</p>
</blockquote>
</div>
</form>
<?php } else{ ?>
<?php
$username=trim($_POST['username']);
$password=trim($_POST['password']);
$tel=trim($_POST['tel']);
$email=trim($_POST['email']);
$family=trim($_POST['family']);
$name=trim($_POST['name']);
?>
<?php
$Sql = "SELECT COUNT(*) FROM `person`
WHERE `username` = '$username'";
connect();
$Result = mysql_query($Sql) or die(mysql_error() . "<br>SQL: " . $Sql);
if(mysql_result($Result, 0) > 0 ){?>
<div> چنین نام کاربری وجود دارد لطفا عملیات خود را تکرار کنید </div>
<form action=" membership.php" id="m12" method="post" >
<div align="right">
<blockquote>
<p name="پرسش" cols="" rows="">
<label></label>
</p>
<p name="پرسش" cols="" rows=""> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="name" type="text" id="name" class="style5" />
</label>
<span class="style5"> نام </span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="family" type="text" id="family" class="style5"/>
</label>
<span class="style5">نام خانوادگی</span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="email" type="text" id="email" class="style5" />
</label>
<span class="style5">ایمیل</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="tel" type="text" id="tel" class="style5" />
</label>
<span class="style5">تلفن</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="username" type="text" id="username" class="style5" />
</label>
<span class="style5"> نام کاربری</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="password" type="password" id="password" class="style5" />
</label>
<span class="style5"> رمزعبور</span></p>
<p name="پرسش" cols="" rows="">
<label></label>
<label>
<input name="Submit2" type="reset" class="style5" value="انصراف" />
<input name="Submit" type="submit" class="style5" value="ثبت" />
</label>
</p>
</blockquote>
</div>
</form>
<?php ;} else {session_start();
$_SESSION['username']=$row['username'];
header("location:insert_membership.php ") ;
} ; exit(); } ?>
</div>
امید وارم جواب بگیری
نقل قول: اشکال این کد چیه
سلام
مورد اول جواب نداد و در مورد دوم هم در قسمت فایل ذخیره در دیتابیس این خطا را رو میده :
Fatal error: Call to undefined function connect() in E:\wamp\www\meshkat\membership.php on line 37
نقل قول: اشکال این کد چیه
نمیتونه تابع connect پیدا کنه ! نوشته خط 3 مشکل داره در فایل membership اون ببین پیدا میک نی ؟ !
نقل قول: اشکال این کد چیه
سلام
بله متوجه متن خطا شدم ولی میخوام ببینم چیکار کنم تابع رو بشناسه ؟
نقل قول: اشکال این کد چیه
من اول گفتم که صفحهphpبه نام config درست کن ودر پوشه wamp\www\meshkat\... کنار فایل membership بریز. من در این فایل تابع connectرو تعریف کردم پس اگر این فایل config در اونجا نباشه پس تابعی هم نیست!
دوما من در فایل membership در خط دوم فایل config رو فراخونی کردم ... این طرز کار فایل هاست وحتما باید آون چیز هایی که الان گفتم رعایت بشه من در این فایل ها مشکل خاصی ندیدم اما فایلmembership رو به این شکل تغییر بده ببین چی می شه:
<?php if(!isset($_POST['username'])){
session_start();
session_destroy();
$_SESSION=array();
?>
<form action="" id="m12" method="post" >
<div align="right">
<blockquote>
<p name="پرسش" cols="" rows="">
<label></label>
</p>
<p name="پرسش" cols="" rows=""> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="name" type="text" id="name" class="style5" />
</label>
<span class="style5"> نام </span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="family" type="text" id="family" class="style5"/>
</label>
<span class="style5">نام خانوادگی</span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="email" type="text" id="email" class="style5" />
</label>
<span class="style5">ایمیل</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="tel" type="text" id="tel" class="style5" />
</label>
<span class="style5">تلفن</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="username" type="text" id="username" class="style5" />
</label>
<span class="style5"> نام کاربری</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="password" type="password" id="password" class="style5" />
</label>
<span class="style5"> رمزعبور</span></p>
<p name="پرسش" cols="" rows="">
<label></label>
<label>
<input name="Submit2" type="reset" class="style5" value="انصراف" />
<input name="Submit" type="submit" class="style5" value="ثبت" />
</label>
</p>
</blockquote>
</div>
</form>
<?php } else{ ?>
<?php
$username=trim($_POST['username']);
$password=trim($_POST['password']);
$tel=trim($_POST['tel']);
$email=trim($_POST['email']);
$family=trim($_POST['family']);
$name=trim($_POST['name']);
?>
<?php
include("config.php");
$Sql = "SELECT COUNT(*) FROM `person`
WHERE `username` = '$username'";
connect();
$Result = mysql_query($Sql) or die(mysql_error() . "SQL: " . $Sql);
if(mysql_result($Result, 0) > 0 ){?>
<div> چنین نام کاربری وجود دارد لطفا عملیات خود را تکرار کنید </div>
<form action=" membership.php" id="m12" method="post" >
<div align="right">
<blockquote>
<p name="پرسش" cols="" rows="">
<label></label>
</p>
<p name="پرسش" cols="" rows=""> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="name" type="text" id="name" class="style5" />
</label>
<span class="style5"> نام </span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="family" type="text" id="family" class="style5"/>
</label>
<span class="style5">نام خانوادگی</span> </p>
<p name="پرسش" cols="" rows="">
<label>
<input name="email" type="text" id="email" class="style5" />
</label>
<span class="style5">ایمیل</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="tel" type="text" id="tel" class="style5" />
</label>
<span class="style5">تلفن</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="username" type="text" id="username" class="style5" />
</label>
<span class="style5"> نام کاربری</span></p>
<p name="پرسش" cols="" rows="">
<label>
<input name="password" type="password" id="password" class="style5" />
</label>
<span class="style5"> رمزعبور</span></p>
<p name="پرسش" cols="" rows="">
<label></label>
<label>
<input name="Submit2" type="reset" class="style5" value="انصراف" />
<input name="Submit" type="submit" class="style5" value="ثبت" />
</label>
</p>
</blockquote>
</div>
</form>
<?php ;} else {session_start();
$_SESSION['username']=$row['username'];
header("location:insert_membership.php ") ;
} ; exit(); } ?>
</div>
موفق باشی:لبخندساده:
نقل قول: اشکال این کد چیه
سلام
من سری قبل همانطور که شما گفتید نوشتم و فکر کنم دلیلش هم این بود که شما تابع connect رو جای درستی فراخوانی نکردید . در این مورد هم من عینا کد رو وارد کردم ولی شرط if(mysql_result($Result, 0) > 0 )
اصلا چک نمیشه . در کد خودمم همین مشکل بود نمیدونم چرا شرط if دومی چک نمیشه و یک سره میره به سراغ else :گریه:
نقل قول: مشکل در دستور if مربوط به اجرای Query
تو رو خدا یکم مرتب بنویسید :چشمک: یه ربع طول کشید فهمیدم چی به چیه. ضمناً اینقدر از DW و ادیتورهای WYSIWYG استفاده نکنید (خواهشاً). همون کد شما رو ببینید چقدر میشه کوتاهتر و بهینه تر نوشت:
کد HTML:
<?php
session_start();
function display($alert) {
echo '<script type="text/javascript">alert("'.$alert.'");</script>'.PHP_EOL;
header('Location: '.$_SERVER['SCRIPT_FILENAME']);
echo '<meta http-equiv="Refresh" content="0; url='.$_SERVER['SCRIPT_FILENAME'].'"/>'.PHP_EOL;
exit();
}
if(!isset($_POST['username'])) {
$skey = array_keys($_SESSION);
foreach($skey as $key) {
unset($_SESSION[$key]);
}
?>
<form action="" id="m12" method="post">
<div align="right">
<blockquote>
<label><input class="style5" id="name" name="name" type="text"/><span class="style5">نام</span></label><br/>
<label><input class="style5" id="family" name="family" type="text"/><span class="style5">نام خانوادگی</span></label><br/>
<label><input class="style5" id="email" name="email" type="text"/><span class="style5">ایمیل</span></label><br/>
<label><input class="style5" id="tel" name="tel" type="text"/><span class="style5">تلفن</span></label><br/>
<label><input class="style5" id="username" name="username" type="text"/><span class="style5">نام کاربری</span></label><br/>
<label><input class="style5" id="password" name="password" type="password"/><span class="style5">رمز عبور</span></label><br/>
<input class="style5" type="reset" value="انصراف"/>
<input class="style5" type="submit" value="ثبت"/>
</blockquote>
</div>
</form>
<?php
}
else {
$flag = true;
$vars = array('name', 'family', 'email', 'tel', 'username', 'password');
foreach($vars as $var) {
if(!isset($_POST[$var]) || empty(trim($_POST[$var]))) {
$flag = false;
}
}
if(!$flag) {
display('اطلاعات ناقص است');
}
$name = trim($_POST['name']);
$family = trim($_POST['family']);
$email = trim($_POST['email']);
$tel = trim($_POST['tel']);
$username = trim($_POST['username']);
$password = trim($_POST['password']);
mysql_connect('localhost', 'root', '') or die('آخ وصل نشد');
$database = 'meshkat';
mysql_select_db($database) or die('به دیتابیس وصل نشد');
$search = "SELECT * FROM `person` WHERE (`username`='{$username}' AND `password`='{$password}')";
$result = mysql_query($search);
if($result && mysql_num_rows($result) > 0) {
display('چنین نام کاربری وجود دارد لطفا عملیات خود را تکرار کنید');
}
else {
$_SESSION['name'] = $name;
$_SESSION['family'] = $family;
$_SESSION['email'] = $email;
$_SESSION['tel'] = $tel;
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
header('Location: insert_membership.php') ;
}
exit();
}
?>
موفق باشید.
نقل قول: مشکل در دستور if مربوط به اجرای Query
سلام
خیلی ببخشید من مبتدی هستم و از دیریم ویور استفاده میکنم نرم افزار دیگری رو هم نمیشناسم و کار نکردم .
در مورذ مرتب نوشتن راهنمایی کنید چکار کنم چون من کپی می کنم و میارم توی تگ میذارم اینجا که میذارم مرتب کنم ؟
وقتی کد شما را گذاشتم این پیام خطا رو داد : Fatal error: Can't use function return value in write context in E:\wamp\www\meshkat2\membership.php on line 36
نقل قول: مشکل در دستور if مربوط به اجرای Query
این راه رو امتحان کنید:
کدهای داخل تابع display رو کپی کنید و هرجا تابع فراخوانی شده، بجای فراخوانی تابع، اون کدها رو مستقیماً همونجا بنویسید. البته بعید میدونم مشکل از اون باشه ولی چون فرصت نکردم تست کنم، دقیق نمیتونم بگم. تا فردا تست میکنم و دقیقاً بررسی میکنم ببینم مشکل از کجاست.
-----
منظورم هم از مرتب نوشتن اینه که کد خودتون رو مرتب بنویسید. زیاد به Dreamweaver عادت نکنید. کد رو خیلی شلوغ و بهم ریخته مینویسه. بهتره عادت کنید خودتون با ادیتورهای معمولی مثل ++Notepad کدها رو تایپ کنید.
موفق باشید.
نقل قول: مشکل در دستور if مربوط به اجرای Query
سلام
کاری که گفتید انجام دادم درست نشد .
ممنون.