Opvragen van bepaalde gegevens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ray Mond

Ray Mond

14/12/2021 19:31:24
Quote Anchor link
Beste mensen,

Ik maak gebruik van onderstaande code, alles werkt perfect enkel wil ik hier ook de naam oproepen van een collega die dit ingevoerd heeft in de database, die moet hier weer uit de database gehaald worden, hoe doe ik dit precies?

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
26
27
28
29
30
31
$data = array();
                        $notes_sql = "select * from note_custom where to_id='".$row->profile_id."' and from_id= '".$db->escape_string($aid)."'  order by type, last_update DESC";
                        $ret  = $db->query($notes_sql);
                        while($rown = $ret->fetch_object()){
                            $data[$rown->type][$rown->id] = $rown->content;
                        }
                        if(!empty($data)){
                            echo '<div class="accordion" id="collapse-group">';
                            
                            foreach($data as $type => $content){
                                echo' <div class="accordion-group widget-box">
                                <div class="accordion-heading">
                                    <div class="widget-title">
                                        <a data-parent="#collapse-group" href="#collapse'.$row->profile_id.''.$type.'" data-toggle="collapse">
                                            <span class="icon"><i class="icon-book"></i></span><h5>'.$config['note_setting'][$type].' ('.sizeof($content).')</h5>
                                        </a>
                                    </div>
                                </div>
                                <div class="collapse accordion-body" id="collapse'.$row->profile_id.''.$type.'">
                                    <div class="widget-content"><ul>';
                                        
                                  foreach($content as $list_id => $list ){
                                      echo "<li> ".$list." <span id='".$list_id."' class='del_note'><i class='icon icon-remove'></i></span>";
                                  }
                                  
                                   echo' </div>
                                </div>
                                </div> ';
                            }
                            echo "</div>";
                        }


In dit stukje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<li> ".$list." <span


daar komt het content te staan maar daar wil ik dan eigenlijk nog de naam van de collega ook bij zien.

Alvast bedankt!
 
PHP hulp

PHP hulp

28/03/2024 20:07:23
 
- Ariën  -
Beheerder

- Ariën -

14/12/2021 19:46:51
Quote Anchor link
Ikzelf raad aan om om met array's (blokhaken) te werken in plaats van objecten (pijltjes).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$list
= []; // array aanmaken
while($rown = $ret->fetch_assoc()){
    $rown['naam'] = $rown['colleague'];
    $list[] = $rown;
}


echo "<pre>".print_r($list,true)."</pre>";
?>
Gewijzigd op 14/12/2021 20:03:47 door - Ariën -
 
Ray Mond

Ray Mond

14/12/2021 20:09:12
Quote Anchor link
Snap ik inderdaad hoor, dat wil ik inderdaad ook nog eens aanpassen alleen voor nu is het even belangrijk voor de werking haha alleen kom er niet helemaal uit..
 
- Ariën  -
Beheerder

- Ariën -

14/12/2021 20:23:59
Quote Anchor link
Op lijn vier voeg je een nieuwe element toe aan je $rown array.
En op lijn 5 in $list plaatsen we de $rown array met je nieuwe element.
 
Ray Mond

Ray Mond

14/12/2021 22:55:47
Quote Anchor link
Dat is in jouw versie bedoel je?

En hoe krijg ik het in de nu bestaande dan?
 
- Ariën  -
Beheerder

- Ariën -

14/12/2021 23:48:40
Quote Anchor link
Ja, dat is in mijn versie.
Heb je de dump van de array al gezien? Je kan dan het juiste deel met foreach() doorlopen.
 
Ray Mond

Ray Mond

15/12/2021 11:58:10
Quote Anchor link
Maar dan doet het allemaal heel anders dan wat ik wil...

Het gaat om een inklapmenu als het ware met een bijbehorende categorie, daar komt een bericht bij te staan met "list" maar daar wil ik dus naam van collega achter hebben...
 
- Ariën  -
Beheerder

- Ariën -

15/12/2021 12:56:09
Quote Anchor link
Heb je al je array bekeken met print_r?
Staat daar de collega in vermeld, en heb je het juiste veldnaam daarvoor gebruikt?
Gewijzigd op 15/12/2021 12:56:35 door - Ariën -
 
Ray Mond

Ray Mond

15/12/2021 13:07:40
Quote Anchor link
Maar het gaat om dit geval gek genoeg niet om de array, dat zijn enkel de categorieën, die komen ook perfect zichtbaar en met list komt content wat erbij hoort.

Wanneer ik

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$data[$rown->type][$rown->id] = $rown->content;


zou veranderen naar

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$data[$rown->type][$rown->collega] = $rown->content;


Dan is list_id geen id nummer meer maar naam van collega, ik wil dit juist beide laten tonen..
 
- Ariën  -
Beheerder

- Ariën -

15/12/2021 13:12:33
Quote Anchor link
In die array moet je ook de naam van de collega zien, volgens mijn wijziging.
Dat is toch de bedoeling? Maar misschien moet je even wat meer duidelijkheid geven waar die collega dan vandaan komt in je code?
 
Ray Mond

Ray Mond

15/12/2021 13:15:24
Quote Anchor link
Array zijn de categorieën die komen uit de database en config... dat deel zijn we al voorbij

Op regel 23 waar list staat dat is het content wat bij de categorie hoort en list_id is het id nummer dat erbij hoort, die werken beiden prima maar nu wil ik dus achter list de naam van de collega hebben te staan.collega hebben te staan.
Gewijzigd op 15/12/2021 13:16:05 door Ray Mond
 
- Ariën  -
Beheerder

- Ariën -

