Na laatste regel geen teken meer toevoegen...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$sql = "SELECT * FROM items_rsf LEFT JOIN rsf ON rsf.rsf_id = items_rsf.rsf_id WHERE items_rsf.item_id = '".$row['item_id']."' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
echo '<script type="application/ld+json">';
echo '{"@context":"https://schema.org","@type":"FAQPage","mainEntity":';
while($row33 = $result->fetch_assoc()) {
echo '[{"@type":"Question","name":"';
echo $row33['rsf_question'];
echo '","acceptedAnswer":[{"@type":"Answer","text":"';
echo $row33['rsf_answer'];
echo '\n"}]}';
echo ',';
}
echo ']}';
echo '</script>';
} else {
echo "";
}
?>
$sql = "SELECT * FROM items_rsf LEFT JOIN rsf ON rsf.rsf_id = items_rsf.rsf_id WHERE items_rsf.item_id = '".$row['item_id']."' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
echo '<script type="application/ld+json">';
echo '{"@context":"https://schema.org","@type":"FAQPage","mainEntity":';
while($row33 = $result->fetch_assoc()) {
echo '[{"@type":"Question","name":"';
echo $row33['rsf_question'];
echo '","acceptedAnswer":[{"@type":"Answer","text":"';
echo $row33['rsf_answer'];
echo '\n"}]}';
echo ',';
}
echo ']}';
echo '</script>';
} else {
echo "";
}
?>
Gewijzigd op 28/02/2020 10:33:12 door Kees Mulder
Je weet het aantal regels ($result->num_rows), en je kunt bijhouden hoeveel je er al gehad hebt. Op het moment dat beiden aan elkaar gelijk zijn moet je *geen* komma invoegen.
Ja alleen weet ik niet hoe ik dat moet afhandelen.
En dan regel 17 vervangen voor
Code (php)
Vergeet naast dit alles niet je data in de query te beveiligen met real_escape_string. Nu is de query nog gevoelig voor sql injection.
Gewijzigd op 28/02/2020 12:11:47 door Milo S
Dan hoef je alleen de array op te bouwen, en niet mer te spelen met komma's en andere tekens.
Laten we eens als voorbeeld een willekeurige JSON+LD pakken, om te laten zien hoe de array opgebouwd is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$string= '
{
"@context": "https://json-ld.org/contexts/person.jsonld",
"@id": "http://dbpedia.org/resource/John_Lennon",
"name": "John Lennon",
"born": "1940-10-09",
"spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
}
';
print_r (json_decode($string));
?>
$string= '
{
"@context": "https://json-ld.org/contexts/person.jsonld",
"@id": "http://dbpedia.org/resource/John_Lennon",
"name": "John Lennon",
"born": "1940-10-09",
"spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
}
';
print_r (json_decode($string));
?>
Hier krijg ik dan het volgende:
Quote:
stdClass Object
(
[@context] => https://json-ld.org/contexts/person.jsonld
[@id] => http://dbpedia.org/resource/John_Lennon
[name] => John Lennon
[born] => 1940-10-09
[spouse] => http://dbpedia.org/resource/Cynthia_Lennon
)
(
[@context] => https://json-ld.org/contexts/person.jsonld
[@id] => http://dbpedia.org/resource/John_Lennon
[name] => John Lennon
[born] => 1940-10-09
[spouse] => http://dbpedia.org/resource/Cynthia_Lennon
)
Dus als je gewoon een nette array bouwt, en deze via json_encode() omzet, dan kan je die zonder fratsen in je HTML gebruiken.
Gewijzigd op 28/02/2020 13:17:55 door - Ariën -
Je zou kunnen bijhouden of je het eerste record hebt gehad in een boolean ($first, intialiseren op true, zet vervolgens direct op false), en anders een komma vooraan zetten. Of je gooit alles in een array ($data) en doet vervolgens een implode(',', $data)? Meerdere opties mogelijk.