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?


$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:


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!
- 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?


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.
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.
Ik heb nu even het volgende geprobeerd:


<?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...
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?

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
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.

Reageren