15/12/2021 13:25:53
Quote Anchor link
- Ariën - op 15/12/2021 13:12:33:
Maar misschien moet je even wat meer duidelijkheid geven waar die collega dan vandaan komt in je code?
 
Ray Mond

Ray Mond

15/12/2021 13:29:29
Quote Anchor link
Collega moet uit de database komen uit note_custom net als het content en bijhorende id.

Alleen gebruiken ze de content en list_id dan met foreach en daar kom ik dus niet verder.
 
- Ariën  -
Beheerder

- Ariën -

15/12/2021 14:02:41
Quote Anchor link
Je wilt dus aan de hand van het ID nummer de naam ophalen?
Dan moet je een LEFT JOIN gebruiken in je query.

Dan moet je dit in je while-loop gebruiken. Je wilt je data niet verder beperken tot enkel de content:

$data[$rown->type][$rown->id] = $rown;

En in je foreach() moet je dan je collega en ID kunnen ophalen.

Bekijk dus je array, en ik dan moet je een duidelijk inzicht krijgen in welke velden je hebt, en vanaf welk niveau je ze wilt doorlopen.

En laat anders eens zien hoe je array van enkele dummy-personen eruit ziet.
Gewijzigd op 15/12/2021 14:13:55 door - Ariën -
 
Ray Mond

Ray Mond

16/12/2021 14:48:29
Quote Anchor link
Ik heb nu even het volgende geprobeerd:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
                        
                        $data
= array();
                        $notes_sql = "select * from note_custom where to_id='".$row->profile_id."' and from_id= '".$db->escape_string($aid)."'  order by type, last_update DESC";
                        $ret  = $db->query($notes_sql);
                        while($rown = $ret->fetch_object()){
                            $data[$rown->type][$rown->id] = $rown->content;
                            $data2[$rown->collega][$rown->id] = $rown->collega;
                            $data3[$rown->tijd][$rown->id] = $rown->tijd;
                        }

                        if(!empty($data)){
                            echo '<div class="accordion" id="collapse-group">';
                            
                            foreach($data as $type => $content){
                                echo' <div class="accordion-group widget-box">
                                <div class="accordion-heading">
                                    <div class="widget-title">
                                        <a data-parent="#collapse-group" href="#collapse'
.$row->profile_id.''.$type.'" data-toggle="collapse">
                                            <span class="icon"><i class="icon-book"></i></span><h5>'
.$config['note_setting'][$type].' ('.sizeof($content).')</h5>
                                        </a>
                                    </div>
                                </div>
                                <div class="collapse accordion-body" id="collapse'
.$row->profile_id.''.$type.'">
                                    <div class="widget-content"><ul>'
;
                                        
                                  foreach($content as $list_id => $list ){
                                      foreach($data2 as $test1 => $collega ){
                                          foreach($data3 as $time => $tijd ){
                                      echo "<li> ".$list." <span id='".$list_id."' class='del_note'><i class='icon icon-remove'></i></span><br />
                                      <small>Ingevoerd door: "
.$test1." op: ".$time."</small>";}
                                      }
                                  }

                                  
                                   echo' </div>
                                </div>
                                </div> '
;
                        }

                            echo "</div>";
                        }

                        
                        ?>


Het werkt wel maar ook weer niet, alles komt nu 3 dubbel en de namen en tijden komen ook bij de anderen te staan, dus de verkeerde namen en tijden...
 
- Ariën  -
Beheerder

- Ariën -

16/12/2021 14:53:06
Quote Anchor link
Logisch, want je maakt drie array's aan, en dat lijkt mij niet de bedoeling.
Een veel voorkomende fout als je data aan een bestaande array wilt toevoegen. Daarom moet je, als je zulke dingen wilt doen, dit oplossen zoals in mijn voorgaande post:

- De oude array van een extra element (key) voorzien
- Nieuwe array aanmaken met de inhoud van de oude array waarin het nieuwe element bij zit.
- Gebruik de nieuwe array.

Maar geef anders eens aan wat voor output je precies verwacht in je array.
Kom eens aan met wat je nu hebt als array-boom, en wat je precies wilt hebben.

Want volgens mij komt alles uit dezelfde query, waardoor je zulke fratsen niet hoeft uit te halen, en enkel een JOIN te leggen tussen een CollegaID en de naam uit een andere tabel. Klopt dit?
Gewijzigd op 16/12/2021 14:54:27 door - Ariën -
 
Ray Mond

Ray Mond

16/12/2021 15:56:56
Quote Anchor link
Daar kwam ik ook achter inderdaad dat het met 3x foreach niet ging lukken haha.

De bedoeling is op dit moment zien we alleen het content wat gelogd is in de database, dat komt uit note_custom maar ook daar staat de naam van de collega dus er hoeft geen JOIN aan te pas komen aangezien alles in dezelfde tabel staat.

Ik voer bijvoorbeeld test in bij aktueel en dat werkt gewoon, als ik test 2 invoer bij algemeen, want dat zijn de categorieën dat werkt ook.

Op lijn 29 zie je $list dat is het content wat uit de database komt en list_id is het bijbehorende id nummer maar nu wil ik dus achter $list de gebruiker en tijdstip ophalen wat uit dezelfde tabel note_custom komt, en dat is wat ik niet voor elkaar krijg
 
- Ariën  -
Beheerder

- Ariën -

16/12/2021 16:22:35
Quote Anchor link
Als alle data die je nodig hebt, uit je query komt, kan je de naam van de collega eenvoudig ophalen aan de hand van die veldnaam.

Een kwestie van je array's uitlezen met print_r().

Maar wat heb je nu als arrayboom?
En hoe wil je het hebben? Een concreet voorbeeld lijkt mij erg handig.
 



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.