Anders Moen Skrevet 13. juni 2007 Del Skrevet 13. juni 2007 (endret) 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 13. juni 2007 av Anders-Moen Lenke til kommentar
Crowly Skrevet 13. juni 2007 Del Skrevet 13. juni 2007 (endret) Edit: Feil tankegang Endret 13. juni 2007 av crowly Lenke til kommentar
Anders Moen Skrevet 13. juni 2007 Forfatter Del Skrevet 13. juni 2007 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... Lenke til kommentar
Crowly Skrevet 13. juni 2007 Del Skrevet 13. juni 2007 (endret) 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 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 <?phpecho $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 13. juni 2007 av crowly Lenke til kommentar
Anders Moen Skrevet 13. juni 2007 Forfatter Del Skrevet 13. juni 2007 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
-morten Skrevet 13. juni 2007 Del Skrevet 13. juni 2007 Det er egentlig ikke noe vits å lagre antall kommentarer i blog-tabellen (men det kan være raskere/enklere). Du får antall kommentarer på hver post med SELECT count(*) FROM comments WHERE id_where=$blogid Lenke til kommentar
Crowly Skrevet 13. juni 2007 Del Skrevet 13. juni 2007 (endret) 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 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 Endret 13. juni 2007 av crowly Lenke til kommentar
Anders Moen Skrevet 13. juni 2007 Forfatter Del Skrevet 13. juni 2007 Ja, det der får jeg til. Men hvordan skal jeg gjøre det i pagination scriptet som jeg postet ovenfor? Lenke til kommentar
Crowly Skrevet 13. juni 2007 Del Skrevet 13. juni 2007 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 Lenke til kommentar
Anders Moen Skrevet 13. juni 2007 Forfatter Del Skrevet 13. juni 2007 Haha, jeg kaster ikke inn det hvite håndkledet Det så ut til å fungere. Sto i allfall det samme som de jeg hadde fylt inn "comments" på selv Takk for hjelpen Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå