Goedenmiddag,

Ik heb een vraag over opgehaalde data via php/mysql.
De situatie is als volgt:

De opgehaalde data bestaat uit 8 rijen:
- id
- lead_id
- form_id
- fieldnumber
- value

Het gaat mij om de value. De values van de elke 4 rijen horen bij elkaar en wil ik in 1 rij weergeven.
De form_id is bij elke rij hetzelfde en het lead_id is bij elke 4 rijen hetzelfde.
Hoe kan ik van de 4 rijen 1 rij maken? Alle tips zijn welkom.
De beste oplossing is wellicht nog om deze al "gegroepeerd" uit je database te halen, is dat niet mogelijk?

Dan zeg je "de opgehaalde data bestaat uit 8 rijen", ik zie er maar 5 :/

Heb je een concreet voorbeeld van welke data je uit je database krijgt, en hoe je het er vervolgens uit wilt laten zien, dat spreekt wat meer tot de verbeelding, zeg maar.
Thomas van den Heuvel op 26/01/2015 16:49:01

Dan zeg je "de opgehaalde data bestaat uit 8 rijen", ik zie er maar 5 :/


Volgens mij geeft TO helemaal geen rijen aan, alleen maar kolommen.
Ahh die 5 zijn velden van een rij, niet een rij zelf :) Hier de data:

id: 1
lead_id: 1
form_id: 1
fieldnumber: 1
value: Niels

id: 2
lead_id: 1
form_id: 1
fieldnumber: 2
value: Mensink

id: 3
lead_id: 1
form_id: 1
fieldnumber: 3
value: [email protected]
id: 4
lead_id: 1
form_id: 1
fieldnumber: 4
value: (064)782-2149

id: 5
lead_id: 2
form_id: 1
fieldnumber: 1
value: Chee

id: 6
lead_id: 2
form_id: 1
fieldnumber: 2
value: Keung

id: 7
lead_id: 2
form_id: 1
fieldnumber: 3
value: [email protected]

id: 8
lead_id: 2
form_id: 1
fieldnumber: 4
value: (061)234-5678

Als ik dit via een for ga weergeven krijg ik of alles naast elkaar. Wat ik wil is dat hij de gegevens van het lead_id op een afzonderlijke rij plaatst.
Zo uit mijn hoofd, wellicht zit er nog een foutje in. Bij deze implementatie maakt het overigens niet uit hoeveel fields er zijn per lead_id. Hierbij worden de velden dus gegroepeerd per lead_id.

<?php
$data = array();
while ($row = je_fetch_opdracht($je_resource)) {
    if (!isset($data[$row['lead_id']])) {
        // init huidige lead id
        $data[$row['lead_id']] = array(
            'fields' => array(),
            // en wat je verder nog op wilt slaan
        );
    }
    $data[$row['lead_id']]['fields'][$row['fieldnumber']] = $row['value'];
}
?>
Een oplossing is 4x de tabel selecteren. Kan wel een performance killer worden.

select alles uit tabel1, alles uit tabel2, alles uit tabel 3 etc
from tabel alias tabel, tabel alias tabel 2, tabel alias tabel 3
where etc
Thomas, dank je wel. Je hebt me enorm vooruit geholpen met je script.

Reageren