Gå til innhold

Funker ikke: comments=comments+1 [LØST]


Anbefalte innlegg

Hei!

 

Har skifta fra WP på sida mi, siden jeg klarte å slette ganske mye fra serveren ved et uhell utenom databasene og det der, men uansett.

 

Kode (som jeg har over doctypen)

mysql_connect("localhost", "username", "password");

mysql_select_db("database");
if (isset($_POST['leave_comment']) AND $_POST['whatis'] == 15) {

$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$comment = mysql_real_escape_string($_POST['comment']);
$whatis = $_POST['whatis'];
$id_where = intval($_GET['id']);
$pub_when = date('M d Y');

mysql_query("UPDATE blog SET comments = comments+1 WHERE id = '$id'");
mysql_query("INSERT INTO comments (id_where, name, mail, comment, pub_when)
VALUES ('$id_where', '$name', '$email', '$comment', '$pub_when')");
header('Location: /entry/' . $_GET['id'] . '/');

}

 

Uansett, det blir satt inn i tabellen comments, men i blog vil det ikke oppdatere seg med at det er en kommentar mer. Kunne godt ha brukt noe sånn der mysql_num_rows($q), men jeg vet ikke åssen jeg får det til i paginationscriptet jeg har. Legger med den koden og hvis noen vet det...det ville jo spart meg for masse tid

 

Klikk for å se/fjerne innholdet nedenfor
if(!isset($_GET['page']))
{
$page = 1;
}
else 
{
$page = $_GET['page'];
}

$max_news = 3;
$start = ($page * $max_news) - $max_news;

$query = mysql_query("SELECT * FROM blog ORDER BY id DESC LIMIT $start, $max_news");
while($row = mysql_fetch_array($query))
{

echo '<a href="/p/blog/entry/' . $row['id'] . '/" class="title">' . htmlentities(stripslashes($row['title'])) . '</a>';
echo '<br />';
echo '<small>Published on ' . $row['pub_when'] . ' by ' . $row['pub_by'] . '</small>';
echo '<br />';
echo '<span class="content">' . bbcode($row['intro']) . '</span>';
echo '<br />';
echo '<a href="/p/blog/entry/' . $row['id'] . '/">Read more</a> | ';
echo '<a href="/p/blog/entry/' . $row['id'] . '/#comments">Comments (' . $row['comments'] . ')</a>';
echo '<br />';
echo '<br />';
}
$sql = mysql_query("SELECT * FROM blog");
$result = mysql_num_rows($sql);

$total_pages = ceil($result / $max_news);

if($page > 1)
{
$previous = $page - 1;
echo '';
}

for($i = 1; $i <= $total_pages; $i++)
{
   if($i == $page)
   {
 echo '<a href="/p/blog/page/' . $page . '/" class="pag" id="active">' . $page . '</a>';
}
else
{
echo ' <a href="/p/blog/page/' . $i . '/" class="pag">' . $i . '</a> ';
}
}

if($page < $total_pages)
{
$next = $page + 1;
echo "<!-- <a href='/nyheter/side/" . $next . "/' class='pag'>Next »</a> -->";
}

Den andre koden la jeg med bare sånn hvis noen vet åssen jeg kan telle kommentarer til hver enkelt bloggpost...

 

Noen som kan hjelpe?

 

 

 

 

Edit

For dere som vil se løsningen. Se nederste post av Crowly :)

Endret av Anders-Moen
Lenke til kommentar
Videoannonse
Annonse
Hmm...det funka dårlig

 

Se her - da står det 3 på hvert inlegg...i pagination scriptet altså. Skifter jeg ut $max_news = 3; med f. eks $max_news = 10; så får hvert innlegg 10 kommentarer...

8852626[/snapback]

 

Ooops vel koden fungere som den skal, men jeg tenkt litt feil :whistle: for gjøre ett nytt forsøk.

 

Tror du trenger å legge til

PHP
<?php

$antkom=mysql_fetch_row(mysql_query("SELECT count(*) FROM comments WHERE id=".$blog_id_var));

