KilobaiD
(Alex Mieila)
octombrie 22, 2018, 6:14pm
1
Buna seara revin cu o intrebare legata de SlimFramework si API-uri in sine.
Se da codul:
$app->get('/api/books', function($request, $response) use ($app){
require_once('databaseconnect.php');
$queryBooks = "
SELECT
kbb.bookID,
kbb.bookName,
GROUP_CONCAT(kbc.contentText) as Text,
GROUP_CONCAT(kbc.contentType) as Type
FROM
kb_books as kbb,
kb_content as kbc
WHERE
kbb.bookID = kbc.bookID
GROUP BY
kbb.bookID
";
$resultBooks = $mysqli->query($queryBooks);
while($rowP = $resultBooks->fetch_assoc()){
$data[] = $rowP;
}
if (!isset($data)){
return $response->withStatus(404);
} else {
echo json_encode($data);
}
});
Si baza de date:
Momentan afiseaza asta:
Asa ca eu vreau sa arate text si type ca noi categorii separate, sa nu faca concat cu separator.
Multumesc!
zshare
(Eduard-Dan Stănescu)
octombrie 22, 2018, 7:59pm
2
Eu ma gandesc ca asa ar trebui sa arate la final JSON-ul generat:
[
{
bookID: "1",
bookName: "Carte 1",
content: [
{text: "text 1", type: "Warning"},
{text: "text 2", type: "Warning"},
{text: "text 3", type: "Warning"}
]
},
{
bookID: "2",
bookName: "Carte 2",
content: [
{text: "text 1", type: "Warning"},
{text: "text 2", type: "Warning"}
]
}
]
msd
(Andrei Avram)
octombrie 23, 2018, 7:40am
3
Mie nu mi-e foarte clar ce doresti.
Poate ai nevoie de JSON_ARRAYAGG in loc de GROUP_CONCAT?
Versiunea minima de mysql de care ai nevoie e 5.7.
KilobaiD
(Alex Mieila)
octombrie 23, 2018, 1:43pm
4
Ceva de genul as vrea sa fac doar ca nu imi dau seama cum
zshare
(Eduard-Dan Stănescu)
octombrie 23, 2018, 5:12pm
5
Verifica daca ai kbc.contentID, daca nu redenumeste in query si cod.
$app->get('/api/books', function($request, $response) use ($app){
require_once('databaseconnect.php');
$queryBooks = "
SELECT
kbb.bookID,
kbb.bookName,
kbc.contentID,
kbc.contentText,
kbc.contentType
FROM
kb_books as kbb,
kb_content as kbc
WHERE
kbb.bookID = kbc.bookID
";
$resultBooks = $mysqli->query($queryBooks);
while($rowP = $resultBooks->fetch_assoc()){
$data[] = $rowP;
}
$dataBooks = array();
foreach ($data as $key) {
$dataBooks[$key['bookID']]['bookID'] = $key['bookID'];
$dataBooks[$key['bookID']]['bookName'] = $key['bookName'];
$dataBooks[$key['bookID']]['bookContent'][$key['contentID']] = array(
'text' => $key['contentText'],
'type' => $key['contentType']
);
$dataBooks[$key['bookID']]['bookContent'] = array_values($dataBooks[$key['bookID']]['bookContent']);
}
$dataBooks = array_values($dataBooks);
if (!isset($dataBooks)){
return $response->withStatus(404);
} else {
echo json_encode($dataBooks);
}
});
2 Likes
KilobaiD
(Alex Mieila)
octombrie 23, 2018, 5:40pm
6
zshare:
$queryBooks = " SELECT kbb.bookID, kbb.bookName, kbc.contentID, kbc.contentText, kbc.contentType FROM kb_books as kbb, kb_content as kbc WHERE kbb.bookID = kbc.bookID "; $resultBooks = $mysqli->query($queryBooks); while($rowP = $resultBooks->fetch_assoc()){ $data = $rowP; } $dataBooks = array(); foreach ($data as $key) { $dataBooks[$key[‘bookID’]][‘bookID’] = $key[‘bookID’]; $dataBooks[$key[‘bookID’]][‘bookName’] = $key[‘bookName’]; $dataBooks[$key[‘bookID’]][‘bookContent’][$key[‘contentID’]] = array( ‘text’ => $key[‘contentText’], ‘type’ => $key[‘contentType’] ); $dataBooks[$key[‘bookID’]][‘bookContent’] = array_values($dataBooks[$key[‘bookID’]][‘bookContent’]); } $dataBooks = array_values($dataBooks); if (!isset($dataBooks)){ return $response->withStatus(404); } else { echo json_encode($dataBooks); }
Asta a fost, multumesc mult de tot!