PDA

View Full Version : سوال: جستجو در دیتابیس



gmh1993
یک شنبه 29 تیر 1393, 01:30 صبح
سلام
من کد زیر رو نوشتم ولی متاسفانه تابع isset مقدار false رو برمیگردونه ، لطفا اشکالش رو بگید ...

هدف : با کلیک بر روی باتن تمام موارد موجود در دیتابیس که با مقداری از آنها در تکست باکس ها وجود دارد ، نمایش داده میشود .

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>


<body>
<?php
$id=$fname=$lname="";
if(isset($_REQUEST["fname"])){
$id=$_REQUEST["id"];
$fname=$_REQUEST["fname"];
$lname=$_REQUEST["lname"];
}
?>
<form action=<?php echo($_SERVER['PHP_SELF']) ?> method="post" name="form1" id="1">
<table>
<tr><td>ID:</tr><td> <input name="id" type="text" id="id" value=<?php echo($id)?>>
<tr><td>First Name:</tr><td> <input name="firstName" type="text" id="fname" value=<?php echo($fname)?>>
<tr><td>Last Name:</tr><td> <input name="lastName" type="text" id="lastName" value=<?php echo($lname)?>>
</table>
<input type="submit" value="search">
</form>

<?php
if(isset($_REQUEST["fname"])){
$link = mysql_connect('localhost', 'root', '4101045');
if (!$link) {
die('Could not connect: ' . mysql_error());
}

if(!mysql_select_db('my_db', $link)){
die("Not Selected ". mysql_error);
}

$sqlString = "select* from clients";
if($id!="" or $fname!="" or $lname!="")
$sqlString .= "where ";
if($id!="")
$sqlString .= "id='$id' or ";
if($fname!="")
$sqlString .= "first_name like '%$fname%' or ";
if($lname!="")
$sqlString .= "last_name like '%$lname%' or ";
if($sqlString[strlen($sqlString)-2]=="r"){
$sqlString[strlen($sqlString)-2]="";
$sqlString[strlen($sqlString)-3]="";
}

$res = mysql_query($sqlString, $link);
if(!$res)
die(mysql_error());
$r=mysql_fetch_row($res);
if(!$r)
die("Not Found!");
do{
echo($r[0]."."."<br>");
echo("first_name:".$r[1]."<br>");
echo("last_name:".$r[2]."<br>");
echo("ave:".$r[3]."<br>");
echo("<br><br>");
}while($r=mysql_fetch_row($res));
mysql_close($link);
}
?>
</body>
</html>

H:Shojaei
یک شنبه 29 تیر 1393, 02:26 صبح
سلام...
شما باید در $_REQUEST نام فیلد متن رو وارد کنید نه id اون رو ببینید:

$_REQUEST['firstname']

gmh1993
یک شنبه 29 تیر 1393, 02:42 صبح
سلام...
شما باید در $_REQUEST نام فیلد متن رو وارد کنید نه id اون رو ببینید:

$_REQUEST['firstname']

منظورتون از فیلد متن چیه؟

H:Shojaei
یک شنبه 29 تیر 1393, 02:50 صبح
منظور input ه با تایپه text

gmh1993
یک شنبه 29 تیر 1393, 02:57 صبح
منظور input ه با تایپه text
متاسفانه بازم درست نشد

H:Shojaei
یک شنبه 29 تیر 1393, 03:12 صبح
شما هر مقداری که میخواید از فرم ها بگیرید با PHP باید با نام اشیا کار کنید و مقدار رو بگیرید نه با id...
این کد رو امتحان کنید...


<!doctype html><html><head><meta charset="utf-8"><title>Untitled Document</title></head> <body><?php $id=$fname=$lname=""; if(isset($_REQUEST["submit"])){ $id=$_REQUEST["id"]; $fname=$_REQUEST["fname"]; $lname=$_REQUEST["lname"]; }?> <form action=<?php echo($_SERVER['PHP_SELF']) ?> method="post" name="form1" id="1"> <table> <tr><td>ID:</tr><td> <input name="id" type="text" id="id" value=<?php echo($id)?>> <tr><td>First Name:</tr><td> <input name="firstName" type="text" id="fname" value=<?php echo($fname)?>> <tr><td>Last Name:</tr><td> <input name="lastName" type="text" id="lastName" value=<?php echo($lname)?>> </table> <input name="submit" type="submit" value="search"> </form> <?php if(isset($_REQUEST["submit"])){ $link = mysql_connect('localhost', 'root', '4101045'); if (!$link) { die('Could not connect: ' . mysql_error()); } if(!mysql_select_db('my_db', $link)){ die("Not Selected ". mysql_error); } $sqlString = "select* from clients"; if($id!="" or $fname!="" or $lname!="") $sqlString .= "where "; if($id!="") $sqlString .= "id='$id' or "; if($fname!="") $sqlString .= "first_name like '%$fname%' or "; if($lname!="") $sqlString .= "last_name like '%$lname%' or "; if($sqlString[strlen($sqlString)-2]=="r"){ $sqlString[strlen($sqlString)-2]=""; $sqlString[strlen($sqlString)-3]=""; } $res = mysql_query($sqlString, $link); if(!$res) die(mysql_error()); $r=mysql_fetch_row($res); if(!$r) die("Not Found!"); do{ echo($r[0].".".""); echo("first_name:".$r[1].""); echo("last_name:".$r[2].""); echo("ave:".$r[3].""); echo(""); }while($r=mysql_fetch_row($res)); mysql_close($link); }?></body></html>

gmh1993
یک شنبه 29 تیر 1393, 05:43 صبح
شما هر مقداری که میخواید از فرم ها بگیرید با PHP باید با نام اشیا کار کنید و مقدار رو بگیرید نه با id...
این کد رو امتحان کنید...
ممنونم ، این درست شد ولی این دفعه از دستور MySQL ایراد میگیره! از where به بعد ...

H:Shojaei
یک شنبه 29 تیر 1393, 15:48 عصر
چه خطایی میده؟؟
احتمالا از مقدار دهی ها هست...
نوع فیلد id رو چی کذاشتین اگه int هست باید داخل کوئری مقدار رو داخل ' ' نذارید اینطوری:
where id=$id and name='$name'

gmh1993
یک شنبه 29 تیر 1393, 19:13 عصر
چه خطایی میده؟؟
احتمالا از مقدار دهی ها هست...
نوع فیلد id رو چی کذاشتین اگه int هست باید داخل کوئری مقدار رو داخل ' ' نذارید اینطوری:
where id=$id and name='$name'
دستور mysql :

select * from clients WHERE first\_name LIKE '%mas%'
خطا :

Sory!You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

H:Shojaei
یک شنبه 29 تیر 1393, 21:10 عصر
امکان داره اسم جدولتون کلمه کلیدی باشه این رو امتحان کنید:
select * from `clients` WHERE first\_name LIKE '%mas%'