چطور با انتخابای متفاوت از فرم کوئری مناسب داشته باشم؟

PHP

توسط mahbobe-prog در 3 سال پیش
0 1.8k 7 3 سال پیش
mahbobe-progrockstarrezamax
0

سلام وقت بخیر من یه فرم دارم که حالت سرچ میخواد داشته باشه و کاربر میتونه اینپوت یا اینپوتایی رو کامل کنه برا سرچ زدن حالا نمیدونم کوئری رو چطوری بنویسم که بتونه هر چند تا اینپوتکه کاربر پر کنه رو پشتیبانی کنه و نتیجه رو درست بهم بده لطفا راهنماییم کنین 

0

> سلام وقت بخیر من یه فرم دارم که حالت سرچ میخواد داشته باشه و کاربر میتونه اینپوت یا اینپوتایی رو کامل کنه برا سرچ زدن حالا نمیدونم کوئری رو چطوری بنویسم که بتونه هر چند تا اینپوتکه کاربر پر کنه رو پشتیبانی کنه و نتیجه رو درست بهم بده لطفا راهنماییم کنین 
خواهش یکی جوابمو بده . خیلی لازم دارمش  :(
0

البته به کدهای php کوئری نمیگن نمیدونم منظور رو درست گرفتم یا نه مثال هم که نذاشتید اما فکر کنم به اینپوت از نوع آرایه نیاز دارید:

<?php
if(!empty($_POST['search'])){
		$searches = $_POST['search'];
		
		foreach ($searches as $k => $v) {
			printf("SEARCH %s<br>",$v);
		}
		
}

?>
<form action="" method="post">
	<input type="text" name="search[]" />
	<input type="text" name="search[]" />
	<input type="text" name="search[]" />
	<input type="submit" value="submit" />
</form>

نحوه دریافت با php هم به همین صورته که نوشتم.

0

نه منظورم این نیس منظورمه کوئری که باید برا اس کیوال بنویسم رو میگم از فرمی که حالت سرچ داره کاربر ممکنه اینپوت یا اینپوتایی رو پر کنه که طبق اون اطلاعات وارد میکنه براش سرچ انجام بشه  الان نمیدونم که چجوری کوئری اس کیوال رو بنویسم که سرچ درست و همون طور نتیجه ای که میخوام رو بهم بده لطفا راهنماییم کنین :-/

0

> نه منظورم این نیس منظورمه کوئری که باید برا اس کیوال بنویسم رو میگم از فرمی که حالت سرچ داره کاربر ممکنه اینپوت یا اینپوتایی رو پر کنه که طبق اون اطلاعات وارد میکنه براش سرچ انجام بشه  الان نمیدونم که چجوری کوئری اس کیوال رو بنویسم که سرچ درست و همون طور نتیجه ای که میخوام رو بهم بده لطفا راهنماییم کنین :-/
کوئری رو که برای دریافت اطلاعات از دیتابیس نوشتین اینجا قرار بدین تا بررسی بشه و مشکل رفع بشه
0
function filter()
{
	global $array , $tamplate ;
		if(isset($_POST['com_code']))
			$q ="`com_code` = '".$_POST['com_code']."'" ;
		else
			$q = "" ;	
		if(isset($_POST['com_nationalCode']))
			$q1 ="`com_nationalCode` = '".$_POST['com_nationalCode']."'" ;			
		else	
			$q1 = "" ;

		$sql = "SELECT * FROM `com_complaint` WHERE '".$q."' AND '".$q1."'" ;
		$query = mysql_query($sql) ;
		while($res = mysql_fetch_assoc($query) )
		{
			$array[] = $res ;
		}

}

شما فرض کنین مثلا محتوای  کد خالی باشه پس متغیر q خروجیش خالیه اون وقت توی کوئری اون [size=x-small][font=Monaco, Consolas, Courier, monospace]AND که هس بعد کوئری جواب نمیده چون محتوای q خالیه [/font][/size] [size=x-small][font=Monaco, Consolas, Courier, monospace]نمیدونم چجوری همینا رو درستش کنم .[/font][/size] [size=x-small][font=Monaco, Consolas, Courier, monospace]اینپوتا بیشترن من فقط همین دوتا رو گذاشتم برا نمونه [/font][/size] [size=x-small][font=Monaco, Consolas, Courier, monospace]لطفا راهنماییم کنین[/font][/size]

1

شما قصد داری این کوئری به گونه باشه که اگر یکی از فیلدهای جستجو پر نشد بازهم نتیجه دریافت کنی پس نباید از AND استفاده بشه باید از OR استفاده کنی. جدول زیر رو ببین تفاوت AND و OR رو وقتی دوتا پارامتر q1 و q2 داریم بیان میکنه:

q1  |  q2  |  OR  |  AND
****************************
true | true | true | true
true | false| true | false
false| true | true | false
false| false| false| false

خب حالا فرم زیر رو در نظر بگیر:

<form method="post">
    <input type="text" name="q1" />
    <input type="text" name="q2" />
    <input type="submit" name="submit" value="search" />
</form>

برای دریافت داده از دیتابیس از کوئری زیر متناسب با فرم استفاده میکنیم:$sql=" SELECT * FROM users WHERE first_name like '%".$q1."%' OR last_name like '%".$q2."%'"; اگر در مورد متد like که در کد بالا استفاده شده اطلاعاتی ندارین از لینکهای زیر استفاده کنید: http://www.w3schools.com/sql/sql_like.asp http://www.tutorialspoint.com/mysql/mysql-like-clause.htm

0

خیلی عالی توضیح دادین ممنونم  :rolleyes:

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید