Avatar billede jan2001 Nybegynder
01. januar 2008 - 12:11 Der er 10 kommentarer og
1 løsning

Tælle rækker i database

Jeg har følgende kode:

$query = "SELECT FROM plader";
$this->db->doQuery( $query );
           
$pladetitler = array( );
while( $pladetitel = $this->db->nextAssoc( ) )
$pladetitler[$pladetitel['id']] = $pladetitel['navn'];
       
VisSide( $pladetitler );

function VisSide( $pladetitler )
{
................ noget HTML

$result = mysql_query("SELECT * FROM musiktitler");
           
while( list( $key,$value ) = each( $pladetitler ) )
   
        $num_songs = mysql_num_rows($result=$value);

<a href='page?quiz=$key'>$value,($num_songs)</a>\n";
}

Det jeg forsøger i næstsidste linie(den indrykkede), er at tælle antal rækker, i $result som indeholder værdien af $value. Men det vil den ikke accepterer. Hvordan gøres dette?
Avatar billede jakobdo Ekspert
01. januar 2008 - 12:18 #1
Du skal smide en WHERE ind i din SQL her:

$result = mysql_query("SELECT * FROM musiktitler WHERE et_eller_andet = $value");
Avatar billede martinbk Nybegynder
01. januar 2008 - 12:32 #2
som jakob siger skal du lave dine conditional statements i SQL, mysql_num_rows tager kun en enkelt parameter, nemlig et mysql result set, den kan ikke evaulere på det.

$num_songs = mysql_result(mysql_query("SELECT COUNT(*) FROM musiktitler WHERE column_name = $value"), 0);
Avatar billede jan2001 Nybegynder
01. januar 2008 - 13:33 #3
Det vil jo så kræve at jeg putter SQL-sætningen ind i løkken. Vil det ikke belaste databaseserveren?
Avatar billede jakobdo Ekspert
01. januar 2008 - 14:03 #4
Jo, det vil det muligvis, men ellers må du jo lave udtækket på en anden måde eller arbejde med nogle arrays.
Avatar billede jan2001 Nybegynder
01. januar 2008 - 14:32 #5
vil det være muligt at gennemløbe $pladetitler og sorterer det ud i nye arrays? hvis ja, hvordan får jeg fat i $value
Avatar billede jakobdo Ekspert
01. januar 2008 - 14:40 #6
Tror du skal vise hvad du har og hvilket resultat du ønsker at ende op med.
Avatar billede dkfire Nybegynder
02. januar 2008 - 13:26 #7
Hvis du gerne vil have antallet af sange som er tilknyttet hver plade, kan du jo lade mysql tælle sammen på baggrund af pladetitler, således at du får ud antallet af sange for de enkelte pladetitler.
Det kunne gøres med noget ala:
"SELECT pladetitel, count(sang) as antalsange FROM musiktitler GROUP BY pladetitel"

Men efter som jeg ikke lige kan se hvordan din musiktitler tabel er opbygget har jeg gættet mig frem til mulige feltnavne.
Avatar billede jan2001 Nybegynder
02. januar 2008 - 18:08 #8
Forstår ikke helt den der AS. Men hvordan gennemløber jeg så

$result = mysql_query("SELECT pladetitel, count(sang) as antalsange FROM musiktitler GROUP BY pladetitel");

Så jeg får udskrevet antallet for hver enkelt pladetitel. Jeg kan jo ikke bare skrive ehco $result['antalsange']; i min while løkke?
Avatar billede dkfire Nybegynder
02. januar 2008 - 18:26 #9
Det gør du som man normalt gør, med brug af mysql_fetch_array(), mysql_fetch_assoc() eller mysql_fetch_object()
Se evt. her http://dk.php.net/manual/en/function.mysql-fetch-assoc.php
Avatar billede jan2001 Nybegynder
14. januar 2008 - 00:35 #10
Jeg fik det da til at virke. Læg et svar dkfire,
Avatar billede dkfire Nybegynder
14. januar 2008 - 12:21 #11
svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester