Na laatste regel geen teken meer toevoegen...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kees Mulder

Kees Mulder

28/02/2020 10:29:04
Quote Anchor link
Ik wil faq rich snippets toevoegen aan mijn pagina. Nu heb ik deze in een tabel staan en het kan zijn dat er maar 1 regel is maar kan ook 10 regels zijn. Als er meer dan 1 regel is dan moet er een komma achter elke regel behalve bij de laatste. Maar hoe krijg ik dat voor elkaar.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 "";
    }

    ?>
Gewijzigd op 28/02/2020 10:33:12 door Kees Mulder
 
PHP hulp

PHP hulp

16/08/2022 09:18:28
 
Rob Doemaarwat

Rob Doemaarwat

28/02/2020 11:38:31
Quote Anchor link
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.
 
Kees Mulder

Kees Mulder

28/02/2020 11:53:53
Quote Anchor link
Ja alleen weet ik niet hoe ik dat moet afhandelen.
 
Milo S

Milo S

28/02/2020 12:09:24
Quote Anchor link
Ik zou regel 5 vervangen voor;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$i
= 0;
if( $num = $result->num_rows > 0) {
?>



En dan regel 17 vervangen voor

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
# var i vergelijken met de getelde records uit de db. Als deze lager is dan het aantal records, een komma plaatsen.
if( $i < $num ) {
    echo ',';
}


# var i met 1 verhogen, zodat deze oploopt gedurende de loop.
$i++;
?>


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
 
- Ariën  -
Beheerder

- Ariën -

28/02/2020 12:43:14
Quote Anchor link
Als het JSON is, waarom niet netjes met JSONencode() omzetten naar een JSON-string?
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)
PHP script in nieuw venster Selecteer het PHP script
1
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));
?>


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

)


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 -
 
Thomas van den Heuvel

Thomas van den Heuvel

28/02/2020 19:28:04
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.