PDA

View Full Version : جست و جو در دیتابیس



mahdimirhendi
جمعه 16 خرداد 1393, 20:22 عصر
به دلیل لود نشدن ادیتور های متن مجبور بودم پست اصلی به عنوان پاسخ باشه
شرمنده...

mahdimirhendi
جمعه 16 خرداد 1393, 20:24 عصر
سلام و خسته نباشید
بنده یه سیستم کد پیگیری هست که بخش مدیریتش را نوشتم
حالا تو بخش کاربری ، باید کاربر کد را وارد کنه تو دیتابیس سرچ کنه و فیلد مورد نظر را پیدا کنه ( کد باید دقیقا همون باشه و از دستور LIKE تو کوئری استفاده نباید کنم )

کوئری را اینجوری نوشتم :



function searchcode($track) { $result= mysql_query("SELECT * FROM peygiri WHERE trackcode='$track' ") ; return $result; }



توی بخش کاربری هم :


<html><head><?php require_once('functions.php'); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="generator" content="Mirhendi"><meta name="description" content=""><meta name="keywords" content=""><title>پیگیری وضعیت دستگاه</title><link rel="stylesheet" type="text/css" href="my.css"></head>


<body><?php if(isset($_POST['track']) And !empty($_POST['track']) ) { $track= $_POST['track']; $result=searchcode($track); if ($result){ ?> <table border="1" align="right" dir="rtl" width="100%"> <tr> <td>کد رهگیری</td> <td>تاریخ</td> <td>وضعیت</td> </tr> <?php while($rows = mysql_fetch_assoc($result)) { ?> <tr> <td><?php echo $rows['trackcode'] ?></td> <td><?php echo $rows['date'] ?></td> <td><?php echo $rows['status'] ?></td> </tr>

<?php
} ?> </table> <?php }else{ $msg="کد مورد نظر وجو ندارد "; } }
?>
<form method="POST">کد پیگیری : <input type="text" name="track"><input type="submit" value="جست و جو"></form><?php echo $msg;?> </body> </html>



حالا اینجا کاربر تا وقتی کد را وارد نکرده جدولی بهش نشون نمیده ولی تا وارد کرد نتیجه ی جست و جو را نشون میده
مشکل من اینه اگه کاربر کد را اشتباه نشون بده
بازم جدول را نشون میده ...


http://forum.persianscript.ir/attachments/f115/2010d1402065286t-%D8%AC%D8%B3%D8%AA-%D9%88-%D8%AC%D9%88-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-1.jpg (http://forum.persianscript.ir/attachments/f115/2010d1402065286-%D8%AC%D8%B3%D8%AA-%D9%88-%D8%AC%D9%88-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-1.jpg)

خواهشا بگید چجوری باید بنویسم که اگر وجود نداشت جدولم نشون نده و خطا بده ( اینجا اصلا خطاهم نمیده یعنی کوئری Result داره )
سوال دوم :
میخوام همین صفحه را بدون رفرش ببینم (یعنی با آژاکس ) میشه همین صفحه را هم بگید چجوری اوکی کنم؟ یه سری سورس پیدا کردم لی چون java بلد نیستم از پسش بر نیومدم
ممنون میشم کمک کنید ( خیلی واجبه )

sedaaghat
جمعه 16 خرداد 1393, 21:42 عصر
با سلام من تازه نوشتن کد php رو شروع کردم یه صفحه ورود نوشتم که میخاد به صفخه کاربر مورد نظر وارد بشه .یعنی فعلا سه صفحه پی اچ پی بیشتر ندارم :
index که همون لاگین است.
doctor که کاربر مورد نظره و اینجا کدش اهمیت نداره .
و check که مسئول چک صحیح بودن نام کاربری و رمز عبور وارد شده است.
اما وقتی در صفحه index رمز درست رو میزنم فقط یه تیکه کد از صفحه check رو به من نشون میده خیلی سرچ کردم ولی همش همینه....
کدی که اول صفحه index اضافه کردم:





