10/10/2018, 09:48

Hỏi về lỗi truy vấn ( PHP & Mysql)

form tìm kiếm có 3 text box là : tukhoa, gia1, gia2

<?php

if((isset($_POST['tukhoa']) && $_POST['tukhoa']!=') || (isset($_POST['gia1']) && $_POST['gia1']!=') || (isset($_POST['gia2']) && $_POST['gia2']!='))
{
$tukhoa=trim(strtoupper($_POST['tukhoa']));
$gia1=$_POST['gia1'];
$gia2=$_POST['gia2'];
}

$query = "";

if($tukhoa!=')
{
$query .= " upper(tensp) LIKE '%$tukhoa%' ";
}

if($gia1!=')
{
$query .= " && (gia > '$gia1') ";

}

if( $gia2!=')
{
$query .= " && (gia < '$gia2' )";

}

$sql="SELECT * FROM sanpham WHERE $query";

$result = mysql_query ($sql);

while ( $row = mysql_fetch_array ($result) ) {
?>

// dưới này hiển thị ra : row[],..........


xin hỏi các câu lệnh sai chỗ nào mà ko hiển thị được data. em debug thì lại báo chỗ dòng WHILE. khó hiểu quá
hoangcn02 viết 11:49 ngày 10/10/2018
Được gửi bởi younguno
form tìm kiếm có 3 text box là : tukhoa, gia1, gia2

<?php

if((isset($_POST['tukhoa']) && $_POST['tukhoa']!='') || (isset($_POST['gia1']) && $_POST['gia1']!='') || (isset($_POST['gia2']) && $_POST['gia2']!=''))
{
$tukhoa=trim(strtoupper($_POST['tukhoa']));
$gia1=$_POST['gia1'];
$gia2=$_POST['gia2'];
}

$query = "";

if($tukhoa!='')
{
$query .= " upper(tensp) LIKE '%$tukhoa%' ";
}

if($gia1!='')
{
$query .= " && (gia > '$gia1') ";

}

if( $gia2!='')
{
$query .= " && (gia < '$gia2' )";

}

$sql="SELECT * FROM sanpham WHERE $query";

$result = mysql_query ($sql);

while ( $row = mysql_fetch_array ($result) ) {
?>

// dưới này hiển thị ra : row[],..........


xin hỏi các câu lệnh sai chỗ nào mà ko hiển thị được data. em debug thì lại báo chỗ dòng WHILE. khó hiểu quá
Trước cái dòng $result = mysql_query ($sql); chèn thêm echo $sql; để xem cái câu sql nó ntn
truongson1810 viết 11:59 ngày 10/10/2018
Được gửi bởi younguno
form tìm kiếm có 3 text box là : tukhoa, gia1, gia2
$query = "";

if($tukhoa!='')
{
$query .= " upper(tensp) LIKE '%$tukhoa%' ";
}

if($gia1!='')
{
$query .= " && (gia > '$gia1') ";

}

if( $gia2!='')
{
$query .= " && (gia < '$gia2' )";

}

$sql="SELECT * FROM sanpham WHERE $query";
Nếu từ khóa không có, mà chỉ có giá 1 hoặc giá 2

cái $query của chú sẽ có dạng
'&& (gia > x )' hoặc '&& (gia > x) && (gia < y)' hoặc '&& (gia < y')

Khi đó câu sql của chú có dạng

"SELECT * FROM sanpham WHERE && ...."

Câu này sai cú pháp SQL , do đó query không được, không query được lấy đâu result cho chú fetch --> Báo lỗi chỗ while đúng rồi
phuongthom viết 11:49 ngày 10/10/2018
code thế này tiện hơn này
Code:
<?php
$gia1 = 0;
$gia2 = 9999999999999999999;

if($_POST['gia1'])
{ 
$gia1 = intval($_POST['gia1']);
}
if($_POST['gia2'])
{ 
$gia2 = intval($_POST['gia2']);
}


$query = "gia > '$gia1' AND gia < '$gia2'";

if($_POST['tukhoa'])
{
$tukhoa = trim(strtoupper($_POST['tukhoa']));
$query .= " AND upper(tensp) LIKE '%$tukhoa%'";
}

$sql="SELECT * FROM sanpham WHERE $query";

$result = mysql_query ($sql);

while ( $row = mysql_fetch_array ($result) )
{
  // code
}
?>
Nhân Tâm viết 11:52 ngày 10/10/2018
Như thế này còn tiện nữa nè bác phuongthom

PHP Code:
$condition = !empty($_POST***91;'gia1'***93;) ? 'gia > '.intval($_POST***91;'gia1'***93;) : '';
$condition .= !empty($_POST***91;'gia2'***93;) ? 'AND gia < '.intval($_POST***91;'gia2'***93;) : '';
$condition .= !empty($_POST***91;'tukhoa'***93;) ? " AND upper(tensp) LIKE '%".trim(strtoupper($_POST***91;'tukhoa'***93;))."%'" '';

$sql "SELECT * FROM sanpham WHERE $condition";
$result mysql_query ($sql);
while ( 
$row mysql_fetch_array ($result) ) {
  
// parse html

phuongthom viết 11:54 ngày 10/10/2018
@Nhân Tâm: như đã nói ở trên rồi đó, lỗi ở vài trường hợp
1024KB viết 11:58 ngày 10/10/2018
@phuongthom: Lỗi ở đâu thế.
@Nhân Tâm: Code tiện thế còn gì nhỉ?
Bài liên quan
0