2 query's vergelijken - checkbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Gerben Kwakkel

Gerben Kwakkel

12/02/2014 13:52:46
Quote Anchor link
Hallo,

Ik heb twee query's:
Query 1: haalt de gehele lijst met groepen op
Query 2: haalt de lijst op van groepen waar een gebruiker lid van is

Beide haal ik door een while en heb ik dus 2 lijstjes:
Lijstje 1: Groep_1, Groep_2, Groep_3, Groep_4 en Groep_5
Lijstje 2: Groep_1 en Groep_5

Nu wil ik dus in PHP een overzicht creëren wat er dus zo uit komt te zien:

Overzicht - Gebruiker_1 - Lid van groepen:
[x] Groep_1
[ ] Groep_2
[ ] Groep_3
[ ] Groep_4
[x] Groep_5

Hoe kan ik dit simpel doen? Ik kan er echt even niet op komen.
 
PHP hulp

PHP hulp

05/11/2024 11:56:55
 
D B

D B

12/02/2014 17:24:51
Quote Anchor link
Uhm, even kortgedacht zou ik dit denk ik oplossen met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$lijstje1
= array('1','2','3','4','5');
$lijstje2 = array('3','4');

foreach ( $lijstje1 as $key) {
   if ( in_array($key, $lijstje2) ) {
       echo "[X] - ". $key. "<br>";
   }

   else {
       echo "[ ] - ". $key. "<br>";
   }
}

?>


Hopelijk kun je hier wat mee.
Gewijzigd op 12/02/2014 18:37:14 door D B
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/02/2014 18:37:33
Quote Anchor link
Kan ook in SQL:
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
SELECT g.gebruikers_naam,
    gr.groeps_naam,
    IF(gg.gebruikers_id IS NULL,0,1) AS lidmaatschap
FROM
    (SELECT ge.gebruikers_id,
        go.groeps_id
    FROM gebruikers AS ge
    CROSS JOIN groepen AS go
    ) ggr
JOIN
    gebruikers g ON ggr.gebruikers_id = g.gebruikers_id
JOIN
    groepen gr ON ggr.groeps_id = gr.groeps_id
LEFT JOIN gebruikers_groepen gg
    ON ggr.gebruikers_id = gg.gebruikers_id
    AND ggr.groeps_id = gg.groeps_id
ORDER BY g.gebruikers_id, gr.groeps_id
Gewijzigd op 12/02/2014 18:39:45 door Ger van Steenderen
 
Gerben Kwakkel

Gerben Kwakkel

13/02/2014 09:26:36
Quote Anchor link
D B op 12/02/2014 17:24:51:
Uhm, even kortgedacht zou ik dit denk ik oplossen met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$lijstje1
= array('1','2','3','4','5');
$lijstje2 = array('3','4');

foreach ( $lijstje1 as $key) {
   if ( in_array($key, $lijstje2) ) {
       echo "[X] - ". $key. "<br>";
   }

   else {
       echo "[ ] - ". $key. "<br>";
   }
}

?>


Hopelijk kun je hier wat mee.


Bedankt voor jullie snelle reacties.

Alleen zijn bij mij lijstje1 en lijstje2 query's. Hoe ga ik dit dan toepassen met die foreach?
 
D B

D B

13/02/2014 21:09:01
Quote Anchor link
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
<?
$sql
="SELECT groep FROM tabel";
$res=mysql_query($sql);
$lijstje1=array();
while ($row = mysql_fetch_array($res)){
    $lijstje1[]=$row['groep'];
}


$sql="SELECT groep2 FROM tabel";
$res=mysql_query($sql);
$lijstje2=array();
while ($row = mysql_fetch_array($res)){
    $lijstje2[]=$row['groep2'];
}


foreach ( $lijstje1 as $key) {
    if ( in_array($key, $lijstje2) ) {
        echo "[X] - ". $key. "<br>";
    }

    else {
        echo "[&nbsp;&nbsp;&nbsp;] - ". $key. "<br>";
    }
}

?>


Kun je hier wat mee?
Gewijzigd op 13/02/2014 21:10:30 door D B
 
Gerben Kwakkel

Gerben Kwakkel

17/02/2014 10:01:06
Quote Anchor link
Thx, dit werkt mooi.

Maar wat als ik in lijstje 1 nou een groepnaam en een groepid wil? Hoe krijg ik dit dan in die foreach?

Toevoeging op 18/02/2014 09:49:35:

Iemand een idee hoe ik bij lijstje1 een extra veld kan meegeven in de foreach? Dus bijvoorbeeld het groepid (&groepnaam)?
 
Gerben Kwakkel

Gerben Kwakkel

20/02/2014 08:42:01
Quote Anchor link
Iemand enig idee? Zit nu al een paar dagen te klooien zeg maar, maar het is steed trial and error... En helaas heb ik niet zoveel verstand van PHP dat me dit nou een makkie is.

"Maar wat als ik in lijstje 1 nou een groepnaam en een groepid wil? Hoe krijg ik dit dan in die foreach?

Toevoeging op 18/02/2014 09:49:35:

Iemand een idee hoe ik bij lijstje1 een extra veld kan meegeven in de foreach? Dus bijvoorbeeld het groepid (&groepnaam)?"
 
Gerben Kwakkel

Gerben Kwakkel

05/03/2014 10:40:16
Quote Anchor link
Bumpje, *vergeet al de bovenstaande posts* maar op welke manier kan ik bij die foreach bijvoorbeeld ook de groupid in de eerste TD erbij krijgen?:

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
<?php
        $query
