Page 1 of 1

Links to sort fetched mysql data

Posted: Tue Sep 08, 2009 12:38 am
by cantiquo
Hello Everyone,

I am making a long list of artists.
I generated the Alphabet, with links (A, B, C, D etc). so the people can easily find them by their last name. When I click on the letters I am getting the results ok but also the first person even when I click Z, or even when there are no artists in that letter. Could you help to do this better? also, how can I add a "No artists found" when I have no info in that letter?

I would appreciate any help. Thanks in advance!!!

Leon


Here's my code:

Code: Select all

 
<?php
// Here is where I generate the Alphabet, with links that ends in ?letter=
for ($i=65;$i<=90; ) {
$x = chr($i);
echo '<a href="'.$_SERVER["PHP_SELF"].'?letter='.$x.'">'.$x.'</a> '."\n";
}
 
// This is where i get the letter from the URL
$letter = $_GET['letter'];
 
// This should load the page showing only the artists with the letters clicked
$rsArtistsmaster = mysql_query("SELECT * FROM artists WHERE lname LIKE '$letter%'") 
or die(mysql_error());
?>
 

Code: Select all

 
<table border="0" align="center" cellpadding="5"><tr>
<th>Artists</th>
</tr>
<?php do { ?>
<tr>
<td><a href="singersinthenews.php?recordID=<?php echo $row_rsArtistsmaster['id']; ?>"> <?php echo $row_rsArtistsmaster['lname']; ?>, <?php echo $row_rsArtistsmaster['fname']; ?>&nbsp; 
<em><?php echo $row_rsArtistsmaster['voice']; ?></em>&nbsp; </a></td>
</tr>
<?php } while ($row_rsArtistsmaster = mysql_fetch_assoc($rsArtistsmaster)); 
?>
</table>

Re: Links to sort fetched mysql data

Posted: Tue Sep 08, 2009 12:51 am
by VladSun
I couldn't understand clearly your question, but you need a "while-do", not a "do-while" loop for iterating the DB result.


Please, use [ php ] [ /php ] (without spaces) BB code tags to hilight your PHP code.

Re: Links to sort fetched mysql data

Posted: Thu Sep 10, 2009 4:53 am
by cantiquo
Hello VladSun,

Thanks for your reply. So far this is my code! Here is the page that I am trying to fix: http://raincolor.com/singersmaster.php

What I am trying to get is to display all the names since the beginning and then display by letter (A, B, C etc, any name that is under that letter) I don't know how to add NO RESULT FOUND when I have no info in that letter.

Thanks!!

Code: Select all

 
// SELECT BY LETTER CODE MYSQL
// Here is where I generate the Alphabet, with links that ends in ?letter=
for ($i=65;$i<=90;$i++) {
    $x = chr($i);
    echo '<a href="'.$_SERVER["PHP_SELF"].'?letter='.$x.'">'.$x.'</a> '."\n";
}
 
// This is where i get the letter from the URL
$letter = $_GET['letter'];
 
 
// This should load a page showing only the artists with the letters clicked
$rsArtistsmaster = mysql_query("SELECT id, lname, fname, voice
FROM artists 
WHERE left(lname,1) = '$letter'
ORDER BY lname ASC , fname ASC;");
 
 
 
$rsArtistMasterCount = mysql_query("SELECT count
FROM artists 
WHERE left(lname,1) = '$letter'
ORDER BY lname ASC , fname ASC;");
 
 
      
?>

Code: Select all

<p><?php echo $totalRows_rsArtistsmaster ?> Artists Total</p>
    <p><?php echo $rsArtistMasterCount = mysql_num_rows($rsArtistsmaster); ?> Artists Selected</p>


Code: Select all

 
<br />
<a href="/singersmaster.php"><em>Show all Artists</em></a><br />
<table border="0" align="center" cellpadding="5">
      <tr>
        <th>Artists</th>
      
      </tr>
      <?php while ($row_rsArtistsmaster = mysql_fetch_assoc($rsArtistsmaster)) 
{ ; 
?>
 
<tr>
   <td><a href="singersinthenews.php?recordID=<?php echo $row_rsArtistsmaster['id']; ?>">
                                              <?php echo $row_rsArtistsmaster['lname']; ?>, 
                                              <?php echo $row_rsArtistsmaster['fname']; ?>&nbsp;<em>
                                              <?php echo $row_rsArtistsmaster['voice']; ?></em>&nbsp; </a></td>
</tr>
<?php } ?>
  
 
 
    </table>