PDA

View Full Version : سوال: مشکل در دستور if مربوط به اجرای Query



زینب فاطمی
دوشنبه 28 فروردین 1391, 20:21 عصر
سلام
کد زیر را برای عضویت شخص نوشتم ولی نمی دونم اشکال 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="">&nbsp;</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="">&nbsp;</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>

plague
سه شنبه 29 فروردین 1391, 01:15 صبح
اینجوری تست نمیکنن که کوئری نتیجه داشته یا نه
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';

زینب فاطمی
سه شنبه 29 فروردین 1391, 20:02 عصر
سلام
ممنون . ولی مشکل حل نشد.

mohamadali1374
سه شنبه 29 فروردین 1391, 20:12 عصر
کد زیر رو بزن ببین جواب می ده؟؟؟


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="">&nbsp;</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="">&nbsp;</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>


امید وارم جواب بگیری

زینب فاطمی
چهارشنبه 30 فروردین 1391, 13:36 عصر
سلام
مورد اول جواب نداد و در مورد دوم هم در قسمت فایل ذخیره در دیتابیس این خطا را رو میده :

Fatal error: Call to undefined function connect() in E:\wamp\www\meshkat\membership.php on line 37

wallfa
چهارشنبه 30 فروردین 1391, 13:58 عصر
نمیتونه تابع connect پیدا کنه ! نوشته خط 3 مشکل داره در فایل membership اون ببین پیدا میک نی ؟ !

زینب فاطمی
چهارشنبه 30 فروردین 1391, 14:56 عصر
سلام
بله متوجه متن خطا شدم ولی میخوام ببینم چیکار کنم تابع رو بشناسه ؟

mohamadali1374
چهارشنبه 30 فروردین 1391, 20:22 عصر
من اول گفتم که صفحه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="">&nbsp;</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="">&nbsp;</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>
موفق باشی:لبخندساده:

زینب فاطمی
چهارشنبه 30 فروردین 1391, 23:40 عصر
سلام
من سری قبل همانطور که شما گفتید نوشتم و فکر کنم دلیلش هم این بود که شما تابع connect رو جای درستی فراخوانی نکردید . در این مورد هم من عینا کد رو وارد کردم ولی شرط
if(mysql_result($Result, 0) > 0 ) اصلا چک نمیشه . در کد خودمم همین مشکل بود نمیدونم چرا شرط if دومی چک نمیشه و یک سره میره به سراغ else :گریه:

MMSHFE
پنج شنبه 31 فروردین 1391, 12:26 عصر
تو رو خدا یکم مرتب بنویسید :چشمک: یه ربع طول کشید فهمیدم چی به چیه. ضمناً اینقدر از DW و ادیتورهای WYSIWYG استفاده نکنید (خواهشاً). همون کد شما رو ببینید چقدر میشه کوتاهتر و بهینه تر نوشت:


<?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();
}
?>

موفق باشید.

زینب فاطمی
پنج شنبه 31 فروردین 1391, 17:15 عصر
سلام
خیلی ببخشید من مبتدی هستم و از دیریم ویور استفاده میکنم نرم افزار دیگری رو هم نمیشناسم و کار نکردم .

در مورذ مرتب نوشتن راهنمایی کنید چکار کنم چون من کپی می کنم و میارم توی تگ میذارم اینجا که میذارم مرتب کنم ؟

وقتی کد شما را گذاشتم این پیام خطا رو داد : Fatal error: Can't use function return value in write context in E:\wamp\www\meshkat2\membership.php on line 36

MMSHFE
پنج شنبه 31 فروردین 1391, 19:39 عصر
این راه رو امتحان کنید:
کدهای داخل تابع display رو کپی کنید و هرجا تابع فراخوانی شده، بجای فراخوانی تابع، اون کدها رو مستقیماً همونجا بنویسید. البته بعید میدونم مشکل از اون باشه ولی چون فرصت نکردم تست کنم، دقیق نمیتونم بگم. تا فردا تست میکنم و دقیقاً بررسی میکنم ببینم مشکل از کجاست.
-----
منظورم هم از مرتب نوشتن اینه که کد خودتون رو مرتب بنویسید. زیاد به Dreamweaver عادت نکنید. کد رو خیلی شلوغ و بهم ریخته مینویسه. بهتره عادت کنید خودتون با ادیتورهای معمولی مثل ++Notepad کدها رو تایپ کنید.
موفق باشید.

زینب فاطمی
جمعه 01 اردیبهشت 1391, 15:00 عصر
سلام
کاری که گفتید انجام دادم درست نشد .
ممنون.