Probleem met gebruikersnaam weergeven in een reactie
Ik ben bezig met een nieuwssysteem. Ik ben al een heel eind en nu moeten de reacties per bericht weergegeven worden. Nu blijf ik vast zitten bij een probleempje. Zo als het nu is geeft hij bij de Gebruikersnaam overal de zelfde gebruikersnaam weer . Dus als 3 verschillende mensen reageren staat er bij iedereen de gebruikersnaam van degene die als eerste een reactie poste :(
Ik kom er helaas niet uit, kan iemand mij misschien helpen?
Al vast bedankt.
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
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
<?php
// Nieuwsberichten uit database halen
$result_bericht = mysql_query("SELECT * FROM nieuws
WHERE id='" . $_GET['id'] . "'");
$row_bericht = mysql_fetch_assoc($result_bericht);
// Reacties uit database halen
$result_reactie = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
// Aantal reacties
$aantalreacties = mysql_num_rows($result_reactie);
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
$row_reactie_naam = mysql_fetch_assoc($result_reactie_naam);
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
$row_naam = mysql_fetch_assoc($result_naam);
echo $row_naam['gebruikersnaam'];
echo "<br />";
echo $row_reactie['bericht'];
echo "<br />";
echo $row_reactie['datum'];
echo "<br></br>";
}
?
[/code]
// Nieuwsberichten uit database halen
$result_bericht = mysql_query("SELECT * FROM nieuws
WHERE id='" . $_GET['id'] . "'");
$row_bericht = mysql_fetch_assoc($result_bericht);
// Reacties uit database halen
$result_reactie = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
// Aantal reacties
$aantalreacties = mysql_num_rows($result_reactie);
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
$row_reactie_naam = mysql_fetch_assoc($result_reactie_naam);
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
$row_naam = mysql_fetch_assoc($result_naam);
echo $row_naam['gebruikersnaam'];
echo "<br />";
echo $row_reactie['bericht'];
echo "<br />";
echo $row_reactie['datum'];
echo "<br></br>";
}
?
[/code]
misschien een while lus maken van regel 28? want nu ga je er maar 1x doorheen ...
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
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
<?php
// Nieuwsberichten uit database halen
$result_bericht = mysql_query("SELECT * FROM nieuws
WHERE id='" . $_GET['id'] . "'");
$row_bericht = mysql_fetch_assoc($result_bericht);
// Reacties uit database halen
$result_reactie = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
// Aantal reacties
$aantalreacties = mysql_num_rows($result_reactie);
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
while($row_naam = mysql_fetch_assoc($result_naam))
{
echo $row_naam['gebruikersnaam'];
echo "<br />";
echo $row_reactie['bericht'];
echo "<br />";
echo $row_reactie['datum'];
echo "<br></br>";
}
}
}
?>
// Nieuwsberichten uit database halen
$result_bericht = mysql_query("SELECT * FROM nieuws
WHERE id='" . $_GET['id'] . "'");
$row_bericht = mysql_fetch_assoc($result_bericht);
// Reacties uit database halen
$result_reactie = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
// Aantal reacties
$aantalreacties = mysql_num_rows($result_reactie);
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
while($row_naam = mysql_fetch_assoc($result_naam))
{
echo $row_naam['gebruikersnaam'];
echo "<br />";
echo $row_reactie['bericht'];
echo "<br />";
echo $row_reactie['datum'];
echo "<br></br>";
}
}
}
?>
(Met deze code laat hij dus veel meer reacties (dubbele reacties) zien dan dat er in de database staat)
Gewijzigd op 14/09/2012 23:11:23 door Timo Kleinhout
hoezo heb je een while in een while in een while? en wil je a.u.b goed inspringen want je code is niet te lezen..
Ik heb nog paar dingen geprobeerd en het is gelukt!! bedankt voor je tip van de extra while ;)
Code is lek => SQL Injection
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
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
<?php
$result_reactie = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
// Aantal reacties
$aantalreacties = mysql_num_rows($result_reactie);
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
//sluit haakjes heb ik even niet mee gecopieerd.
?>
$result_reactie = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
// Aantal reacties
$aantalreacties = mysql_num_rows($result_reactie);
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
// Reacties weergeven
while($row_reactie = mysql_fetch_assoc($result_reactie))
{
$result_reactie_naam = mysql_query("SELECT * FROM reacties
WHERE nieuws_id='" . $_GET['id'] . "'");
while ($row_reactie_naam = mysql_fetch_assoc($result_reactie_naam))
{
// Naam opzoeken die bij het leden_id hoort
$result_naam = mysql_query("SELECT * FROM leden
WHERE id='" . $row_reactie_naam['leden_id'] . "'");
//sluit haakjes heb ik even niet mee gecopieerd.
?>
Dus als ik het goed begrijp haal je alle reacties op. Dan loop je door alle reacties heen en voor elke reactie voer je EXACT DEZELFDE query uit om alleen de naam op te halen. EXACT DEZELFDE query dus, waardoor je dus EXACT DEZELFDE data nogmaals ophaalt.
Dan binnen die loop, voor elke reactie ga je nog eens een query uitvoeren om de naam van persoon op te halen (dat doen we met joins!).
Dan, binnen die laatst loop weer, ga je nog maar eens alle reacties ophalen. Weer EXACT DEZELFDE query dus. En ook daarbinnen nogmaals de set aan queries om naam etc op te halen.
Echt, gooi dit HEEL SNEL het raam uit en ga eens goed kijken hoe dit moet. wat je nu doet is echt onzin.