Gå til innhold

Hjelp med å telle ant. svar + tråder


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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 av uranus
Lenke til kommentar

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 av uranus
Lenke til kommentar

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 av JohndoeMAKT
Lenke til kommentar

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 av JohndoeMAKT
Lenke til kommentar

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

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 av JohndoeMAKT
Lenke til kommentar

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 av uranus
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...