uranus Skrevet 11. april 2008 Rapporter Del Skrevet 11. april 2008 Hei! Jeg jobber med å lage forum (temmelig enkelt) og skal få til å telle antall tråder + svar som er skrevet av en bruker. function b_svar($b_svar) { $hent_k = "SELECT * FROM forum_question, forum_answer WHERE question_id = id AND a_id = $b_svar AND name = $b_svar"; $resultatet = mysql_query($hent_k); return mysql_num_rows($resultatet); } Den viser antall svar som brukeren har skrevet, men jeg må også telle antall tråder som brukeren har skrevet og det helst under samme query. Noen som kan hjelpe meg? feltet for brukerens ID i forum_question (for tråder) er "name". Feltet for brukerens ID i forum_answer (for svar) er a_id. Håper noen kan hjelpe :=) Lenke til kommentar
Martin A. Skrevet 11. april 2008 Rapporter Del Skrevet 11. april 2008 Lagre heller antall innlegg/tråder som brukeren har skrevet/startet i et eget felt i tabellen for brukere. Øk verdien med 1 når en tråd startes/innlegg skrives. Så kan du eventuelt trekke fra 1 om noe skulle slettes. Lenke til kommentar
uranus Skrevet 11. april 2008 Forfatter Rapporter Del Skrevet 11. april 2008 Nja, har ikke lyst til å gjøre det på den måten. Lenke til kommentar
Martin A. Skrevet 12. april 2008 Rapporter Del Skrevet 12. april 2008 Da gjør du det på din måte. Lenke til kommentar
uranus Skrevet 12. april 2008 Forfatter Rapporter Del Skrevet 12. april 2008 Trenger hjelp folkens. Skal telle antall svar fra en rad og antall tråder fra en rad. Help Lenke til kommentar
JohndoeMAKT Skrevet 12. april 2008 Rapporter Del Skrevet 12. april 2008 Hva er det med PHP-programmerere og spare bytes på å gi ting så korte som mulig navn? a_id, k_svar? Men seriøst.. Hvorfor selecter du stjerne? Skal du vise all informasjon bruker noen gang har skrevet? Er det en god grunn til at du ikke bruker COUNT? Ellers er det hjelpsomt om du legger ut SHOW CREATE TABLE av tabellene om strukturen er kreativ, for å hente antall poster og tråder av en person burde bare være: "SELECT COUNT(*) FROM threads WHERE authorid = $id;"; "SELECT COUNT(*) FROM posts WHERE authorid = $id;"; Lenke til kommentar
uranus Skrevet 12. april 2008 Forfatter Rapporter Del Skrevet 12. april 2008 Ja det skjønner jeg, men så å legge de sammen til et tall? Vet det er et dumt spm, men jeg kommer faktisk ikke på hvordan jeg får det til. Lenke til kommentar
JohndoeMAKT Skrevet 12. april 2008 Rapporter Del Skrevet 12. april 2008 Skal du telle både antall tråder og poster i ett tall? Dersom du bruker query cache er nok det beste å kjøre to queries. Det fordi endringer i én tabell vil (AFAIK) invalidere all cache i operasjonen men om du kjører to spørringer vil fortsatt spørringen mot den andre tabellen returnere cache. Her har jeg skrevet et query som henter begge i ett: SELECT t.count + p.count FROM ( SELECT COUNT(*) AS count FROM threads WHERE authorid = $id ) AS t, ( SELECT COUNT(*) AS count FROM posts WHERE authorid = $id ) AS p; Lenke til kommentar
uranus Skrevet 12. april 2008 Forfatter Rapporter Del Skrevet 12. april 2008 (endret) Greia er at jeg må telle hvor mange rader som er skrevet av en bruker og antall tråder av en bruker, så legge det til som et tall. function b_svar($b_svar) { $hent_k = "SELECT * FROM ( SELECT COUNT(*) AS count FROM forum_question WHERE a_id = $b_svar ) AS t, ( SELECT COUNT(*) AS count FROM forum_answer WHERE name = $b_svar ) AS p;"; $resultatet = mysql_query($hent_k); return mysql_num_rows($resultatet); } Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/12/w74700/tgatebil/forum/view_topic.php on line 47 0 innlegg. Får jeg Endret 12. april 2008 av uranus Lenke til kommentar
JohndoeMAKT Skrevet 12. april 2008 Rapporter Del Skrevet 12. april 2008 (endret) Mener du poster som er skrevet og ikke rader ? I så fall er du vel i mål med det jeg har skrevet? EDIT: Du har ikke kopiert mitt query 100%. Endret 13. april 2008 av JohndoeMAKT Lenke til kommentar
uranus Skrevet 13. april 2008 Forfatter Rapporter Del Skrevet 13. april 2008 (endret) Den er jo helt lik bare jeg har endra til navnene jeg har. Poster som er skrevet ja. Svar/tråder. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/12/w74700/tgatebil/forum/view_topic.php on line 47 0 innlegg. Får det. function b_svar($b_svar) { $hent_k = "SELECT t.count + p.count FROM ( SELECT COUNT(*) AS count FROM forum_question WHERE a_id = $b_svar ) AS t, ( SELECT COUNT(*) AS count FROM forum_answer WHERE name = $b_svar ) AS p;"; $resultatet = mysql_query($hent_k); return mysql_num_rows($resultatet); } Endret 13. april 2008 av uranus Lenke til kommentar
JohndoeMAKT Skrevet 13. april 2008 Rapporter Del Skrevet 13. april 2008 (endret) Forige post er ikke helt lik nei, du har SELECT *, jeg har SELECT t.count + p.count. For det første skal du ikke bruke mysql_num_rows når du bruker COUNT. Om du omskriver litt til: SELECT t.count + p.count AS sum Skal du ta noe som ligner på : $noe = mysql_fetch_assoc( mysql_query( $sql ) ); return $noe['sum']; Men det virker som om du bør ta en die( mysql_error() ); etter at du har kjørt mysql_query(); Kan det være at du ikke bruker tall som brukerId? Om den er string må du legge fnutter til i queryet. Endret 13. april 2008 av JohndoeMAKT Lenke til kommentar
uranus Skrevet 13. april 2008 Forfatter Rapporter Del Skrevet 13. april 2008 Nå har jeg falt helt ut. Er kun tall. Lenke til kommentar
JohndoeMAKT Skrevet 13. april 2008 Rapporter Del Skrevet 13. april 2008 (endret) function b_svar($b_svar) { $hent_k = "SELECT t.count + p.count AS sum FROM ( SELECT COUNT(*) AS count FROM forum_question WHERE a_id = $b_svar ) AS t, ( SELECT COUNT(*) AS count FROM forum_answer WHERE name = $b_svar ) AS p;"; $resultatet = mysql_query($hent_k); die( mysql_error() ); return mysql_num_rows($resultatet); } Arg, det er vanskelig å kode direkte i forumet, trykker tab, space hele tiden. EDIT: Du burde også skrive SQL-queries direkte i en konsoll eller noe lignende til du vet den fungerer. F.eks mysql -u katt -p fra shell eller phpmyadmin. I phpmyadmin velger du database og skriver query i fane for "SQL" og i konsoll skriver du: show databases; use rett_database; SELECT t.count + p.count AS sum FROM ( SELECT COUNT(*) AS count FROM forum_question WHERE a_id = 1 ) AS t, ( SELECT COUNT(*) AS count FROM forum_answer WHERE name = 1 ) AS p; Hvor du bytter ut 1 med ID til en bruker du vet eksisterer. For å finne en bruker du vet eksisterer kan du ta : SELECT * FROM users LIMIT 1; Endret 13. april 2008 av JohndoeMAKT Lenke til kommentar
uranus Skrevet 13. april 2008 Forfatter Rapporter Del Skrevet 13. april 2008 Får 1 innlegg på hvert eneste bruker. Stemmer ikke. <?php function b_svar($b_svar) { $hent_k = "SELECT t.count + p.count AS sum FROM ( SELECT COUNT(*) AS count FROM forum_question WHERE name = $b_svar ) AS t, ( SELECT COUNT(*) AS count FROM forum_answer WHERE a_id = $b_svar ) AS p;"; $resultatet = mysql_query($hent_k); return mysql_num_rows($resultatet); } ?> Lenke til kommentar
JohndoeMAKT Skrevet 13. april 2008 Rapporter Del Skrevet 13. april 2008 (endret) Det er fordi du fortsatt bruker mysql_num_rows. Det er ganske festlig hvor elendig jeg er på å forklare, jeg tar all forvirring på min kappe. Her er forhåpentligvis siste forsøk fra meg: <?php function b_svar($b_svar) { $hent_k = "SELECT t.count + p.count AS sum FROM ( SELECT COUNT(*) AS count FROM forum_question WHERE name = $b_svar ) AS t, ( SELECT COUNT(*) AS count FROM forum_answer WHERE a_id = $b_svar ) AS p;"; $noe = mysql_fetch_assoc( mysql_query( $hent_k ) ); return $noe['sum']; } ?> Endret 13. april 2008 av JohndoeMAKT Lenke til kommentar
uranus Skrevet 13. april 2008 Forfatter Rapporter Del Skrevet 13. april 2008 Se der ja, tusen takk for hjelpa det funka kjempe http://tgatebil.no/index.php?s=forum/forside Lenke til kommentar
JohndoeMAKT Skrevet 13. april 2008 Rapporter Del Skrevet 13. april 2008 Image Resize-javascriptet ditt bugger kraftig i Opera. "Sending request to images.wind..." på nytt og på nytt i M3 carspotting-tråden. Lenke til kommentar
uranus Skrevet 13. april 2008 Forfatter Rapporter Del Skrevet 13. april 2008 (endret) Nei vent nå litt. Den er ikke helt riktig, den teller en for lite. F.eks de som har bare skrevet 1 innlegg, står det 0. Og på meg står det 5, mens jeg har skrevet 6. Kan vel bare legge til + 1 da, men blir ikke helt riktig. Ja jeg vet, men ikke mye jeg kan gjøre med det. Endret 13. april 2008 av uranus Lenke til kommentar
JohndoeMAKT Skrevet 13. april 2008 Rapporter Del Skrevet 13. april 2008 Det er ingenting i veien med spørringen som jeg kan se, så da er nok problemet enten i datasettet ditt eller databasestrukturen. I en konsole eller phpmyadmin kan du kjøre disse og se hva du egentlig teller : "SELECT * FROM forum_question WHERE name = 1;"; "SELECT * FROM forum_answer WHERE a_id = 1;"; 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å