<?php
session_start();

iF($_SESSION['x'] != true){ header("location:../index.php");}
?>





و کدی که تو صفحه چک هست :





<?php session_start();
$link=mysql_connect("localhost","root","");mysql_select_db("project",$link);$r =mysql_query("select * from login where username='".$_POST['username']."' and password='".$_POST['password']."'"); $k =mysql_num_rows($r);if($k > 0){ echo $_POST['username']; echo $_POST['password']; $_SESSION['x']=true; header("location:doctor.php");}else{ echo "error"; header("location:index.php"); }?>






وقتی دکمه ورود رو میزنم این متن رو نشون میده :
0){ echo $_POST['username']; echo $_POST['password']; $_SESSION['x']=true; header("location:doctor.php");}else{ echo "error"; header("location:index.php"); }?>

خواهش میکنم یکی کمکم کنه...!

mahdimirhendi
جمعه 16 خرداد 1393, 21:57 عصر
مهندس اینجا تایپیکه منه ها ....

hamedarian2009
جمعه 16 خرداد 1393, 22:19 عصر
سلام کدهاتون خیلی نامرتبه من جواب mahdimirhendi (http://barnamenevis.org/member.php?277542-mahdimirhendi) رو میدم اینجور که دیدم شما یک تابع نوشتین که به جدول مورد نظر یک سلکت میزنه و نتیجه ش یا true میشه یا false
خب سلکت شما که همیشه true هست واسه همین همیشه جواب رو نشون میده باید حتما با mysql_num_rows تعداد نتایجی رو که برمیگردونه روهم چک کنید مثلا اگه 1 بود بیاد جدول رو نشون بده وگرنه پیغام مناسبو چاپ کنه

mahdimirhendi
جمعه 16 خرداد 1393, 22:49 عصر
<?php if(isset($_POST['track']) And !empty($_POST['track']) ){ $track = $_POST['track'];
$result = searchcode($track);
$count = mysql_num_rows($result);
if ($count==1){ ?>
<table border="1" align="right" dir="rtl" width="100%">
<tr>
<td>کد رهگیری</td>
<td>تاریخ</td>
<td>وضعیت</td>
</tr>
<?php
while($rows = mysql_fetch_assoc($result)){?>
<tr>
<td><?php echo $rows['trackcode'] ?></td>
<td><?php echo $rows['date'] ?></td>
<td><?php echo $rows['status'] ?></td>
</tr>
<?php } ?>
</table>
<?php }else{ $msg="کد مورد نظر وجو ندارد ";}}?>
تشکر بابت پاسخ
من این کارم کردم ولی همون شد ...
ممکنه result من بیشتر از 1 هم باشه و من میخوام همه را چاپ کنه
اینکه نوشتم هم همینکار رو کرد

hamedarian2009
جمعه 16 خرداد 1393, 23:15 عصر
شما بیرون تابع داری num_rows میزنی اینجوری تابعتو بنویس


function searchcode($track)
{
$result= mysql_query("SELECT * FROM peygiri WHERE trackcode='$track' ");
return mysql_num_rows($result);
}

شرط رو هم بزرگتر از صفر کن

mahdimirhendi
شنبه 17 خرداد 1393, 00:08 صبح
این خطا را میده...
Warning: mysql_num_rows() expects parameter 1 to be resource, integer given in C:\xampp\htdocs\****\script\page\index2.php on line 20



سورس :



<html><head><?php require_once('../admin/functions.php'); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="generator" content="Mirhendi"><meta name="description" content=""><meta name="keywords" content=""><title>ط³غŒط³طھظ…</title><link rel="stylesheet" type="text/css" href="my.css"></head>


<body><?php if(isset($_POST['track']) And !empty($_POST['track']) ){ $track = $_POST['track']; $result = searchcode($track); $count = mysql_num_rows($result); if ($count >0){ ?> <table border="1" align="right" dir="rtl" width="100%"> <tr> <td>کد رهگیری</td> <td>تاریخ</td> <td>وضعیت</td> </tr> <?php while($rows = mysql_fetch_assoc($result)){?> <tr> <td><?php echo $rows['trackcode'] ?></td> <td><?php echo $rows['date'] ?></td> <td><?php echo $rows['status'] ?></td> </tr> <?php } ?> </table> <?php }else{ $msg="کد مورد نظر وجو ندارد ";}}?> <form method="POST">کد پیگیری را وارد کنید : <input type="text" name="track"><br/><input type="submit" value="جست و جو"></form> </body> </html>

sedaaghat
شنبه 17 خرداد 1393, 10:26 صبح
مهندس اینجا تایپیکه منه ها ....
من معذرت میخام ...من زیاد به این سایت نیومدم...
ولی حالا اگه شما یا هر کسی جواب سوال منو میدونه اگه کمکم کنه ممنون میشم...
از نظر شما که مشکلی نداره؟!

mahdimirhendi
شنبه 17 خرداد 1393, 13:23 عصر
اقا ما که جوابمون را گرفتیم
فانکشن :


function searchcode($track){ $result = mysql_query("SELECT * FROM peygiri WHERE trackcode='$track' ") ;
$count = mysql_num_rows($result);
if ($count>=1){
return $result;
}
else { return '0';}
}

سورس سایت :


<?php if(isset($_POST['track']) && !empty($_POST['track']) ){ $track = $_POST['track'];
$result = searchcode($track);
if ($result=='0'){$msg="کد مورد نظر وجو ندارد ";}
else { ?>
<table border="1" align="right" dir="rtl" width="100%">
<tr>
<td>کد رهگیری</td>
<td>تاریخ</td>
<td>وضعیت</td>
</tr>
<?php while($rows = mysql_fetch_assoc($result)){?>
<tr>
<td><?php echo $rows['trackcode'] ?></td>
<td><?php echo $rows['date'] ?></td>
<td><?php echo $rows['status'] ?></td>
</tr>
<?php } ?>
</table>
<?php }} ?>

این جواب داد تشکر



---
سوال دومم مونده ( آژاکس ) کسی میتونه همین فرم را برام با آژاکس بنویسه؟
تشکر

hamedarian2009
شنبه 17 خرداد 1393, 14:33 عصر
با سلام من تازه نوشتن کد php رو شروع کردم یه صفحه ورود نوشتم که میخاد به صفخه کاربر مورد نظر وارد بشه .یعنی فعلا سه صفحه پی اچ پی بیشتر ندارم :
index که همون لاگین است.
doctor که کاربر مورد نظره و اینجا کدش اهمیت نداره .
و check که مسئول چک صحیح بودن نام کاربری و رمز عبور وارد شده است.
اما وقتی در صفحه index رمز درست رو میزنم فقط یه تیکه کد از صفحه check رو به من نشون میده خیلی سرچ کردم ولی همش همینه....
کدی که اول صفحه index اضافه کردم:





<?php
session_start();

iF($_SESSION['x'] != true){ header("location:../index.php");}
?>





و کدی که تو صفحه چک هست :





<?php session_start();
$link=mysql_connect("localhost","root","");mysql_select_db("project",$link);$r =mysql_query("select * from login where username='".$_POST['username']."' and password='".$_POST['password']."'"); $k =mysql_num_rows($r);if($k > 0){ echo $_POST['username']; echo $_POST['password']; $_SESSION['x']=true; header("location:doctor.php");}else{ echo "error"; header("location:index.php"); }?>






وقتی دکمه ورود رو میزنم این متن رو نشون میده :
0){ echo $_POST['username']; echo $_POST['password']; $_SESSION['x']=true; header("location:doctor.php");}else{ echo "error"; header("location:index.php"); }?>

