Enjoy unlimited access to all forum features for FREE! Optional upgrade available for extra perks.
NDD Camp 2024

php mysql loop question

Status
Not open for further replies.

mgstudent

Level 5
Legacy Platinum Member
Joined
Sep 22, 2006
Messages
295
Reaction score
2
Can anyone help? I have a mysql table with the following information:

ID Name Chapter Description
1 uniqueName1 Ch1 Name uniqueDescription1
2 uniqueName2 Ch1 Name uniqueDescription2
3 uniqueName3 Ch1 Name uniqueDescription3
4 uniqueName4 Ch2 Name uniqueDescription4
5 uniqueName5 Ch2 Name uniqueDescription5
6 uniqueName6 Ch3 Name uniqueDescription6
7 uniqueName7 Ch3 Name uniqueDescription7


I have some php loop code which echos the rows in the following format:


1 - uniqueName1 - uniqueDescription1

2 - uniqueName2 - uniqueDescription2

3 - uniqueName3 - uniqueDescription3

4 - uniqueName4 - uniqueDescription4

5 - uniqueName5 - uniqueDescription5

6 - uniqueName6 - uniqueDescription6

7 - uniqueName7 - uniqueDescription7


What I would like to do is to get the Chapter Name above the lines with the same chapter. But not above every line. See below:


Ch1 Name

1 - uniqueName1 - uniqueDescription1

2 - uniqueName2 - uniqueDescription2

3 - uniqueName3 - uniqueDescription3

Ch2 Name

4 - uniqueName4 - uniqueDescription4

5 - uniqueName5 - uniqueDescription5

Ch3 Name

6 - uniqueName6 - uniqueDescription6

7 - uniqueName7 - uniqueDescription7


Do you know how I could edit my loop below:



$query = "SELECT * FROM tbl order by ID ASC";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo "<br />";
echo $row['id'];
echo " - ";
echo $row['Name'];
echo " - ";
echo $row['Description'];
echo "<br />";
}
 

dncsacnt

Level 4
Legacy Platinum Member
Joined
Jun 20, 2007
Messages
161
Reaction score
0
You'll need an extra field for chapter in database, then use a if else within the loop
 

mgstudent

Level 5
Legacy Platinum Member
Joined
Sep 22, 2006
Messages
295
Reaction score
2
You'll need an extra field for chapter in database, then use a if else within the loop

Thanks for your reply dnc. I already have that field in the table (in the database) as shown in the first quote box in my first post.

My problem is that I only want the chapter name to be echoed once above the corresponding lines (but importantly not above each line). That's where I'm having some trouble.

As shown ID 1-3 are all part of chapter1, ID 4-5 are chapter2, ID 6-7 are chapter3 - so in this batch of rows I'd only need 3 chapter headings.

Could you give me an example of an if else which could work to echo the chapter name only once for each group that chapter name?

Many thanks.
 

Bob

Jedi Master
Joined
Apr 8, 2002
Messages
3,102
Reaction score
29
Try this:


Code:
 $query = "SELECT * FROM tbl order by ID ASC";
$result = mysql_query($query) or die(mysql_error());

$currentChapter = '';  // added line

while($row = mysql_fetch_array($result)) {

if($currentChapter!=$row['Chapter']) {echo "<b><font color='red'>".$row['Chapter']."</font></b><br>";} // added line
$currentChapter=$row['Chapter'];   // added line

echo "<br />";
echo $row['id'];
echo " - ";
echo $row['Name'];
echo " - ";
echo $row['Description'];
echo "<br />";
}
 

mgstudent

Level 5
Legacy Platinum Member
Joined
Sep 22, 2006
Messages
295
Reaction score
2
Bob - I owe you.

Your method was a really smart solution and I'm grateful for your help. If our paths cross in future and I can help you in some way let me know (you have saved me many hours!)

Thanks again.
 

Bob

Jedi Master
Joined
Apr 8, 2002
Messages
3,102
Reaction score
29
Welcome.

When and if we ever cross path, you can buy me a free glass of water.

-Bob
 
Status
Not open for further replies.

The Rule #1

Do not insult any other member. Be polite and do business. Thank you!

Sedo - it.com Premiums

IT.com

Premium Members

AucDom
UKBackorder
Be a Squirrel
MariaBuy

New Threads

Our Mods' Businesses

UrlPick.com
URL Shortener

*the exceptional businesses of our esteemed moderators

Top Bottom