PHP Çoklu Açılır

4 Cevap

Bu benim html kısmi kodu

<select name="number[]" style="width: 350px;" multiple="multiple" size="2">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
<option value="four">four</option>
</select>

PHP kodu

$name = $_POST["name"];
$number= $_POST["number"];
$sql = mysql_query("SELECT * FROM users WHERE name LIKE '%$name%' AND ");

Ne i böylece sorgu çalışacaktır sonra VE numarası için eklemek gerekir? Ben foreach çalıştı ama tam olarak sorguda işe yaramadı.

4 Cevap

Nasıl hakkında:

$name = $_POST["name"];
$number= $_POST["number"];

if(!is_array($number)){
  // some error message or what.
}

$squery = '';
$a = array();
foreach($number as $n){
  // do some validation for $n
  // $number should be an array, so don't validate it.
  $a[] = "`number` = '$n'";
}
$squery = implode(' OR ',$a);
unset($a);

$query = "SELECT * FROM users WHERE `name` LIKE '%$name%' AND (".$squery.")";
$res = mysql_query($query);

Sanırım böyle bir şey

$sql = mysql_query("SELECT * FROM users WHERE name LIKE '%$name%' AND number IN (" . implode(',', $_POST['number']) . ')');

implode dokümantasyon

Ayrıca kullanıcılardan gelen verileri kaçan veya web sitesi olacak konusunda dikkatli olmalıdır değil lütfen SQL injection vulnerable.

$number= $_POST["number"][i];

Eğer döngü içinde koymak

Benim yaklaşım böyle bir şey olurdu:

<?php
if(is_array($_POST['number']))
{
   $numbers = implode("','", array_walk($_POST['number'],' mysql_real_escape_string')));
   $result = mysql_query("SELECT * FROM users WHERE name LIKE '%" . mysql_real_escape_string($name%) . "' AND number IN ('" . $numbers . "')") or die(mysql_error());
}
?>