Solved

nesting do while loops php/mysql

Posted on 2010-08-27
5
505 Views
Last Modified: 2013-12-13
Hi,
I have a page that I want to show archive documents I want it so that I have dates in asending order and underneath the date I want the documents to be listed

so the page will have

2009
 1) document 1
 2) document 2

2008
 1) document 1
 2) document 2


 This is what I have at the moment. Dreamweaver wont allow me to nest the while loop

Is there an easier way of doing it?
 
mysql_select_db($database_db, $db);
$query_enable_login = "SELECT disable_login FROM season";
$enable_login = mysql_query($query_enable_login, $db) or die(mysql_error());
$row_enable_login = mysql_fetch_assoc($enable_login);
$totalRows_enable_login = mysql_num_rows($enable_login);

mysql_select_db($database_db, $db);
$query_archives = "SELECT `year` FROM archive ORDER BY `year` ASC";
$archives = mysql_query($query_archives, $db) or die(mysql_error());
$row_archives = mysql_fetch_assoc($archives);
$totalRows_archives = mysql_num_rows($archives);

  <h2><?php echo $row_archives['year']; ?></h2>
        <?php do { ?>
          <hr />
            <a href="archives/<?php echo $row_archive_item['file']; ?>"><?php echo $row_archive_item['archive_title']; ?></a>
            <hr />
          <?php } while ($row_archive_item = mysql_fetch_assoc($archive_item)); ?>
        </p>

Open in new window

0
Comment
Question by:cataleptic_state
5 Comments
 
LVL 10

Expert Comment

by:honestman31
ID: 33543411
is that ok to go with the for loop ? or foreach  loop ?
0
 
LVL 70

Expert Comment

by:Jason C. Levine
ID: 33543921
Hi cataleptic_state,

There is an easier way to do the loop using this behavior:

http://www.tom-muck.com/extensions/help/simulatednestedregion/

1. Download and install it

2. Create your repeat region so that everything is inside the loop:


        <?php do { ?>
<h2><?php echo $row_archives['year']; ?></h2>
          <hr />
            <a href="archives/<?php echo $row_archive_item['file']; ?>"><?php echo $row_archive_item['archive_title']; ?></a>
            <hr />
          <?php } while ($row_archive_item = mysql_fetch_assoc($archive_item)); ?>
     
3. Highlight the element that should only repeat once:

<h2><?php echo $row_archives['year']; ?></h2>

4. Apply the Simulated Nested Repeat Region from the Server Behaviors Panel

5. Drink Beer.

0
 
LVL 82

Expert Comment

by:Dave Baldwin
ID: 33544046
Looks to me like you're trying to use "$row_archive_item[]" before you have fetched it with "$row_archive_item = mysql_fetch_assoc($archive_item)".  In addition, "$archive_item" is not defined anywhere.
0
 
LVL 4

Author Comment

by:cataleptic_state
ID: 33546715
Hi DaveBaldwin,
The archive_items is another recordset, it is there, just forgot to add it to EE code window.

I will give those examples a try thank you all.
0
 
LVL 82

Accepted Solution

by:
Dave Baldwin earned 500 total points
ID: 33546801
This is what I did on a similar problem.  You only have to do one query instead of two.
<?php 
mysql_select_db($database_db, $db);
$query_archives = "SELECT * FROM archive ORDER BY `year` ASC";
$archives = mysql_query($query_archives, $db) or die(mysql_error());
$totalRows_archives = mysql_num_rows($archives);

$current = "";

while ($row_archives = mysql_fetch_array($archives)){
	if($current != $row['year']) {
		$current = $row['year'];
		echo "<h2>$current</h2><hr />";
		} ?>
	<a href="archives/<?php echo $row_archives['file']; ?>"><?php echo $row_archives['archive_title']; ?></a>
<?php 
	}
 ?>

Open in new window

0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Introduction Since I wrote the original article about Handling Date and Time in PHP and MySQL (http://www.experts-exchange.com/articles/201/Handling-Date-and-Time-in-PHP-and-MySQL.html) several years ago, it seemed like now was a good time to updat…
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to count occurrences of each item in an array.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now