انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل جستجو در دیتابیس از طریق php

مشکل جستجو در دیتابیس از طریق php

#1
Bug 
 سلام و عرض ادب خدمت دوستان
بعد از کلی گشتن توی نت و مطرح کردن مشکلم توی فروم های مختلف سر از کلیدستان در آوردم و تنها امیدم به اینجاست

قراره توی یه صفحه ی html کاربر نام خانوادگی رو وارد کنه و توی دیتابیس جستجو بشه که :
این نام خانوادگی وارد شده وجود داره یانه  ؟
اگه داره شماره ی قطعه ی ثبت شده توی دیتابیس مربوط به اون چیه و نمایش داده بشه .
همین خیلی هم آسونه . فقط من یاد ندارم .
کد پی‌اچ‌پی:
<?php

$h
=$_POST['f'];

$link=mysqli_connect('localhost''saderzam_arazi1''Arazi1pass''saderzam_arazi1') or die('Error:'mysqli_error($link));

mysql_query("SET NAMES 'utf8'"$link);
mysql_query("SET CHARACTER SET 'utf8'"$link);
mysql_query("SET character_set_connection = 'utf8'"$link);

$query=mysql_query("SELECT * FROM  'arazi' WHERE 'family' LIKE  '%h%'");

$result=mysqli_query($link$query);

$row=mysqli_fetch_array($result);

echo 
$row ;
echo 
$row['ghete'];

$row=mysqli_fetch_array($result) ;
mysqli_close($link);

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>سامانه جستجوی اراضی کارکنان</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
body {
    background-color: #CFC;
}
</style>
</head> 

این هم نمایی از دیتابیسم :

   
پاسخ

مشکل جستجو در دیتابیس از طریق php

#2
سلام.
بنده یک کد را ارائه می دهم، با الهام از آن، کدهای مورد نظر خود را بنویسید.
یک صفحه PHP با نام search.php می سازیم که شامل چارچوب HTML صفحه، یک فرم HTML و یک سری کد PHP برای پردازش ورودی دریافت شده توسط فرم می باشد :

کد پی‌اچ‌پی:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
</
head>

<
body>


<?
php
if(isset($_POST['words'])){
    
$words $_POST['words'];
}
?>


<h2>جستجو :</h2>


<br /><br /><br />

<div style="text-align:center;">
<form method="post" action="search.php">
<input type="text" name="words" <?php if(isset($words)){echo "value=\"".$words."\"";} ?>>
<input type="submit" value="جستجو">
</form>
</div>

<br /><br />

<div>

<?php
if(isset($_POST['words'])){
    
$words $_POST['words'];
    
    
// اتصال به پایگاه داده
    
$con=mysql_connect('localhost','root',''); // name and username and password
    
mysql_select_db("database_name",$con); // database name
    
mysql_query("SET character_set_results=utf8;",$con);
    
mysql_query("SET character_set_client=utf8;",$con);
    
mysql_query("SET character_set_connection=utf8;",$con);
    
mysql_query("SET character_set_database=utf8;",$con);
    
mysql_query("SET character_set_server=utf8;",$con);
    
    
$result mysql_query("SELECT * FROM table_name WHERE 
                                                        column_name 
                                                    LIKE '%"
.$words."%'
                                                    "
,$con);
    while(
$row mysql_fetch_array($result)){
        
$column_1 $row['column_1'];
        
$column_2 $row['column_2'];
        
// your code
    
}
                                                         
    
mysql_close($con);
}
?>


</div>


</body>
</html> 

اسم صفحه مهم می باشد زیرا در فرم تعیین کرده ایم که اطلاعات به صفحه با همین نام (search.php) ارسال شوند (صفحه جداگانه نیز می توان تعیین کرد، ولی بهتر است در همین صفحه ورودی ها را پردازش کنیم) :

کد پی‌اچ‌پی:
<form method="post" action="search.php"

پس اگر نام صفحه را متفاوت انتخاب کردید، نام جدید را در کد بالا بنویسید.
ابتدا با کد PHP زیر، اگر کاربر یک عبارت را جستجو کرده باشد، آن را دریافت کرده و در متغیری با نام words ذخیره می کنیم :

کد پی‌اچ‌پی:
<?php
if(isset($_POST['words'])){
    
$words $_POST['words'];
}
?>

تابع isset برای تشخیص جستجو یا عدم جستجو به کار رفته، زیرا اگر کاربر بر روی دکمه submit فرم کلیک کرده باشد، مقدار وارد شده با روش POST و با نام words ، به همین صفحه ارسال می شود.

با خط زیر از کدها، تعیین کرده ایم که اگر کاربر یک عبارت را جستجو کرد، آن عبارت در جعبه متن درون فرم نمایش داده شود (شاید بخواهد کلمه جدیدی را به آن اضافه کرده و دوباره جستجو کند، پس بهتر است که جعبه متن خالی نمایش داده نشود) :

کد پی‌اچ‌پی:
<input type="text" name="words" <?php if(isset($words)){echo "value=\"".$words."\"";} ?>

در آن، با تابع isset چک می کنیم که متغیر words تعریف شده یا نه.

