برگزیده های پرشین تولز

مشکل با جستجو در دیتابیس

mizbanserver

کاربر تازه وارد
تاریخ عضویت
22 می 2013
نوشته‌ها
18
لایک‌ها
0
با سلام خدمت دوستان

بنده فرمی رو برای جستجو در دیتابیس طراحی کردم ولی با هر روشی هم امتحان کردم جواب نمی ده کد هم این هست

PHP:
<?php 
if(isset($_POST['specialty']) || isset($_POST['city']) || isset($_POST['madrak']) || isset($_POST['sex']) ){
        $specialty = htmlspecialchars($_POST['specialty']);
        $city = htmlspecialchars($_POST['city']);
        $madrak = htmlspecialchars($_POST['madrak']);
        $sex = htmlspecialchars($_POST['sex']);
        mysql_query("SET CHARACTER SET utf8");
$query = mysql_query("SELECT * FROM doctor WHERE specialty ='$specialty' AND city ='$city' AND madrak='$madrak' AND sex= '$sex'",$connect) or die(mysql_error($connect));
    echo $num_rows= mysql_num_rows($query);
        if($num_rows<1)
        {
        echo'
        موردی یافت نشد
        ';
         
        }else{
         
        while($row = mysql_fetch_assoc($query)){
            echo'        '.$row['name'].'  /   '.$row['family'].'  /   '.$row['city'].'  /   '.$row['email'].'  /       ';
        }

    }
} 
?>

ممنون میشم دوستان راهنمایی کنند
با تشکر.
 

phpmastercode

کاربر تازه وارد
تاریخ عضویت
22 سپتامبر 2013
نوشته‌ها
27
لایک‌ها
6
دوست عزیز یه مشکلی که میتونم به شما بگم اینه که در کوئری شما در متغیر query$ در واقع شما چند تا AND پشت هم رو آوردین و با توجه به کدتون این یه مشکل اساسی داره و اون اینکه
مثلا فرض کنید چونکه شما در اول کدتون در متد iisset با عبارت ( یا || ) در واقع گفتین که میتونه فقط یکی از چند متغیر جستجو ست بشه پس مثلا اگه من در فرم جستجو فقط مثلا فیلد
specialty رو پر کنم پس شرط خط اول درست میشه و برنامه به ادامه میره ولی مشکل اینجاست که در کوئریتون در query$ شما از چند AND باهم و مرتبط استفاده کردین و وقتی فقط یک متغیر مقدار داره
ولی بقیه ندارن و در دیتابیس هم فیلد خالی ندارین پس معلومه که نتیجه ای از دیتابیس نمیاد با اینکه کوئریتون درسته.
متاسفانه الان وقت کافی ندارم که براتون کل کد رو درست کنم ولی امیدواریم تا اینجا هم این راهنمایی بدردتون بخوره.
یا حق...
 

sh.n.n786

Registered User
تاریخ عضویت
28 سپتامبر 2011
نوشته‌ها
454
لایک‌ها
94
درود و ...

از این کد استفاده کنید نوع صحیح کوئری Database هم ببینید

PHP:
 <?php <?php
function Escape($value) {
    return htmlspecialchars($value);
}

$POST = count($_POST) > 0 ? array_map('Escape' , $_POST) : '';
if(isset($POST)) {
    $query = isset($POST['specialty']) ? " `specialty` ='{$POST['specialty']}' AND" : '';
    $query .= isset($POST['city']) ? " `city` ='{$POST['city']}' AND" : '';
    $query .= isset($POST['madrak']) ? " `madrak` ='{$POST['madrak']}' AND" : '';
    $query .= isset($POST['sex']) ? " `sex` ='{$POST['sex']}'" : '';
    $query = mysql_query("SELECT * FROM `doctor` WHERE({$query})",$connect) or die(mysql_error($connect));
    $num = mysql_num_rows($query);
    if($num > 0)
    {
        while($row = mysql_fetch_assoc($query)){
        echo $row['name'] . ' / ' . $row['family'] . ' / ' . $row['city'] . ' / ' . $row['email'] . ' / ';
     } 
     else {
        echo'موردی یافت نشد';
        }
    }
} 
?>

موفق باشید
 
بالا