Avatar billede guldhammer72 Novice
17. marts 2007 - 00:44 Der er 10 kommentarer og
1 løsning

Fejl i kode

Hej jeg har en fejl i denne kode, er der nogen som kan hjælpe med det?


Databasen hedder "mail"
tabellen "mailbox"
og rækken "domain"

<table width="75%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td width="50%">Maildom&aelig;ner.</td>
                            <td width="50%">Antal Mailbokse.</td>
                        </tr>
                        <tr>
                            <td width="50%">Bifmail.dk</td>
                            <td width="50%"><?php
                            /* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='bifmail.dk'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection)
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Cyberguy.dk</td>
                            <td width="50%"><?php
                            /* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='cyberguy.dk'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection)
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Fckmail.dk</td>
                            <td width="50%"><?php
                            /* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='fckmail.dk'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection)
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Guldhammer.info</td>
                            <td width="50%"><?php
/* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='guldhammer.info'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection);
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Krazymail.dk</td>
                            <td width="50%"><?php
/* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='krazymail.dk'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection);
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Obmail.dk</td>
                            <td width="50%"><?php
/* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='obmail.dk'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection);
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Popgirl.dk</td>
                            <td width="50%"><?php
                            /* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='fckmail.dk'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection)
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Smileymail.info</td>
                            <td width="50%"><?php
                            /* Vi connecter til databasen. */
$connection = mysql_pconnect("xxxx", "xxxx", "xxxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='smileymail.info'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection)
?></td>
                        </tr>
                        <tr>
                            <td width="50%">Sportygirl.dk</td>
                            <td width="50%"><?php
                            /* Vi connecter til databasen. */
$connection = mysql_pconnect("xxx", "xxx", "xxx");
mysql_select_db("mail");

/* Vi t?ller antallet af brugere/r?kker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM mailbox WHERE domain='sportygirl.dk'") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/r?kker i en echo */
echo ".mysql_result($antal_online,0).";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection)
?></td>
                        </tr>
                    </table>

Mvh
Guldhammer
Avatar billede guldhammer72 Novice
17. marts 2007 - 00:48 #1
Glemte at linke til siden med eksemplet på
http://www.krazymail.dk/domain_stat.php
Avatar billede coderdk Praktikant
17. marts 2007 - 01:29 #2
Hvad er fejlen?

Din kode er ikke særligt ...effektiv. Du skal ikke lave mysql_pconnect mere end én gang. Og som du bruger den, kunne du lige så godt bruge mysql_connect ;)

Al den kode kan forkortes til næsten igenting:

<?php

$connection = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("mail");

?>
<table width="75%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td width="50%">Maildom&aelig;ner.</td>
                            <td width="50%">Antal Mailbokse.</td>
                        </tr>
<?php

$sql = "SELECT COUNT(*) AS antal, domain FROM mailbox GROUP BY domain ORDER BY domain";
$qh = mysql_query( $sql ) or die( mysql_error() );

while ( $row = mysql_fetch_assoc( $qh ) )
{
    echo '<tr><td>' . $row['domain'] .'</td><td>' . $row['domain'] . '</td></tr>';
}

mysql_free_result( $qh );
mysql_close( $connection );

?>
                        </tr>
                    </table>
Avatar billede erikjacobsen Ekspert
17. marts 2007 - 02:27 #3
coderdk har ganske ret. Men ellers er din fejl at

echo ".mysql_result($antal_online,0).";

skal være

echo mysql_result($antal_online,0);
Avatar billede guldhammer72 Novice
17. marts 2007 - 11:15 #4
men nu skriver den 2 rækker med domæner.
det den skulle gøre i hver række var dette:

f.eks

maildomæner          antal mailbokse
----------------------------------------
krazymail.dk          10
bifmail                8

altså at tælle i rækken domain hvor mange mailbokse der var af med de forskellige domæner.

Men tak, det andet virker bedre end det jeg selv havde lavet
Avatar billede coderdk Praktikant
17. marts 2007 - 14:34 #5
Ah, my bad:

echo '<tr><td>' . $row['domain'] .'</td><td>' . $row['domain'] . '</td></tr>';

skal ændres til:

echo '<tr><td>' . $row['domain'] .'</td><td>' . $row['antal'] . '</td></tr>';

I øvrigt kan du fjerne den sidste </tr> lige før </table> - Den er i overtallig ;)
Avatar billede guldhammer72 Novice
17. marts 2007 - 15:23 #6
Tak, nu virker det.

dog er der i den øverste linie et 1 tal, uden domæne, hvorfor ved jeg ikke
Avatar billede coderdk Praktikant
17. marts 2007 - 15:47 #7
Strange. Måske har du en række i databasen uden domæne? Ellers kan du vel:

while ( $row = mysql_fetch_assoc( $qh ) )
{
    if ( strlen( $row['domain'] ) > 0 )
    {
        echo '<tr><td>' . $row['domain'] .'</td><td>' . $row['domain'] . '</td></tr>';
    }
}

Men hellere finde fejlen i databasen, hvis den er der ;)
Avatar billede guldhammer72 Novice
17. marts 2007 - 15:56 #8
der var en mail uden domæne, hvordan det så er sket.

Kan den sortere efter flest mailbokse?
Avatar billede coderdk Praktikant
17. marts 2007 - 20:51 #9
Ja, ændr "ORDER BY domain" til "ORDER BY antal" :)
Avatar billede guldhammer72 Novice
17. marts 2007 - 22:38 #10
Kan man få den til at tage det største tal først?
http://www.krazymail.dk/dk/domain_stat.php
Avatar billede erikjacobsen Ekspert
17. marts 2007 - 23:05 #11
Ja, ændr "ORDER BY domain" til "ORDER BY antal DESC" :)
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
Computerworld tilbyder specialiserede kurser i database-management

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