0

I have a webpage that builds an html table if there is any data in a mySQL table. That works fine, the html table is populated with data from the mySQL table. My problem is when there is data it populates the html table but lists the first mySQL table entry twice in the html table. I do not have any idea why this happens.

Here's the relevant code:

$PNDG_USRS_S1 = mysql_query("SELECT * FROM `sql_table`");
$PNDG_USRS = mysql_fetch_assoc($PNDG_USRS_S1);
if (mysql_num_rows($PNDG_USRS_S1 = mysql_query("SELECT * FROM `sql_table`")) > 0) {
?>
<table id="table">
<tr>
<td class='block_title'>
Name
</td>
<td class='block_title'>
Email
</td>
<td class='block_title'>
Grade
</td>
<td class='block_title'>
Gender
</td>
<td class='block_title'>
Birthday
</td>
<td class='block_title'>
Accept?
</td>
</tr>
<?php
 do { 
 ?>
 <tr>
 <td>
 <?php echo $PNDG_USRS['Name']; ?>
 </td>
 <td>
 <?php echo $PNDG_USRS['email']; ?>
 </td>
 <td>
 <?php echo $PNDG_USRS['grade']; ?>
 </td>
 <td>
 <?php echo $PNDG_USRS['Gender']; ?>
 </td>
 <td>
 <?php if ($PNDG_USRS['birthdate'] == "0000-00-00") {echo "N/A";}else{echo $PNDG_USRS['birthdate'];}; ?>
 </td>
 <td>
 <a href='<?php echo $_SESSION['RP'], "/admin/?state=USR_VRFY&usr_id=", $PNDG_USRS['ID']; ?>' onclick="return confirm('Are you sure you want to verify the user <?php echo $PNDG_USRS['Name']; ?> and make them an active user?');">Verify User?</a>
 </td>
 </tr>
 <?php
 } while ($PNDG_USRS = mysql_fetch_assoc($PNDG_USRS_S1));
?>
 </table>
 <?php
} else {
?>
<center>
<div id='MSG'>
No users pending approval
</div>
</center>
<?php
};
};
};

The page is designed to list all new users on a website. An administrator or moderator must confirm each user before they have access, that's what this page will be used for.

Thanks in advanced! The new school year is starting and we will have a large number of new users soon so I'd like to have this form working soon. Again, thanks!

Edited by Zexsz: n/a

2
Contributors
2
Replies
3
Views
6 Years
Discussion Span
Last Post by Zexsz
1
$PNDG_USRS_S1 = mysql_query("SELECT * FROM `sql_table`");
$PNDG_USRS = mysql_fetch_assoc($PNDG_USRS_S1);
if (mysql_num_rows($PNDG_USRS_S1 = mysql_query("SELECT * FROM `sql_table`")) > 0) {

That makes little sense to me.

We usually avoid a 'do-while' loop, opting for a standard 'while' instead.

Only make one query.

1. Make the query
2. check number of rows (your syntax is wrong I think)
3. Add html table and headers if more than 0 rows
4. Loop using standard 'while', adding rows to the html table
5. Add html table end if rows more than 0 rows

That should make life a lot easier for you.

Votes + Comments
Did not seem to full understand posted code.
0
$PNDG_USRS_S1 = mysql_query("SELECT * FROM `sql_table`");
$PNDG_USRS = mysql_fetch_assoc($PNDG_USRS_S1);
if (mysql_num_rows($PNDG_USRS_S1 = mysql_query("SELECT * FROM `sql_table`")) > 0) {

That makes little sense to me.

We usually avoid a 'do-while' loop, opting for a standard 'while' instead.

Only make one query.

1. Make the query
2. check number of rows (your syntax is wrong I think)
3. Add html table and headers if more than 0 rows
4. Loop using standard 'while', adding rows to the html table
5. Add html table end if rows more than 0 rows

That should make life a lot easier for you.

I see where your going with it. I changed the Do while statement to while like you suggested and re wrote the mysql_ statement. I'm still not sure what was wrong with it, however it does work now. Thank you.

For reference of anyone else with a similar problem(no matter if I just made a stupid mistake or not), here's the code I changed.

The updated mySQL calls:

$PNDG_USRS_S1 = mysql_query("SELECT * FROM `sql_table`");
$PNDG_USRS_S2 = mysql_num_rows($PNDG_USRS_S1);
if ($PNDG_USRS_S2 > 0) {

and the new while function:

while ($PNDG_USRS = mysql_fetch_assoc($PNDG_USRS_S1)):
 ?>
 <tr>
 <td>
 <?php echo $PNDG_USRS['Name']; ?>
 </td>
 <td>
 <?php echo $PNDG_USRS['email']; ?>
 </td>
 <td>
 <?php echo $PNDG_USRS['grade']; ?>
 </td>
 <td>
 <?php echo $PNDG_USRS['Gender']; ?>
 </td>
 <td>
 <?php if ($PNDG_USRS['birthdate'] == "0000-00-00") {echo "N/A";}else{echo $PNDG_USRS['birthdate'];}; ?>
 </td>
 <td>
 <a href='<?php echo $_SESSION['RP'], "/admin/?state=USR_VRFY&usr_id=", $PNDG_USRS['ID']; ?>' onclick="return confirm('Are you sure you want to verify the user <?php echo $PNDG_USRS['Name']; ?> and make them an active user?');">Verify User?</a>
 </td>
 </tr>
 <?php
endwhile;

Edited by Zexsz: confidential information shared.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.