How to get the same value from different lines using php

I have a database and 1 table name .table: cranetype they have 4 fields (cf_did, cf_firstname, cf_comment, cf_cranetype).

below.

cf_did  cf_firstname cf_comment   cf_cranetype 

1       Alexy         tfhgfnjh       2,3    
2       Thomas        fdghfgh       11,6,3  
3       Thomas         cgjkjhl      5,6,11,3        
4       Thomasxc       cgjkjhl      1,6,9,4         
5       Thomaseg       fdghgh       11,12,3     
6       Thomasm        fsgdfgbd     11,6,3  
7       Thomabs        dgtrty       7,9,11  
8       Rdgfghfdg      bfdhh        1,3,4   
9       Gngfdytyt      eertret      1,6,3   
10      Dvbgfj         hfdhhyrtyr   6,3     
11      Hnfhghyt       bfgfdhg      11,6,3  
12      Adgfdyh      dfsdtrst        1  
13      Rida       gfhgfjgh         3,7,68  

I have a selection box, they have values (1,2,3,4,...). If I select the value 1 from the selection box.

I want to check the database table field (cranetype) cf_cranetype.

For instance:

$sql= mysql_query("SELECT * FROM `cranetype` WHERE `cf_cranetype`='1'");
while($row=mysql_fetch_array($sql))
{
    <?Php echo $row['cf_did'];?>
}

I need the output as follows:

if cf_cranetype =1.
4,8,9,12. (these are cf_did)

My code is:

$cranetype = $_POST['cranetype'];
$words = explode(',', $cranetype);
if (strlen($cranetype) > 0) {
    $Where = '';
    foreach ($words as $Item) {
        $Where = "cf_cranetype LIKE '%$Item%' AND";
    } 
    $Where = substr($Where, 0, -4);
    $list_ul = "(SELECT * FROM cf_directory` WHERE $Where)";
    $query = mysql_query($list_ul) or die(mysql_error());
}
+4
source share
3 answers

The solution uses find_in_setand group_concat:

SELECT GROUP_CONCAT(cf_did) as cf_dids
FROM `cranetype` 
WHERE FIND_IN_SET('1', `cf_cranetype`) > 0;

Demo:

create table cranetype(cf_did int,  cf_firstname varchar(100), cf_comment varchar(100),  cf_cranetype varchar(50)); 
insert into cranetype values
(4,       'Thomasxc',       'cgjkjhl',      '1,6,9,4'),         
(7,       'Thomabs',        'dgtrty',       '7,9,11'),  
(8,       'Rdgfghfdg',      'bfdhh',        '1,3,4'),   
(9,       'Gngfdytyt',      'eertret',      '1,6,3'),
(12,      'Adgfdyh',      'dfsdtrst',        '1');

SELECT GROUP_CONCAT(cf_did) as cf_dids
FROM `cranetype` 
WHERE FIND_IN_SET('1', `cf_cranetype`) > 0;

Output:

mysql> SELECT GROUP_CONCAT(cf_did) as cf_dids
    -> FROM `cranetype`
    -> WHERE FIND_IN_SET('1', `cf_cranetype`) > 0;
+----------+
| cf_dids  |
+----------+
| 4,8,9,12 |
+----------+
1 row in set (0.00 sec)
+2
source

use Find_in_set () in mysql.

SELECT * FROM cranetype WHERE FIND_IN_SET ('1',cf_cranetype);
0
source

FIND_IN_SET. , .

SELECT * FROM cranetype WHERE FIND_IN_SET ('1',cf_cranetype); enter image description here

0

All Articles