22. august 2007 - 16:04Der er
25 kommentarer og 1 løsning
Udtrække titel fra en db og brugerid fra en anden, og brugernavn
Hejsa
Jeg sidder og skal lave noget "de sidste 5 indlæg" og vil i den forbindelse udtrække, brugerens navn, samt hvilket indlæg han har besvaret, som jeg så vil trække ud, og vise.
Pt. bruger jeg denne kode, men den viser ikke noget
<?php
$q = @mysql_query("SELECT COUNT(id) AS count FROM ch_reviews_comments ORDER BY ID DESC LIMIT 5 WHERE rid = '$id'"); $r = @mysql_fetch_assoc($q);
$qu = @mysql_query("SELECT * FROM ch_reviews_comments WHERE rid = '$id'"); if (@mysql_num_rows($qu) != 0) { while ($r = @mysql_fetch_array($qu)) { $que = @mysql_query("SELECT username FROM ch_users ORDER BY ID DESC LIMIT 5 WHERE id = '". $r["uid"] ."'"); $auth = @mysql_fetch_assoc($que); {
en anden der har lavet dette script... men det fungerer på den side, hvor jeg har taget det fra (altså MIN underside), som viser brugernavn og kommentaren
Men den der må kunne laves mere enkel. Har ikke tid nu, er på arbejde og på vej hjem. Men hvis nogen anden ikke kigger på den kan jeg forkorte den en del, når/hvis jeg engang har tid i aften.
$query = mysql_query( 'SELECT ch_reviews_comments.*, ch_users.username AS byusername, ch_users.id AS byuserid FROM ch_reviews_comments LEFT JOIN ch_users ON ch_users.id=ch_reviews_comments.uid ORDER BY ch_reviews_comment.id DESC LIMIT 5' );
Noget i den stil. Det er svært at tilpasse når jeg ikke ved hvordan din database ser ud :)
$query = mysql_query( 'SELECT ch_reviews.titel, ch_users.username, AS byusername, ch_users.id AS byuserid, ch_reviews_comments.DATO/ELLERIDVÆLGSELV AS lastpost FROM ch_reviews_comment LEFT JOIN ch_reviews ON ch_reviews.id=ch_reviews_comments.reviewid LEFT JOIN ch_users ON ch_users.id=ch_reviews_comments.uid ORDER BY lastpost DESC LIMIT 5' );
Jeg skal udtrække de 5 sidste brugernavne, som har skrevet en kommentar hvor brugeridet står i ch_reviews_comments og brugernavnet står i ch_users ud for samme id.
Dertil skal jeg udtrække titlen på den kommenterede tråd, som står i ch_review
$query = mysql_query( 'SELECT ch_reviews.titel, ch_users.username, AS byusername, ch_users.id AS byuserid, ch_reviews_comments.DATO/ELLERIDVÆLGSELV AS lastpost FROM ch_reviews_comment LEFT JOIN ch_reviews ON ch_reviews.id=ch_reviews_comments.reviewid LEFT JOIN ch_users ON ch_users.id=ch_reviews_comments.uid ORDER BY lastpost DESC LIMIT 5' );
Når du så laver en $row = mysql_fetch_assoc( $query ), vil brugernavn være i $row['byusername']; Artikel titel i $row['titel'];
Du skal bare ændre "DATO/ELLERIDVÆLGSELV" til navnet på den række med en dato i, eller id rækken, jeg ved ikke hvad du sorterer efter.
Og "reviewid" skal ændres til rækken i ch_reviews_comments som har review id'et :)
Nu får jeg denne fejl Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in index.php on line 110
Når jeg bruger denne kode: <?php
$query = mysql_query( 'SELECT ch_reviews.topic, ch_users.username, AS byusername, ch_users.id AS byuserid, ch_reviews_comments.id AS lastpost FROM ch_reviews_comment LEFT JOIN ch_reviews ON ch_reviews.id=ch_reviews_comments.rid LEFT JOIN ch_users ON ch_users.id=ch_reviews_comments.uid ORDER BY lastpost DESC LIMIT 5' ); while ($row = mysql_fetch_assoc($query)) {
--------------------------------------------------------- Får at hjælpe dig lidt: I ch_reviews skal jeg bruge "id" og "topic" (titlen) I ch_reviews_comments skal jeg bruge "id" "uid" (userid fra ch_users) "rid" (artiklens id, fra ch_reviews) I ch_users skal jeg bruge "id" og "username" (brugernavn) ---------------------------------------------------------
Jeg virker lidt håbløs - men er ikke vant til at kode på den måde, som du åbenbart koder det på - og har aldrig brugt "LEFT JOIN" - kan du evt. også forklare, hvad det er, for så kan jeg selv arbejde med, og se hvad der sker:)
JOIN = Man joiner tabeller. Kan sammenlignes med en subselect. SELECT id FROM tabel WHERE id IN(SELECT id FROM enAndenTabel WHERE etEllerAndet).
Prøv at sætte en or die efter din SQL:
$query = mysql_query( 'SELECT ch_reviews.topic, ch_users.username, AS byusername, ch_users.id AS byuserid, ch_reviews_comments.id AS lastpost FROM ch_reviews_comment LEFT JOIN ch_reviews ON ch_reviews.id=ch_reviews_comments.rid LEFT JOIN ch_users ON ch_users.id=ch_reviews_comments.uid ORDER BY lastpost DESC LIMIT 5' ) or die(mysql_error());
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS byusername, ch_users.id AS byuserid, ch_reviews_comments.id AS lastpost ' at line 1
$query = mysql_query( 'SELECT ch_reviews.topic, ch_users.username AS byusername, ch_users.id AS byuserid, ch_reviews_comments.id AS lastpost FROM ch_reviews_comment LEFT JOIN ch_reviews ON ch_reviews.id=ch_reviews_comments.rid LEFT JOIN ch_users ON ch_users.id=ch_reviews_comments.uid ORDER BY lastpost DESC LIMIT 5' ) or die(mysql_error());
Har hørt den før - men den har aldrig fungeret for mig - og heller ikke nu: echo "<tr class='txt'><td>".$row['byusername']."</td><td>substr($row['topic'], 0, 5 )</td><td><a href='/reviews/".$row['su']."'>Læs mere</a></td></tr>";
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.