Gegevens ophalen database met meerdere input

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marijke Hakvoort

Marijke Hakvoort

11/11/2011 11:49:35
Quote Anchor link
Hallo,

Ik heb een klein vraagje;
Met een query haal ik ID's op, wat bijna altijd varieert.
Nu zijn deze ID's gekoppeld met ID's uit een andere tabel, en die wil ik met een andere query ophalen.

Nu pakt hij er dan maar 1. Hoe los ik dit op?
 
PHP hulp

PHP hulp

05/11/2024 11:36:25
 
Duco W

Duco W

11/11/2011 12:37:45
Quote Anchor link
Als ik jou was zou ik eens naar MySQL JOIN zoeken.
 
Marijke Hakvoort

Marijke Hakvoort

11/11/2011 13:31:15
Quote Anchor link
Nee, dat bedoel ik niet, dat ken ik wel.
Ik heb dus een query, die als output meerdere waardes geeft.

Ik heb een keuzemenu van klanten, waarna hij aan de hand van het ID van de klant, de bijbehorende modules zoekt. Deze hebben ook een ID. daarna, aan de hand van deze ID's haalt hij uit een tabel de namen van de modules op en zet die in een array.

Nu loop ik vast bij de meerdere ID's van de modules, om die daarna te vergelijken met de namen van de modules. Hij pakt er maar 1, en geeft als output dus 1 naam van een module.

Toevoeging op 11/11/2011 13:33:57:

Overigens, de meerdere waardes staan in 1 variabele $id_module, en als ik die echo dan geeft hij dus wel netjes de ID's weer van de modules.

<php>
$query_name_module="SELECT * FROM list_modules WHERE id = ".$row['id_module'];
if ($result_name = mysql_query($query_name_module)) {
while ($row = mysql_fetch_array($result_name)){
$module_name = $row['nl'];
echo $module_name ."<br>";
}
}
</php>
 
- SanThe -

- SanThe -

11/11/2011 13:54:02
Quote Anchor link
Marijke Hakvoort op 11/11/2011 13:31:15:
Overigens, de meerdere waardes staan in 1 variabele $id_module, en als ik die echo dan geeft hij dus wel netjes de ID's weer van de modules.


Geef eens een voorbeeldje, want dit ontgaat mij even.
 
Marijke Hakvoort

Marijke Hakvoort

11/11/2011 13:58:51
Quote Anchor link
$query_id_module="SELECT * FROM lnk_administrations_modules WHERE id_administration = ".$adminid;
if ($result=mysql_query($query_id_module)) {
while ($row=mysql_fetch_array($result)) {
$id_module = $row['id_module'];
echo $id_module ."<br>";
}
}

Waar $adminid het ID is van de klant.
De modules hebben allemaal een ID, en de output kan dus bijv. zijn: 1,2,6 of 2,5 of alleen 1. Dat varieert.
 
Marco M

Marco M

11/11/2011 14:00:05
Quote Anchor link
Hm, die $id_module bestaat dus uit meerdere ID's van modules? Zo ja maak je van die variabele een array, en gebruik MySQL IN() . Zo niet, dan graag een beter voorbeeld..
 
Marijke Hakvoort

Marijke Hakvoort

11/11/2011 14:01:08
Quote Anchor link
Dat klopt, aan de array zat ik ook al te denken ja, MySQL IN() ken ik niet.
Waar moet ik dat dan gebruiken?

Toevoeging op 11/11/2011 14:02:25:

Is dat zoals in dit voorbeeld?
SELECT userID FROM usergroup WHERE groupid IN $usergroupid

Dat werkte niet namelijk ..
 
Marco M

Marco M

11/11/2011 14:09:14
 
Marijke Hakvoort

Marijke Hakvoort

11/11/2011 14:22:52
Quote Anchor link
Toch gaat het nog niet helemaal goed.
Dit is ongeveer wat ik heb, zo krijgen jullie een shcets

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$query_id_module
="SELECT id_module FROM lnk_administrations_modules WHERE id_administration = ".$adminid;
    if ($result=mysql_query($query_id_module)) {  
        $id_module_array = array();
        while ($row=mysql_fetch_assoc($result))  {
            $id_module_array[] = $row;
        }

//print_r($id_module_array);
    }  
?>


Dit is dus om de ID's van de modules op te halen, die in een array worden gezet.

Nu de namen van de modules selecteren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$query_name_module
="SELECT * FROM list_modules WHERE id IN ".$id_module_array;
    if ($result_name = mysql_query($query_name_module) or die (mysql_error())) {
            while ($row = mysql_fetch_array($result_name)){
                $module_name = $row['nl'];
                echo $module_name ."<br>";
            }
    }


?>


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Array' at line 1
 
- SanThe -

- SanThe -

11/11/2011 14:27:42
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "SELECT .. FROM .. WHERE id IN (" . $id_module . ")";
?>
 
Marco M

Marco M

11/11/2011 14:28:25
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query_name_module
="SELECT * FROM list_modules WHERE id IN (".implode(",",$id_module_array).")";
?>


Toevoeging op 11/11/2011 14:30:25:

@ Santhe
Ik ging er niet direct vanuit dat het komma gescheiden was, vandaar het maken van een array en daarna imploden. Het kan natuurlijk ook gewoon direct.
 
Marijke Hakvoort

Marijke Hakvoort

11/11/2011 14:31:18
Quote Anchor link
Marco,
als ik mijn query vervang met de jouwe krijg ik deze fout;
Unknown column 'Array' in 'where clause'

Toevoeging op 11/11/2011 14:49:11:

Ik heb het eens even anders aangepakt,
want ik zat weer veel te moeilijk te denken .. *Ik hou van vrijdag!*
Nu gewoon met een simpele JOIN.

Maar.. alsnog, weer iets waar ik op vast loop.

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
$result
= mysql_query("SELECT
                    list_modules.nl
                  FROM
                    lnk_administrations_modules
                    Inner Join list_modules ON lnk_administrations_modules.id_module = list_modules.id
                  WHERE
                    id_administration = "
.$adminid) or die(mysql_error());
$row = mysql_fetch_array( $result );
foreach ($row as $key => $value){
    echo "key = ".$key."<br>value = ".$value ."<br>";
}

?>


Maar, als ik in Navicat deze query laat lopen geeft hij netjes 3 waardes terug.
echter op het scherm maar 1.

Toevoeging op 11/11/2011 14:53:00:

Dit is de output:

key = 0
value = Relatiemanagement
key = nl
value = Relatiemanagement

Waarschijnlijk maak ik gewoon een stomme fout, maar ik kom er nu niet uit ..

Toevoeging op 11/11/2011 15:17:46:

Het is inmiddels gelukt!
Toch bedankt iedereen voor het meedenken :)
 



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.