Newsfeed
ik heb een newsfeed gemaakt maar het zou alle berichten moeten weergeven. Maar hij geeft alleen het laatste bericht weer.
Wat moet ik nu doen?
PHP CODE
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$getposts = mysql_query("SELECT * FROM posts WHERE user_posted_to='$user_login' ORDER BY id DESC LIMIT 10") or die(mysql_error());
while ($row = mysql_fetch_assoc($getposts)) {
$id = $row['id'];
$body = $row['body'];
$date_added = $row['date_added'];
$added_by = $row['added_by'];
$user_posted_to = $row['user_posted_to'];
$get_user_info = mysql_query("SELECT * FROM users WHERE username='$added_by'");
$get_info = mysql_fetch_assoc($get_user_info);
$profilepic_info = $get_info['profile_pic'];
if ($profilepic_info == "") {
$profilepic_info = "./img/default_pic.jpg";
}
else
{
$profilepic_info = "./userdata/profile_pics/".$profilepic_info;
}
}
?>
$getposts = mysql_query("SELECT * FROM posts WHERE user_posted_to='$user_login' ORDER BY id DESC LIMIT 10") or die(mysql_error());
while ($row = mysql_fetch_assoc($getposts)) {
$id = $row['id'];
$body = $row['body'];
$date_added = $row['date_added'];
$added_by = $row['added_by'];
$user_posted_to = $row['user_posted_to'];
$get_user_info = mysql_query("SELECT * FROM users WHERE username='$added_by'");
$get_info = mysql_fetch_assoc($get_user_info);
$profilepic_info = $get_info['profile_pic'];
if ($profilepic_info == "") {
$profilepic_info = "./img/default_pic.jpg";
}
else
{
$profilepic_info = "./userdata/profile_pics/".$profilepic_info;
}
}
?>
JAVASCRIPT CODE
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<script language="javascript">
function toggle<?php echo $id; ?>() {
var ele = document.getElementById("toggleComment<?php echo $id; ?>");
var text = document.getElementById("displayComment<?php echo $id; ?>");
if (ele.style.display == "block") {
ele.style.display = "none";
}
else
{
ele.style.display = "block";
}
}
</script>
function toggle<?php echo $id; ?>() {
var ele = document.getElementById("toggleComment<?php echo $id; ?>");
var text = document.getElementById("displayComment<?php echo $id; ?>");
if (ele.style.display == "block") {
ele.style.display = "none";
}
else
{
ele.style.display = "block";
}
}
</script>
HTML CODE
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class='newsFeedPost'>
<div class='newsFeedPostOptions'>
<a href='#' onClick='javascript:toggle<?php echo $id?>()'>Show Comments</a>
</div>
<div style='float: left;'>
<img src='<?php echo $profilepic_info;?>' height='60'>
</div>
<div class='posted_by'><?php echo $added_by?> posted this on your profile:</div>
<br /><br />
<div style='max-width: 600px;'>
<?php echo $body;?><br /><p /><p />
</div>
<div id='toggleComment<?php echo $id;?>' style='display: none;'>
<br />
<iframe src='./comment_frame.php?id=<?php echo $id;?>' frameborder='0' style='max-height: 150px; width: 100%; min-height: 10px;'></iframe>
</div>
<p />
</div>
<div class='newsFeedPostOptions'>
<a href='#' onClick='javascript:toggle<?php echo $id?>()'>Show Comments</a>
</div>
<div style='float: left;'>
<img src='<?php echo $profilepic_info;?>' height='60'>
</div>
<div class='posted_by'><?php echo $added_by?> posted this on your profile:</div>
<br /><br />
<div style='max-width: 600px;'>
<?php echo $body;?><br /><p /><p />
</div>
<div id='toggleComment<?php echo $id;?>' style='display: none;'>
<br />
<iframe src='./comment_frame.php?id=<?php echo $id;?>' frameborder='0' style='max-height: 150px; width: 100%; min-height: 10px;'></iframe>
</div>
<p />
</div>
Alvast bedankt!
Mvg
Gewijzigd op 30/05/2015 09:53:17 door John De Zon
a) queries in een while loop zijn traag. Dit is om te zetten in één query.
b) overbodig kopiëren van variabelen
c) honderd functies aanmaken in javascript die uiteindelijk hetzelfde doen
Kies er eens uit waar we mee gaan beginnen?
Hoe kan ik deze in 1 query zetten?
Bovendien toon je de $rom maar één maal in je HTML, dit zal je toch ook 10x moeten doen denk ik.
Maar waarom verschijnen niet alle resultaten van de query dan?
p.id, p.body, u.id, u.username
etc
Toevoeging op 30/05/2015 12:47:07:
Je moet enkel opvragen dat wat je ECHT nodig hebt. Zo hou je de data het kleinst ( === snelst )
Dat snap ik niet volledig?
Probeer je query eens in phpMyAdmin onder de SQL tab te plakken en uit te voeren. Je ziet dan direct wat het doet. Probeer daarna eens een extra kolom onder het SELECT gedeelt er bij te plaatsen.
Wat moet ik er nu mee doen?
De samenhang tussen de PHP-code en de HTML-code is onduidelijk.
EDIT: afgaande op wat je omschrijft, wordt de HTML eenmalig afgedrukt na uitvoering van de PHP (while-loop) code. Het is logisch dat je dan alleen het laatste bericht te zien krijgt, en niet alle.
Gewijzigd op 30/05/2015 13:06:23 door Thomas van den Heuvel
HTML staat erna en niet in de while-loop
Wat verwacht je dan? Als je alle items wilt afdrukken, zul je dit tijdens het doorlopen van de while-loop moeten doen.
EDIT: alternatief: nu is het zo dat bij het doorlopen van de while-loop alleen de laatst opgehaalde informatie wordt onthouden. Wat je ook zou kunnen doen is alle informatie in een array opslaan, en dit array nogmaals doorlopen in een aparte loop, maar dit is dus inefficient als je dit ook direct kunt doen.
Gewijzigd op 30/05/2015 13:13:32 door Thomas van den Heuvel
Dank je Thomas! Ik heb de HTML in de while-loop gezet en nu werkt het!
Ja het werkt maar hoe..