Versio

Op meerdere id's selecten

Overzicht Reageren

Danny Appeldoorn

Danny Appeldoorn

12/11/2009 20:09:00
Quote Anchor link
Hoi,

Tijd geleden dat ik hulp heb gezocht maar hier kom ik echt niet uit.
Ik heb een database met een forum. Custom profile fiels en een ledenlijst van het forum.
Nu staan de id's van members in de ledenlijst, en ik wil members selecteren op een bepaalde waarde van het custom profile field. (Nog te volgen?)

Dus doe ik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_query("SELECT id_member FROM smot_themes WHERE variable = 'cust_member4' AND value = '[SMoT]' ORDER BY id_member ASC");


Hieruit krijg ik een array (met fetch array) van alle member id's die de juiste waardes daar hebben.

Vervolgens gooi ik deze door een foreach loopje en haal de eerste 2-3 tekens weg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
foreach($res as $key => $temp){
                        $qp .= "AND id_member = '".$temp."'";
                    }
                    $qp = substr($qp,3);


Maar nu heb ik het met AND en met or en dergelijke geprobeerd, krijg alleen maar 1 result eruit.

Even volledig stukje code waarom het gaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
                    $res
= mysql_query("SELECT id_member FROM smot_themes WHERE variable = 'cust_member4' AND value = '[SMoT]' ORDER BY id_member ASC");
                    $qp = NULL;
                    $res = mysql_fetch_array($res);
                    foreach($res as $key => $temp){
                        $qp .= "OR id_member = '".$temp."'";
                    }

                    $qp = substr($qp,2);
                    $resu = mysql_query("SELECT * FROM smot_members WHERE".$qp." ORDER BY id_member ASC") or trigger_error(mysql_error());
                    while ($res = mysql_fetch_array($resu)) {
                    echo "Username:".$res['member_name'];
                    }

?>



Kort samengevat, ik wil graag weten hoe ik op meerdere id's kan selecteren in 1 query. Allemaal op id_member.
Gewijzigd op 01/01/1970 01:00:00 door Danny Appeldoorn
 
PHP hulp

PHP hulp

25/05/2012 13:06:45
Gesponsorde koppelingen:
 
Emmanuel Delay

Emmanuel Delay

12/11/2009 23:52:00
Quote Anchor link
Probeer eens zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// ...
$where = "";
 foreach($res as $key => $temp){
    $where .= ($key>0 ? " OR " : "WHERE "). "id_member = '". $temp ."'";
}

$sql = "SELECT * FROM smot_members ". $where ." ORDER BY id_member ASC";
$resu = mysql_query($sql) or trigger_error(mysql_error());
// ...
?>
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Terence Hersbach

Terence Hersbach

13/11/2009 00:03:00
Quote Anchor link
Het kan nog een stuk sneller/beter dan dat je nu hebt. MySQL kent subqueries, dat zou er dan ongeveer zo uitzien:

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
SELECT
    *
FROM
    smot_members
WHERE
    id_member IN (
        SELECT
            id_member
        FROM
            smot_themes
        WHERE
            variable = 'cust_member4' AND
            value = '[SMoT]'
        ORDER BY
            id_member ASC
    )


Ik betwijfel alleen of het werkt met de ORDER BY in de subquery zelf. Desnoods zal je die even na de subquery moeten zetten.
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Danny Appeldoorn

Danny Appeldoorn

13/11/2009 16:40:00
Quote Anchor link
Bedankt, en het werkt wel met de id in de subquery, heb er nog niet genoeg leden in staan. Maar zover ik nu zie klopt het, anders plaats ik hem er wel buiten.
 



Overzicht Reageren

Get Adobe Flash player