Wanneer ik een reactie toevoeg aan een nieuwsbericht
werkt prima. Totdat ik 2 of meer reacties er aan toevoegd me webpagina ziet er dan zo uit

News.title
News.date
News.message
Comment.name
Comment.mail
Comment.message

News.title
News.date
News.message
Comment.name(2)
Comment.mail(2)
Comment.message(2)

zoals je ziet news.title, News.date, news.message komen dus dubbel weer, terwijl ik ze maar 1 echo.
erg irritant als je natuurlijk als je 5 reacties heb, dan zie je 5x het bericht .
Hoe kan ik dat oplossen, dat hij gewoon 1x mijn nieuwsbericht geeft en daaronder de geschreven reacties.


code
<?php

$news_id = mysql_real_escape_string($_GET['id']);
$comment_id = mysql_real_escape_string($_GET['id']);

$sql = "SELECT comments.comment_id, comments.comment_name, comments.comment_mail, comments.comment_message, news.news_id, news.news_title, news.news_date, news.news_message FROM comments RIGHT JOIN news ON news.news_id = comments.comment_news_id WHERE news.news_id = ". $news_id." ORDER BY news.news_id";

$result = mysql_query( $sql )
or die( mysql_error() );

if( mysql_num_rows( $result) == 0 )
{
echo "Result = 0";
}

else
{
// While maken
while(
$output = mysql_fetch_assoc( $result) )
{
{
echo '<p class="title">// <a href="getNewsMessage.php?id=' . $output['news_id'] .'">'.$output['news_title'].'</a></p>';

echo '<p class="date">gepost op ' . dutchdate($output['news_date']) . '</p>';
echo '<p class="message">' . htmlspecialchars_decode($output['news_message']) . '</p>';
echo "\n\n";

echo '<p class="comment">' . htmlspecialchars_decode($output['comment_name']) . '</p>';;
echo '<p class="comment">' . htmlspecialchars_decode($output['comment_mail']) . '</p>';
echo '<p class="comment">' . htmlspecialchars_decode($output['comment_message']) . '</p>';
echo "\n\n";

}
}
}

?>
Offtopic: $query is bij jou geen query, maar een resultset. Dit is dus vragen om moeilijkheden, onduidelijkheid alom. Gebruik een beschrijvende naam, bv. $result of $resultaat.

Daarnaast is de opmerking 'Table is empty' niet correct, er kunnen miljoenen records in de tabel staan en dat je met jouw query geen enkel resultaat krijgt. Er staat niet voor niks een WHERE in de query...

Ontopic: je doet niks aan beveiliging, een grappenmaker kan zo jouw tabellen leeg gooien, SQL-injection toepassen. Gebruik minimaal mysql_real_escape_string() om de GET-input te beveiligen.

$news_id = mysql_real_escape_string($_GET['id']);
pgFrank schreef op 02.12.2007 17:40
Offtopic: $query is bij jou geen query, maar een resultset. Dit is dus vragen om moeilijkheden, onduidelijkheid alom. Gebruik een beschrijvende naam, bv. $result of $resultaat.

Daarnaast is de opmerking 'Table is empty' niet correct, er kunnen miljoenen records in de tabel staan en dat je met jouw query geen enkel resultaat krijgt. Er staat niet voor niks een WHERE in de query...

Ontopic: je doet niks aan beveiliging, een grappenmaker kan zo jouw tabellen leeg gooien, SQL-injection toepassen. Gebruik minimaal mysql_real_escape_string() om de GET-input te beveiligen.

$news_id = mysql_real_escape_string($_GET['id']);

Thx heb het gelijk aangepast...
Maarja nu uiteraard nog steeds het zelfde probleem
Tellertje laten meelopen en de message slechts 1x tonen en de rest onbeperkt.

Pseudo code:
$teller = 0;
if $teller < 1 {
echo $message
$teller++;
}


<?php

if ($counter_message < 1) {
echo '<p class="title">// <a href="getNewsMessage.php?id=' . $output['news_id'] .'">'.$output['news_title'].'</a></p>';
echo '<p class="date">gepost op ' . dutchdate($output['news_date']) . '</p>';
echo '<p class="message">' . htmlspecialchars_decode($output['news_message']) . '</p>';
echo "\n\n";

$counter_message++;
}

?>
hij doet het zo
maar mag dit?
Waarom zou het niet mogen?

Edit: Het is wel zo netjes om $counter_message vóór de if, eerst te declareren:
$counter_message = 0;
if(blablabla
pgFrank schreef op 02.12.2007 18:08
Waarom zou het niet mogen?


ik deed eerst dit
$counter_message = 0;
if ($counter_message < 1) {
maar dan kreeg ik ze allebei
ben ik weer
hoe krijg ik zeg maar teller goed bij me post pagina dan

<?php

while(
$output = mysql_fetch_assoc( $result ) )

{
{

if ($counter_message < 1) {
echo '<p class="title">// <a href="getNewsMessage.php?id=' . $output['news_id'] .'">'.$output['news_title'].'</a></p>';
echo '<p class="date">gepost op ' . dutchdate($output['news_date']) . '</p>';
echo '<p class="message">' . htmlspecialchars_decode($output['news_message']) . '</p>';
echo "\n\n";

$counter_message++;
}

echo '<p class="comment">' . htmlspecialchars_decode($output['comment_name']) . '</p>';;
echo '<p class="comment">' . htmlspecialchars_decode($output['comment_mail']) . '</p>';
echo '<p class="comment">' . htmlspecialchars_decode($output['comment_message']) . '</p>';
echo "\n\n";


//Reaction form
if (!isset($_POST['submit'])) {


echo'<form method="post" name="addComment" action="">';
echo'<legend><p class="comment">Reactie (uw ipadres wordt bewaard)</legend>';
echo'<legend><p class="comment">Naam:</legend> <input name="comment_name" size="20" class="comment_name_field"></p>';
echo'<legend><p class="comment">Mail:</legend> <input name="comment_mail" size="20" class="comment_mail_field"></p>';
echo'<legend><p class="comment">Bericht:</legend>';
echo'<textarea cols="30" rows="4" name="comment_message" class="comment_message_field"></textarea></p>';

echo '<br/>';

echo'<input type="submit" name="submit" value="Posten" class="post_button">';
echo'<input type="reset" name="reset" value="Reset" class="post_button">';
echo'</form>';


}

?>

want nu is de post_reactie pagina als er 3 reacties zijn :

bericht
reactie
reactie formulier

reactie
reactie formulier

reactie
reactie formulier

het moet natuurlijk zijn
bericht
reactie 1
reactie 2
reactie 3
reactie_formulier
Ik gok dat je ook slechts 1x het rectieformulier wilt hebben, die haal je buiten de while-lus en klaar ben je.
pgFrank schreef op 02.12.2007 18:43
Ik gok dat je ook slechts 1x het rectieformulier wilt hebben, die haal je buiten de while-lus en klaar ben je.


het form zit toch buiten mijn while lus
kheb nisk gezegd;) zag het ff niet
te laat gister geworden ik

Reageren