2 query's in while loop
Ik heb de volgende php code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
while($rij = mysql_fetch_array($result2)) {
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
echo("<tr>
<td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
<font size=\"2\"><i>" .$rij["type"]. "</i><br>
Posts: #" .$rij["aantal"]. "</font></td>");
if($_SESSION["gnaam"] == $rij["auteur"] || isset($_SESSION["admin"])) {
echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
}
else echo "<td>";
echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
if(isset($rij["dt_edit"])) {
echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
while($rij = mysql_fetch_array($result2)) {
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
echo("<tr>
<td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
<font size=\"2\"><i>" .$rij["type"]. "</i><br>
Posts: #" .$rij["aantal"]. "</font></td>");
if($_SESSION["gnaam"] == $rij["auteur"] || isset($_SESSION["admin"])) {
echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
}
else echo "<td>";
echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
if(isset($rij["dt_edit"])) {
echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
Hier
moet dus het aantal posts komen te staan.
p.s. in $rij zitten alle reacties per topic en de user type etc alleen $rij["aantal"] bestaat dus niet aangezien die niet in dezelfde query kan.
Quote:
Dit moet echter in een aparte query gezien mijn datamodel. Hoe krijg ik dit voor elkaar?
Welk datamodel? Ik zie nergens een datamodel.
Ik vermoed overigens dat je slechts 1 (sub-) query nodig hebt en dat je die absoluut niet in je while-lus wilt gaan uitvoeren. Het heeft geen enkele zin om keer op keer dezelfde query met dezelfde resultaten uit te gaan voeren. Of moet de boel soms langzamer worden?
http://www.phphulp.nl/forum/showtopic.php?cat=12&id=56977&page=
Oftewel:
Tabel reactie:
<id> int (dit is het topic id)
nr int AUTO_INCREMENT
reactie varchar
<auteur> varchar (fkey van gebruikersnaam)
datum DATETIME
Tabel users:
id int AUTO_INCREMENT
<gebruikersnaam> varchar
voornaam varchar
achternaam varchar
email varchar
lid_sinds DATETIME
type enum
Tabel onderwerp:
id int
onderwerp varchar (naam vd topic)
<auteur> varchar (weer foreign key met gebruikersnaam)
datum datetime
p.s. ik ben me bewust van soms wat onduidelijke benaming in het model maar gelieve te focussen op het probleem.
zie ook: Oftewel:
Tabel reactie:
<id> int (dit is het topic id)
nr int AUTO_INCREMENT
reactie varchar
<auteur> varchar (fkey van gebruikersnaam)
datum DATETIME
Tabel users:
id int AUTO_INCREMENT
<gebruikersnaam> varchar
voornaam varchar
achternaam varchar
email varchar
lid_sinds DATETIME
type enum
Tabel onderwerp:
id int
onderwerp varchar (naam vd topic)
<auteur> varchar (weer foreign key met gebruikersnaam)
datum datetime
p.s. ik ben me bewust van soms wat onduidelijke benaming in het model maar gelieve te focussen op het probleem.
Maar dan zeker wel zonder de < en >.
@pgFrank het zou best kunnen dat ik de query niet in de while lus moet uitvoeren maar ik zou niet weten hoe ik het zou moeten doen, aangezien er per user dus een ander aantal reacties moet komen te staan (eigenlijk net zoals hier). Iemand die me de goeie richting op kan werken want ik ben bang dat ik er met mijn beperkte kennis zelf niet op kom.
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
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
<?php
while($rij = mysql_fetch_array($result2)) {
$query3 = "SELECT auteur, COUNT(*) AS aantal
FROM reactie
WHERE auteur = '" .$rij["auteur"]. "'
GROUP BY auteur";
$result3= mysql_query($query3) or die(mysql_error());
$rij2 = mysql_fetch_array($result3);
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
echo("<tr>
<td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
<font size=\"2\"><i>" .$rij["type"]. "</i><br>
Posts: #" .$rij2["aantal"]. "</font></td>");
if((isset($_SESSION["gnaam"]) && $_SESSION["gnaam"] == $rij["auteur"]) || isset($_SESSION["admin"])) {
echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
}
else echo "<td>";
echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
if(isset($rij["dt_edit"])) {
echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
while($rij = mysql_fetch_array($result2)) {
$query3 = "SELECT auteur, COUNT(*) AS aantal
FROM reactie
WHERE auteur = '" .$rij["auteur"]. "'
GROUP BY auteur";
$result3= mysql_query($query3) or die(mysql_error());
$rij2 = mysql_fetch_array($result3);
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
echo("<tr>
<td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
<font size=\"2\"><i>" .$rij["type"]. "</i><br>
Posts: #" .$rij2["aantal"]. "</font></td>");
if((isset($_SESSION["gnaam"]) && $_SESSION["gnaam"] == $rij["auteur"]) || isset($_SESSION["admin"])) {
echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
}
else echo "<td>";
echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
if(isset($rij["dt_edit"])) {
echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
iemand een betere suggestie?
edit: ben bang dat dit hetgeen is wat pgFrank bedoelt en dat dit tijdverlies is!
Gewijzigd op 01/01/1970 01:00:00 door Jan Horden
Niemand een suggestie hoe het beter kan?
Gebruik enkele ' ipv " dan hoef je niet \
dat zou al een stuk schelen
ow ja font wordt eigenlijk niet meer ondersteund
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Toegegeven dr zijn wel een aantal regels waar ik ' zou kunnen gebruiken ipv " maar dat lost de \" niet op!
edit: en hoe moet ik font oplossen dan?
Gewijzigd op 01/01/1970 01:00:00 door Jan Horden
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
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
<?php
while($rij = mysql_fetch_array($result2)){
$query3 = "SELECT auteur, COUNT(*) AS aantal
FROM reactie
WHERE auteur = '" .$rij["auteur"]. "'
GROUP BY auteur";
$result3 = mysql_query($query3) or die(mysql_error());
$rij2 = mysql_fetch_array($result3);
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace('\n', '<br>', $rij['reactie']), 90, '<br>')));
?>
<tr>
<td width="20%" rowspan="2" valign="top">
<font color="#0000FF">" <?php echo $rij["auteur"]; ?></font><br>
<font size="2"><i> <?php echo $rij["type"]; ?></i><br>
Posts: #" <?php echo $rij2["aantal"]; ?></font>
</td>
<?php
if((isset( $_SESSION["gnaam"]) && $_SESSION["gnaam"] == $rij["auteur"]) || isset($_SESSION["admin"])) {
?>
<td>
<a href="edit_post.php?nr=" <?php echo $rij["nr"]; ?>">
<img src="images/edit.gif"
border="0" alt="Edit" align="right">
</a>
<?php
}
else
?>
<td>
<font size="2">Geplaatst op: <?php echo $rij["datum"]; ?></font>
<?php
if(isset($rij["dt_edit"])) {
?>
<br>
<font size="1">
Dit bericht is aangepast op <?php echo $rij["dt_edit"]; ?>
door <?php echo $rij["name_edit"]; ?>
</font>
</td>
</tr>
<?php //enzovoort
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
while($rij = mysql_fetch_array($result2)){
$query3 = "SELECT auteur, COUNT(*) AS aantal
FROM reactie
WHERE auteur = '" .$rij["auteur"]. "'
GROUP BY auteur";
$result3 = mysql_query($query3) or die(mysql_error());
$rij2 = mysql_fetch_array($result3);
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace('\n', '<br>', $rij['reactie']), 90, '<br>')));
?>
<tr>
<td width="20%" rowspan="2" valign="top">
<font color="#0000FF">" <?php echo $rij["auteur"]; ?></font><br>
<font size="2"><i> <?php echo $rij["type"]; ?></i><br>
Posts: #" <?php echo $rij2["aantal"]; ?></font>
</td>
<?php
if((isset( $_SESSION["gnaam"]) && $_SESSION["gnaam"] == $rij["auteur"]) || isset($_SESSION["admin"])) {
?>
<td>
<a href="edit_post.php?nr=" <?php echo $rij["nr"]; ?>">
<img src="images/edit.gif"
border="0" alt="Edit" align="right">
</a>
<?php
}
else
?>
<td>
<font size="2">Geplaatst op: <?php echo $rij["datum"]; ?></font>
<?php
if(isset($rij["dt_edit"])) {
?>
<br>
<font size="1">
Dit bericht is aangepast op <?php echo $rij["dt_edit"]; ?>
door <?php echo $rij["name_edit"]; ?>
</font>
</td>
</tr>
<?php //enzovoort
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
Maar nu zit ik nog met het punt dat ik het gevoel heb dat ik de boel vertraag door de query in de while lus uit te voeren zoals pgFrank zei! Kan dit dus sneller?
En hoe moet ik font dan regelen? alles via CSS?
Inderdaad font los je op met CSS en een class. Wat Frank bedoelt is dat het niet waarschijnlijk is dat het goed is dat je dit met een apparte query doet. Dit duidt op een onjuist datamodel
Thx voor de hulp allemaal!