Opvragen van bepaalde gegevens
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)
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
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>";
}
$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:
daar komt het content te staan maar daar wil ik dan eigenlijk nog de naam van de collega ook bij zien.
Alvast bedankt!
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..
En op lijn 5 in $list plaatsen we de $rown array met je nieuwe element.
En hoe krijg ik het in de nu bestaande dan?
Heb je de dump van de array al gezien? Je kan dan het juiste deel met foreach() doorlopen.
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...
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 -
Wanneer ik
zou veranderen naar
Dan is list_id geen id nummer meer maar naam van collega, ik wil dit juist beide laten tonen..
Dat is toch de bedoeling? Maar misschien moet je even wat meer duidelijkheid geven waar die collega dan vandaan komt in je code?
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 - 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?
Alleen gebruiken ze de content en list_id dan met foreach en daar kom ik dus niet verder.
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 -
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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>";
}
?>
$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...
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 -
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
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.