query binnen een query?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ron -

Ron -

24/09/2008 12:09:00
Quote Anchor link
elke bezoeker van mijn site sla ik op in een tabel, genaamd "online", in de db

de tabel heeft deze rijen:
userid, ip, lastactive

userid: id van de bezoeker
ip: ip van de bezoeker
lastactive: tijd waarop deze het laatst actief was

als de bezoeker een lid is, heeft deze zijn eigen id, anders is het id 0

nu wil ik kunnen weergeven wie online is, aan de hand van een naam, dus als het id bijv 10 is, wil ik bijv Piet laten zijn (de naam van de gebruiker met id 10) als het id 0 is wil ik laten zien gast

het probleem zit hem er nu in dat ik de namen van de leden er niet bij krijg, omdat ik dan een query in een query heb zeg maar

hoe kan ik dit oplossen? (dit kan niet door alles in 1 tabel te doen, ivm de gasten)
dit is mijn code:
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
42
43
44
<?php
function get_username($userid)
{

    global $mysqli;
    $query = "SELECT username FROM members WHERE id = '".$userid."' LIMIT 1";
    if(!$result = $mysqli->query($query))
    {

        report_error("fout in de query : ".$query."<br /><br />Deze fout is : ".$mysqli->error."<br /><br />Op pagina: ".$_SERVER['PHP_SELF']);
    }

    else
    {
        if($result->num_rows == 1)
        {

            $row = $result->fetch_assoc();
            return $row['username'];
        }
    }
}


$query = "SELECT * FROM online";
if(!$result = $mysqli->query($query))
{

    report_error("fout in de query : ".$query."<br /><br />Deze fout is : ".$mysqli->error."<br /><br />Op pagina: ".$_SERVER['PHP_SELF']);
}

else
{
    $guests = 0;
    if($result->num_rows != 0)
    {

        while($row = $result->fetch_assoc())
        {

            if($row['userid'] != 0)
            {

                echo get_username($row['userid']); // hier gaat het dus fout!
            }
            else
            {
                $guests++;
            }
        }

        echo $guests;
    }
}

?>
 
PHP hulp

PHP hulp

25/04/2024 14:10:45
 
Ron -

Ron -

24/09/2008 18:46:00
Quote Anchor link
en ik bedoel dus bij mysqli
bij gewone mysql functies lukt het me wel
 
- -

- -

24/09/2008 18:47:00
Quote Anchor link
@Ron, bewerk je bericht ipv te bumpen :)
 
Noppes

Noppes

24/09/2008 20:27:00
Quote Anchor link
een qeury in een query noem je een subquery, maar daar ben je niet naar op zoek

als het model goed is kan je de tabellen joinen

en mysql wijkt niet af van mysqli dus snap ik je probleem ook niet
Gewijzigd op 01/01/1970 01:00:00 door Noppes
 
Ron -

Ron -

24/09/2008 20:31:00
Quote Anchor link
bij mysqli werkt alles adhv de variabele $mysqli, bij mysql functies kun je telkens een nieuwe variabele aanmaken, dit lukt me bij mysqli niet

joinen heb ik ook geprobeerd, dit lukt me echter ook niet, heb dit ook nog nooit gedaan
 
--

--

24/09/2008 20:33:00
Quote Anchor link
Zou je niet eens googlen dan?
 
Noppes

Noppes

24/09/2008 21:19:00
Quote Anchor link
En wat is het verschil tussen:
mysqli->query / mysqli_query

enkel en alleen dat het eerst object georienteerd is en de 2de niet ?!

"bij mysqli werkt alles adhv de variabele $mysqli, bij mysql functies kun je "
telkens een nieuwe variabele aanmaken, dit lukt me bij mysqli niet"

Zullen we dan maar beoordelen als niet geschreven.
 
- -

- -

24/09/2008 21:27:00
Quote Anchor link
user
- id
- name

online
- user_id

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
        user.name
    FROM
        user,
        online
    WHERE
        user.id = online.user_id
 
Ron -

Ron -

25/09/2008 17:41:00
Quote Anchor link
@Jonathan, zo kan het idd ook, bedankt. Ook nog veel simpeler, en query minder! :)

@rest, bedankt voor suggesties, ik ben nog nieuw op het object gebied, en snap er nog niet zoveel van, maar begin het al steeds wat beter te leren
 



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.