?>

etter at du har hentet frem id'en til den posten/bloggen du skal skrive ut, og før du skriver ut antall kommentarer, så gjør den en

PHP
<?php

echo $antkom[0];

?>

for å vis antallet.

 

Og bare ett lite tips for optimalisering av ressursbruk, bruk kun SELECT * når du trenger å hente ut alle feltene fra tabellen, hvis du ikke trenger alle så spesifiser kun de du trenger.

Endret av crowly
Lenke til kommentar

Hmm, tror du har misforstått litt nå....eller bare jeg som har forklart litt dårlig

 

Det jeg prøver på er å telle hvor mange kommentarer som finnes til hver post. I tabellen comments så står det en ID (auto_increment), og så er det et annet felt kalt id_where som f. eks er 3. Da vil den kommentaren hentes ut hvis du har sånn ?blogentry=3

Lenke til kommentar

Har sikkert missforstått. Men jeg stusser litt på denne

PHP
mysql_query("UPDATE blog SET comments = comments+1 WHERE id = '$id'");

er id tekst ? Jeg ville ha skrevet den slik

PHP

//tekst

mysql_query("UPDATE blog SET comments = comments+1 WHERE id = '".$id."'");

//eller

mysql_query("UPDATE blog SET comments = comments+1 WHERE id = '{$id}'");

 

//tall

mysql_query("UPDATE blog SET comments = comments+1 WHERE id = ".$id);

//eller

mysql_query("UPDATE blog SET comments = comments+1 WHERE id = {$id}");

 

Det jeg prøver på er å telle hvor mange kommentarer som finnes til hver post. I tabellen comments så står det en ID (auto_increment), og så er det et annet felt kalt id_where som f. eks er 3. Da vil den kommentaren hentes ut hvis du har sånn ?blogentry=3

Ser jeg har rotet litt med tabellene, men det var det jeg prøvde på, har rettet litt på koden i den forrige posten, håper den funkerer nå. For å forklare litt nærmere hva jeg prøvde på

PHP
$antkom=mysql_fetch_row(mysql_query("SELECT count(*) FROM comments WHERE id_where=".$blog_id_var));
skal telle opp antall kommentarer for en blog (post), så du må endre $blog_id til noe som unikt identifiserer den bloggen du skal skrive ut/telle opp antall kommentarer på. Men du trenger jo ikke gjøre dette hvis du får UPDATE'en til få fungere, da skulle det bare være å skrive ut det feltet. For å teste, og sjekke at sql'en ser riktig ut kan du prøve dette
PHP
$test=UPDATE blog SET comments = comments+1 WHERE id = ".$id;

echo $test."<br />";

mysql_query($test);

 

//eller

mysql_query("UPDATE blog SET comments = comments+1 WHERE id = ".$id)||die("Feil blog update: ".mysql_error());

Leste på ett annet forum, aldri forutsett at sql'ene dine er riktige. Alltid kjekt å legge inn litt kode for å sjekke at ting foregår slik man forventer, kan alltids kommentere det ut senere når ting fungerer.

 

For håpe jeg har forstått litt mere nå, og kan klare å hjelpe deg litt nærmere en løsning :innocent:

 

Edit: Begynner strekt å misslike å få farger på php koden, det skjer alt mulig merkelig når man redigerer posten, kode forsvinner og annen kode blir erstattet osv :thumbdown:

Endret av crowly
Lenke til kommentar

Prøv å erstatt

echo '<a href="/p/blog/entry/' . $row['id'] . '/#comments">Comments (' . $row['comments'] . ')</a>';

med

$antkom=mysql_fetch_row(mysql_query("SELECT count(*) FROM comments WHERE id_where=".$row['id']));
echo '<a href="/p/blog/entry/' . $row['id'] . '/#comments">Comments (' . $antkom[0] . ')</a>';

 

Hvis ikke det fungere nå så tror jeg at jeg blir nødt til å kaste inn det hvite håndkledet :blush::cry:;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...