خواهش میکنم یکی کمکم کنه...!

شما بهتره هم کدهای صفحه login و هم کدهای صفحه check رو در ادیتور مخصوص php (برای مرتب نشان دادن کدها )این سایت کامل قرار بدی تا بتونیم کمکتون کنیم

hamedarian2009
شنبه 17 خرداد 1393, 14:41 عصر
---
سوال دومم مونده ( آژاکس ) کسی میتونه همین فرم را برام با آژاکس بنویسه؟

از جی کوئری ای جکس استفاده کنید درموردش سرچ کنید

mahdimirhendi
شنبه 17 خرداد 1393, 15:35 عصر
از جی کوئری ای جکس استفاده کنید درموردش سرچ کنید
شرمنده مهندس ، میدونم ولی چجوریشو نمیدونم ...
نتونستم از سورس های اماده الگو بگیرم

hamedarian2009
شنبه 17 خرداد 1393, 18:09 عصر
شرمنده مهندس ، میدونم ولی چجوریشو نمیدونم ...
نتونستم از سورس های اماده الگو بگیرم

نمیشه که من کدرو اماده تحویلتون بدم اگه اینکارو انجام بدم مدیر فروم اجازه نمیده به این تاپیک (http://barnamenevis.org/showthread.php?395768-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%85%DB%8C-%D8%AA%D9%88%D8%A7%D9%86%D9%85-%D8%A7%D8%B2-%D8%A8%DB%8C%D9%86-%DA%86%D9%86%D8%AF-%D8%B9%D8%AF%D8%AF-%DB%8C%DA%A9%DB%8C-%D8%B1%D8%A7-%D8%A8%D9%87-%D8%B7%D9%88%D8%B1-%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%DA%A9%D9%86%D9%85%D8%9F)نگاه کن از پست 8 ببعد
شما دوتا صفحه باید داشته باشین یکی برای جستجو و زیرش هم یک div برای نمایش نتایج جستجو
دومین صفحتون هم باید همون کارهایی که با php انجام دادین باشه
اینجا (http://stackoverflow.com/questions/16707648/using-jquery-ajax-to-retrieve-data-from-mysql)میتونه کمکتون کنه

mahdimirhendi
شنبه 17 خرداد 1393, 19:50 عصر
تشکر ولی من هیچی از ایجکس و جاوا نمی فهمم
اگر امکانش هست شما جلوم یه ماهی بگیرید بهم بدید خودم ماهی گیری را یاد میگیرم ....
تشکر

hamedarian2009
شنبه 17 خرداد 1393, 22:58 عصر
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="Mirhendi">
<meta name="description" content="">
<meta name="keywords" content="">
<title>پیگیری وضعیت دستگاه</title>
<link rel="stylesheet" type="text/css" href="my.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
کد پیگیری : <input type="text" id="track"><input type="submit" value="جست و جو" id="btn" />
<div id="content">
<div id="preloader"><b>Loading ...</b></div>
</div>
<script type="text/javascript">
(function(){
var preloader = $('#preloader');
preloader.hide();
$(document).ajaxStart(function(){
preloader.show();
});
$(document).ajaxStop(function(){
preloader.hide();
});
$('#btn').click(function(){
$.ajax({
type: 'POST',
url : 'ajax.php',
data:
{
track : $('#track').val()
},
success: function(data){
$('#content').html(data);
},
error: function(){
alert('سیستم دارای خطا است');
}
});
return false;
});
})();
</script>
</body>
</html>

یک صفحه به نام ajax.php هم درست کن تمام کدهای php و مربوط به دیتابیست رو تو اون صفحه قرار بده نتیجه خودش تو این صفحه نشون داده میشه

mahdimirhendi
شنبه 17 خرداد 1393, 23:51 عصر
اقا تشکر خیلی خیلی خیلی عالی بود