2015-07-14 10 views
9

Veritabanı:Tekrar Json bilgileri nasıl kaldırılır?

[{"name":"Cemera","catename":"canon","filepath":"/img/jdf.png"},{"name":"Cemera","catename":"canon","filepath":"/img/sdsd.jpg"}] 

istediğim: nasıl ben aşağıda göstermek istiyorum tekrarını kaldırmak için,

$_GET['id']="1"; 
$json_response = array(); 
    if(isset($_GET['id'])) 
    { 
     $id=$_GET['id'];   
$select = mysql_query("SELECT product.name,category.catename,attactments.filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."' "); 
    while ($row = mysql_fetch_array($select , MYSQL_ASSOC)) {  
     $json_response[] = $row; 
     } 
    } 
echo $val= str_replace('\\/', '/', json_encode($json_response)); 

sonuç tekrar bilgi:

`--> product table 
id name  cid  uploadKey 
1 Cemera  1  7365 
2 Notebook 2  7222` 

`--> category table 
id catename 
1  canon 
2  toshiba` 


`--> attactments table 
id  uploadKey  filepath 
1  7365   /img/jdf.png 
2  7365   /img/sdsd.jpg` 

Bu kod json dosyası oluşturmak için Bunu nasıl göstermek için, nasıl düzenleriz:

[{"name":"Cemera","catename":"canon","filepath":"/img/jdf.png","filepath":"/img/sdsd.jpg"}] 
+0

, bu size yardımcı olacaktır: http://stackoverflow.com/questions/23507853/remove-duplicate-objects-from-json-array http://stackoverflow.com/questions/18034696/rebuild-a-json-data- remove-duplicate-value-in-one-child-node –

cevap

2

Like You GROUP_CONCAT()filepath, Sonucun ben yardımcı olur düşünüyorum

{"name":"Cemera","catename":"canon","filepath":["\/img\/jdf.png","\/img\/sdsd.jpg"]} 
+0

Cevabınız için teşekkür ederiz, bana bu [{"name": "Cemera", "catename": "canon", "filepath": "gibi verebilir misiniz?" /img/jdf.png","filepath":"/img/sdsd.jpg "}] – DNu

+0

Aynı anahtarda farklı değerler vermeyi nasıl umuyorsunuz? mümkün mü? – KTAnj

1

Tüm dosya yolu GROUP_CONCAT kullanılarak virgülle ayrılmış olmalıdır. Bu

$select = mysql_query("SELECT product.name,category.catename,attactments.filepath 
FROM product 
INNER JOIN category ON category.id = product.cid 
INNER JOIN(SELECT uploadKey, GROUP_CONCAT(filepath SEPARATOR ',') FROM attactments GROUP BY uploadKey) a ON a.uploadKey = product.uploadKey where product.id='".$id."' "); 
0
Put limit 0,1 at the end of query. 
$select = mysql_query("SELECTproduct.name,category.catename,attactments.filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."' lomit 0,1 "); 

.. Aşağıdaki alacak feryat kodu daha sonra

$select = mysql_query("SELECT product.name,category.catename,GROUP_CONCAT(attactments.filepath SEPARATOR ',') AS filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."' "); 

while ($row = mysql_fetch_array($select , MYSQL_ASSOC)) { 
    $row['filepath'] = explode(',',$row['filepath']); 
     $json_response[] = $row; 
     } 

deneyebilirsiniz

İlgili konular