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á
<?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á
Bài liên quan
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
$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
}
@Nhân Tâm: Code tiện thế còn gì nhỉ?