Selecteren van variabelen
Ik ben begin met een simpel php programma met de volgende tabellen.
tabel1: naam
tabel2: vakgebied
tabel3: naam / vakgebied
Nu wil ik doormiddel van het doorgeven van 3 vakgebieden kijken welke persoon alle drie de vakgebieden bezit.
Nu heb ik hiervoor een script geschreven maar krijg het nog niet voor elkaar om de juiste naam te laten zien. Zie script:
------------------
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
$vakgebied1 = $_POST['vakgebied1'];
$vakgebied2 = $_POST['vakgebied2'];
$vakgebied3 = $_POST['vakgebied3'];
$query="SELECT * FROM vakgebiedwerknemer WHERE vakgebied='$vakgebied1'".
"ORDER BY naam";
$query2="SELECT * FROM vakgebiedwerknemer WHERE vakgebied='$vakgebied2'".
"ORDER BY naam";
$query3="SELECT * FROM vakgebiedwerknemer WHERE vakgebied='$vakgebied3'".
"ORDER BY naam";
$result=mysql_query($query);
$result2=mysql_query($query2);
$result3=mysql_query($query3);
$num=mysql_numrows($result);
$num2=mysql_numrows($result2);
$num3=mysql_numrows($result3);
mysql_close();
$i=0;
while ($i < $num) {
$naam=mysql_result($result,$i,"naam");
$vakgebied=mysql_result($result,$i,"vakgebied");
$niveau=mysql_result($result,$i,"niveau");
$i++;
}
$i=0;
while ($i < $num2) {
$naam2=mysql_result($result2,$i,"naam");
$vakgebied2=mysql_result($result2,$i,"vakgebied");
$niveau2=mysql_result($result2,$i,"niveau");
$i++;
}
$i=0;
while ($i < $num3) {
$naam3=mysql_result($result3,$i,"naam");
$vakgebied3=mysql_result($result3,$i,"vakgebied");
$niveau3=mysql_result($result3,$i,"niveau");
$i++;
}
if ($naam = $naam2 = $naam3) // nu moet hier uitkomen welke namen dat zijn?? maar hoe dat moet is mij nog een raadsel.
{
$i=0;
while ($i < $num3) {
$naam3=mysql_result($result3,$i,"naam");
$vakgebied3=mysql_result($result3,$i,"vakgebied");
$niveau3=mysql_result($result3,$i,"niveau");
echo "$naam3 <br>";
$i++;
}
}
else
{
echo "helaas niemand met dit profiel";
}
?>
$vakgebied1 = $_POST['vakgebied1'];
$vakgebied2 = $_POST['vakgebied2'];
$vakgebied3 = $_POST['vakgebied3'];
$query="SELECT * FROM vakgebiedwerknemer WHERE vakgebied='$vakgebied1'".
"ORDER BY naam";
$query2="SELECT * FROM vakgebiedwerknemer WHERE vakgebied='$vakgebied2'".
"ORDER BY naam";
$query3="SELECT * FROM vakgebiedwerknemer WHERE vakgebied='$vakgebied3'".
"ORDER BY naam";
$result=mysql_query($query);
$result2=mysql_query($query2);
$result3=mysql_query($query3);
$num=mysql_numrows($result);
$num2=mysql_numrows($result2);
$num3=mysql_numrows($result3);
mysql_close();
$i=0;
while ($i < $num) {
$naam=mysql_result($result,$i,"naam");
$vakgebied=mysql_result($result,$i,"vakgebied");
$niveau=mysql_result($result,$i,"niveau");
$i++;
}
$i=0;
while ($i < $num2) {
$naam2=mysql_result($result2,$i,"naam");
$vakgebied2=mysql_result($result2,$i,"vakgebied");
$niveau2=mysql_result($result2,$i,"niveau");
$i++;
}
$i=0;
while ($i < $num3) {
$naam3=mysql_result($result3,$i,"naam");
$vakgebied3=mysql_result($result3,$i,"vakgebied");
$niveau3=mysql_result($result3,$i,"niveau");
$i++;
}
if ($naam = $naam2 = $naam3) // nu moet hier uitkomen welke namen dat zijn?? maar hoe dat moet is mij nog een raadsel.
{
$i=0;
while ($i < $num3) {
$naam3=mysql_result($result3,$i,"naam");
$vakgebied3=mysql_result($result3,$i,"vakgebied");
$niveau3=mysql_result($result3,$i,"niveau");
echo "$naam3 <br>";
$i++;
}
}
else
{
echo "helaas niemand met dit profiel";
}
?>
Bij voorbaat dank voor uw hulp.
Er zijn een aantal dingen waar je op moet letten:
- Formulier afhandeling
- Database normalisatie: 3 Queries is overbodig.
- Overzichtelijk programmeren: Tabs + documentatie
- Fouten afhandeling
- SQL + XSS injection
- Variabelen buiten quotes
Je krijgt zeker een lijst met foutmeldingen? Je sluit mysql al ( mysql_close ), en daarna vraag je nog informatie op.
Succes met het verbeteren hiervan.
probeer het daarom eens met het LEFT JOIN statment je kunt dit
gewoon in mysql testen. en kijk voor meer info eens op: http://www.w3schools.com/sql/sql_join_left.asp
of
http://phpweby.com/tutorials/mysql/32
Quote:
//wel ff aanpassen anders werkt het niet
("SELECT * FROM `gebruikers` LEFT JOIN groeplidmaatschap ON ( groeplidmaatschap.gebruiker_id = gebruikers.id ) LEFT JOIN groepen ON (
groeplidmaatschap.groep_id = groepen.id )";)
//wel ff aanpassen anders werkt het niet
("SELECT * FROM `gebruikers` LEFT JOIN groeplidmaatschap ON ( groeplidmaatschap.gebruiker_id = gebruikers.id ) LEFT JOIN groepen ON (
groeplidmaatschap.groep_id = groepen.id )";)