2017-12-13 1 views
0

Ich speichere id_supplier in Produkttabelle. Ich kann es in der Tabelle nur für eine Zeile für jeden Artikelcode mit seiner Lieferanten-ID anzeigen. Ich brauche auch den Namen des Lieferanten, aber ich habe Probleme mit der Trennung von ID und Name.Wie kann ich den group_concat-Wert in Datentabelle und Kontrollkästchen verschmelzen

//query 
select code, group_concat(s.supplier_id,s.supplier_name) AS supplier_id_name 
from catalog c 
left join product p on p.product_id= c.product_id 
left join supplier s on s.supplier_id = p.product_id 
group by code; 


    //query will show following output 

    id supplier - 1, name - abc 
    id supplier - 2, name - def 

    Code  | Supplier 
    A001  | 1abc,2def // id and name of supplier 

was ich bin

erwartet
Code  | Supplier 
A001  | checkboxes value = 1 and then display supplier name beside....... and continue in the same row if more supplier 

Es wird ein Kontrollkästchen für jeden Lieferanten Anzeige für den Code und Kontrollkästchen wird den Lieferanten-ID zum Speichern Zweck enthalten.

Wie kann ich das tun?

+1

Mein Bauchgefühl ist, dass du vielleicht in deiner Präsentation damit umgehen willst Schicht, anstatt rein in MySQL. –

+0

Siehe https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- Abfrage. Übrigens gibt es in grober Näherung kein Problem in sql, für das group_concat einen Teil der Antwort bilden muss. – Strawberry

Antwort

0

Es gibt 2 Lösungen.

Lösung 1: Compose HTML-Code nur von MySQL Abfrage selbst, durch die Verwendung folgende SQL:

// Query 

SELECT CODE, 
     GROUP_CONCAT(CONCAT('<input type="checkbox" value="', s.supplier_id, '"> ', s.supplier_name) SEPARATOR ',') AS supplier_id_names 
    FROM catalog c 
    LEFT JOIN product p ON p.product_id= c.product_id 
    LEFT JOIN supplier s ON s.supplier_id = p.product_id 
    GROUP BY CODE; 

Lösung 2: Erste Greifer Anbieter-ID und den Namen von bestimmten Zeichen getrennt und dann in Back-End code, filtere jede ID und jeden Namen, indem du sie aufteilst, um den vollständigen HTML-Code zu erzeugen: (folgt PHP-Code)

$query= "SELECT CODE, 
       GROUP_CONCAT(CONCAT(s.supplier_id, ':', s.supplier_name) SEPARATOR '|||') AS supplier_id_names 
    FROM catalog c 
    LEFT JOIN product p ON p.product_id= c.product_id 
    LEFT JOIN supplier s ON s.supplier_id = p.product_id 
    GROUP BY CODE"; 
$result = mysqli_query($dbc,$query); 
while($row = mysqli_fetch_array($result)){ 
    // get html for each row 
    $checkboxHtml = ''; 
    $idSups = explode('|||', $row['supplier_id_names']); 
    foreach($idSups AS $s) { 
     list($i,$s) = explode(':', $s); 
     $checkboxHtml .= '<input type="checkbox" value="' . $i . '"> ' . $s; 
    } 
    // do something else... 
} 
Verwandte Themen