= mysql_query('SELECT `group`.`groupid`, `group`.`groupname`
                              FROM `group`'
);

        $getGroups = array();
            
        while($row = mysql_fetch_array($query))
        {

            $getGroups[] = $row['groupname'];
        }

                                
        $query = mysql_query('SELECT `group`.`groupid`, `group`.`groupname`
                              FROM `group`
                              INNER JOIN usergroup ON usergroup.groupid = group.groupid
                              WHERE usergroup.userid = "'
.$_GET['user_view'].'"');

        $getUserGroups = array();                        
                                
        while($row = mysql_fetch_array($query))
        {

            $getUserGroups[] = $row['g.groupname'];
        }

        
        foreach($getGroups as $key)
        {

            $i++;
        
            echo '<tr>';
            echo '<td>'.$key.'</td>';
            echo '<td><input type="radio" name="group-'.$i.'" value="1-'.$key.'" '.(in_array($key, $getUserGroups) ? 'checked' : '').' /></td>';
            echo '<td><input type="radio" name="group-'.$i.'" value="0-'.$key.'" '.(!in_array($key, $getUserGroups) ? 'checked' : '').' /></td>';    
            echo '</tr>';        
        }

?>
Gewijzigd op 05/03/2014 10:40:41 door Gerben Kwakkel
 
Michael -

Michael -

05/03/2014 10:47:33
Quote Anchor link
Mysql functies zijn deprecated. Backticks? Sql Injection? Hm..

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
<?php
        while($row = mysql_fetch_array($query))
        {

            $getUserGroups[] = Array('name'=>$row['g.groupname'],'id'=>$row['groupid']);// Waar komt g vandaan? moet dit group zijn?
        }
        
        foreach($getGroups as $group)
        {

            $i++;
        
            echo '<tr>';
            echo '<td>'.$group['name'].' '.$group['id'].'</td>';
            echo '<td><input type="radio" name="group-'.$i.'" value="1-'.$group['name'].'" '.(in_array($group['name'], $getUserGroups) ? 'checked' : '').' /></td>';
            echo '<td><input type="radio" name="group-'.$i.'" value="0-'.$group['name'].'" '.(!in_array($group['name'], $getUserGroups) ? 'checked' : '').' /></td>';    
            echo '</tr>';        
        }

?>

edit: foutje in array
Gewijzigd op 05/03/2014 10:54:47 door Michael -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/03/2014 11:09:05
Quote Anchor link
Ger van Steenderen op 12/02/2014 18:37:33:
Kan ook in SQL:
....

Oké de query is wellicht wat moeilijker te begrijpen, maar uiteindelijk wordt het veel simpeler als je in php met array's gaat lopen klooien.
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
SELECT g.gebruikers_naam,
    gr.groeps_naam,
    IF(gg.gebruikers_id IS NULL,0,1) AS lidmaatschap
FROM
    (SELECT ge.gebruikers_id,
        go.groeps_id
    FROM gebruikers AS ge
    CROSS JOIN groepen AS go
    WHERE ge.gebruikers_id = 666  
    ) ggr
JOIN
    gebruikers g ON ggr.gebruikers_id = g.gebruikers_id
JOIN
    groepen gr ON ggr.groeps_id = gr.groeps_id
LEFT JOIN gebruikers_groepen gg
    ON ggr.gebruikers_id = gg.gebruikers_id
    AND ggr.groeps_id = gg.groeps_id
ORDER BY g.gebruikers_id, gr.groeps_id
 
Gerben Kwakkel

Gerben Kwakkel

05/03/2014 11:26:00
Quote Anchor link
Nu geeft hij niks weer? Kan ik dan nog wel de bestaande query's gebruiken?

@ Hierboven, maar hoe ga ik dat dan vervolgens in radio buttons verwerken met een Lid Ja - Lid Nee?
Gewijzigd op 05/03/2014 11:39:44 door Gerben Kwakkel
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/03/2014 11:44:09
Quote Anchor link
Je moet wel de veldnamen en tabelnamen in de query aanpassen aan jouw situatie:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
while ($row = mysql_fetch_assoc($query) {
    echo '<tr><td>' . $row['group_name'] . '</td><td>
        <input type="checkbox" name="group[]" value="'
. $row['group_id]' . '"';
    echo ($row['lidmaatschap'] == 1) ? ' checked' : '';
    echo '></td></tr>';
}

?>
Gewijzigd op 05/03/2014 11:47:23 door Ger van Steenderen
 
Gerben Kwakkel

Gerben Kwakkel

05/03/2014 16:57:42
Quote Anchor link
Hartstikke bedankt Ger! Vraagje, de query snap ik deels wel en deels niet, maar hoe zou die moeten als ik bijvoorbeeld een lijst van de gebruikers wil, dus als ik groep_id 2 bekijk welke gebruikers hier dan inzitten? Want ik snap nu niet welke ik dan precies moet omdraaien.

In ieder geval alwel hartstikke bedankt!
 
Ivo P

Ivo P

05/03/2014 17:01:42
Quote Anchor link
http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html

"group" is een gereserveerd woord in (my)sql.
"group" vervolgens voor een tabelnaam gebruiken, is vragen om problemen...
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/03/2014 17:14:53
Quote Anchor link
Dan hoef je niet veel om te draaien, je voegt voor regel 18 weer een vooorwaarde toe
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE gr.group_id = 2

Alleen moet je dan in PHP wel per gebruiker gaan groeperen.

Let wel even op wat Ivo zegt, omdat je nu backticks gebruikt heb je geen probleen, maar stel dat een database beheerder overstapt op een professioneel database management systeem, kan je al je query's aan gaan passen
Gewijzigd op 05/03/2014 17:15:19 door Ger van Steenderen
 



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.