user3474238
user3474238

Reputation: 69

PHP Table. Displaying multiple rows into one

Here is my code:

    <table border="2px solid #FFF" width="100%">
            <tr>
                <td width="50%"><Center>Username:</Center><br /></td>
                <td width="50%"><center>Numebr Of Warnings:</center><br /></td>
            </tr>
            </table>
            <?
            $query = mysql_query("SELECT * FROM warnings");
            $numrows = mysql_num_rows($query);
                if($numrows != "0"){
                   while($row = mysql_fetch_assoc($query)){
                        $warned = $row['username'];
                        $by = $row['by'];
                        $sql = mysql_query("SELECT * FROM warnings WHERE username='$warned'");
                        $warns = mysql_num_rows($sql);
                        ?>
                            <table border="2px solid #FFF" width="100%">
                                <tr>
                                    <td width="50%"><center><b><?php echo $warned; ?></b></center></td>
                                    <td width="50%"><center><b><?php echo $warns; ?></center></b></td>
                                </tr>
                            </table>
                        <?php
                   }
                }
                else
                    echo "No Currently Warned Users";
                ?>

            <hr />

And here is the result: enter image description here

How can I make it so that instead of showing the 2 results for the user Mrg..... I just want it to show one result with the number or rows there are.

Help would be appreciated.

Upvotes: 0

Views: 74

Answers (3)

user2585076
user2585076

Reputation:

Here is the table

(by,id,username,date)

a1,1,u1,date

a2,2,u2,date

a3,3,u2,date

a4,4,u2,date

And here is the php code

<?php
$conn = mysqli_connect("localhost","username","password");
mysqli_select_db($conn,"dbname");

$warns = mysqli_query($conn,"select username, count(username) as warncount  from dtest.warnings W group by username");

while($line = mysqli_fetch_array($warns))
{
    echo $line['username']." has ".$line['warncount']. " warns <br/> ";
}
?>

Upvotes: 0

user2585076
user2585076

Reputation:

Change the mysql_fetch_assoc with mysql_feth_array

You're getting the user with double record. Then for each user you are getting 2 lines

The best way to check it is to add pseudo-points to your code.

$query = mysql_query("SELECT * FROM warnings");
$arr=array();
while($row = mysql_fetch_assoc($query))
{
    $arr[]=$row;
}
echo "<pre>";
print_r($arr);    
echo "</pre>";
exit;

Here check if the $arr has double entries. Then change the mysql_fetch_assoc with mysql_fetch_array and try again

Upvotes: 0

John Conde
John Conde

Reputation: 219814

You can use DISTINCT in your query to avoid duplicate rows in your results:

SELECT DISTINCT username, `by` FROM warnings

Upvotes: 1

Related Questions