سپس کدهای پردازشی برای دریافت اطلاعات و نمایش آنها را داریم :

کد پی‌اچ‌پی:
<?php
if(isset($_POST['words'])){
    
$words $_POST['words'];
    
    
// اتصال به پایگاه داده
    
$con=mysql_connect('localhost','root',''); // name and username and password
    
mysql_select_db("database_name",$con); // database name
    
mysql_query("SET character_set_results=utf8;",$con);
    
mysql_query("SET character_set_client=utf8;",$con);
    
mysql_query("SET character_set_connection=utf8;",$con);
    
mysql_query("SET character_set_database=utf8;",$con);
    
mysql_query("SET character_set_server=utf8;",$con);
    
    
$result mysql_query("SELECT * FROM table_name WHERE 
                                                        column_name 
                                                    LIKE '%"
.$words."%'
                                                    "
,$con);
    while(
$row mysql_fetch_array($result)){
        
$column_1 $row['column_1'];
        
$column_2 $row['column_2'];
        
// your code
    
}
                                                         
    
mysql_close($con);
}
?>

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

کد پی‌اچ‌پی:
// your code 

کد زیر برای اتصال به پایگاه داده می باشد که باید پارامترهای آن را متناسب با پایگاه داده خود تغییر بدهید :

کد پی‌اچ‌پی:
$con=mysql_connect('localhost','root',''); // name and username and password
mysql_select_db("database_name",$con); // database name 

با کد زیر هم جستجو کردیم که باید نام جدول و نام ستون مناسب برای مورد خود را در آنها بنویسید :

کد پی‌اچ‌پی:
$result mysql_query("SELECT * FROM table_name WHERE 
                                                        column_name 
                                                    LIKE '%"
.$words."%'
                                                    "
,$con); 

و بعد خواندن ردیف هایی که جدول برگردانده است (بر اساس جستجو) که باید در آن، نام ستون هایی که می خواهید مقادیر آنها خوانده شود را بنویسید :

کد پی‌اچ‌پی:
while($row mysql_fetch_array($result)){
        
$column_1 $row['column_1'];
        
$column_2 $row['column_2'];
        
// your code
    


در ضمن، برای دریافت متغیر words ، مسائل امنیتی مربوط به SQL injection (و سایر موارد مربوط به دریافت مقدار از کاربر) را رعایت نمایید (این عبارت را در اینترنت جستجو کنید، متوجه منظورم خواهید شد). همچنین نگاهی به کلید زیر بیندازید (کلید شماره 2502) :

http://www.kelidestan.com/keys/keys.php?key=2502

هر بخشی از کدها را که درک نکردید، برای توضیحات بیشتر، به مباحث آموزش PHP و آموزش MySQL مراجعه کنید :

http://www.kelidestan.com/php-education/index.php

http://www.kelidestan.com/mysql/index.php

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

مشکل جستجو در دیتابیس از طریق php

#3
(۱۳۹۳/۱۲/۰۸, ۱۰:۵۴ ق.ظ)'admin' نوشته: سلام.
بنده یک کد را ارائه می دهم، با الهام از آن، کدهای مورد نظر خود را بنویسید.
یک صفحه PHP با نام search.php می سازیم که شامل چارچوب HTML صفحه، یک فرم HTML و یک سری کد PHP برای پردازش ورودی دریافت شده توسط فرم می باشد :

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

ولی میخوام که اعداد رو هم مورد جستجو قرار بدم
ستون ghete از نوع عددی هست . کد خاصی رو باید اضافه کنم ؟
کد پی‌اچ‌پی:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
</
head>

<
body>


<?
php
if(isset($_POST['words'])){
    
$words $_POST['words'];
}
?>


<h2>جستجو :</h2>

<br /><br /><br />

<div style="text-align:center;">
<form method="post" action="search.php">
<input type="text" name="words" <?php if(isset($words)){echo "value=\"".$words."\"";} ?>>
<input type="submit" value="جستجو">
</form>
</div>

<br /><br />

<div>

<?php
if(isset($_POST['words'])){
    
$words $_POST['words'];
    
    
// اتصال به پایگاه داده
    
$con=mysql_connect('localhost','saderzam_arazi','Arazipass'); // name and username and password
echo "اتصال به MYSQL انجام شد .<br />";
    
mysql_select_db("saderzam_arazi",$con); // database name
echo "اتصال به دیتابیس صورت گرفت .<br />";
    
mysql_query("SET character_set_results=utf8;",$con);
    
mysql_query("SET character_set_client=utf8;",$con);
    
mysql_query("SET character_set_connection=utf8;",$con);
    
mysql_query("SET character_set_database=utf8;",$con);
    
mysql_query("SET character_set_server=utf8;",$con);
    
    
$result mysql_query("SELECT * FROM arazi WHERE ghete LIKE '$words' ",$con);  
        while(
$row mysql_fetch_array($result)){
        
$column_1 $row['name'];
        
$column_2 $row['family'];
        echo 
$column_2 ;
    }
                                                         
    
mysql_close($con);
}
?>


</div>


</body>
</html> 

 
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان