Probleem met gebruikersnaam weergeven in een reactie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Timo Kleinhout

Timo Kleinhout

14/09/2012 22:04:50
Quote Anchor link
Hey,

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)
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
<?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]
 
PHP hulp

PHP hulp

21/11/2024 21:46:02
 
Reshad F

Reshad F

14/09/2012 22:48:58
Quote Anchor link
misschien een while lus maken van regel 28? want nu ga je er maar 1x doorheen ...
 
Timo Kleinhout

Timo Kleinhout

14/09/2012 23:10:36
Quote Anchor link
Bedankt voor de reactie, Ik heb er een while lus van gemaakt maar dat had helaas geen zin. Toen had ik ook geprobeerd om van regel 22 een while lus te maken, toen deed hij het WEL, maar kreeg ik 20 reacties te zien, terwijl er maar 5 instonden... weet iemand een oplossing zodat beiden problemen verholpen zijn?

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
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>";
}
}
}


?>

(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
 
Reshad F

Reshad F

14/09/2012 23:13:22
Quote Anchor link
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..
 
Timo Kleinhout

Timo Kleinhout

14/09/2012 23:24:30
Quote Anchor link
Hey,

Ik heb nog paar dingen geprobeerd en het is gelukt!! bedankt voor je tip van de extra while ;)
 
- Raoul -

- Raoul -

15/09/2012 10:26:36
Quote Anchor link
Code is lek => SQL Injection
 
Erwin H

Erwin H

15/09/2012 12:32:59
Quote Anchor link
De code is niet alleen lek.... het is een werkelijk belachelijk aantal volledig nutteloze queries.

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
<?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.
?>

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.
 



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.