İç içe döngüler hep beni karıştırmayın

1 Cevap php

Yani iki sorgulara dayalı başka bir döngü içinde yuvalanmış gereken bir döngü var. Ben çalışan ilk döngü var ince-

$sql_categories = mysql_query("SELECT * FROM $categories_table");

$results = mysql_query("SELECT * FROM $events_table");
    while ($num_rows = mysql_fetch_assoc($sql_categories)) {
        extract($num_rows);
        echo "<h2>$category_name</h2>";
        // Begin second loop to output events
        while/for(not sure) {

    }
}

Ben ikinci döngü içine çıkış istediğiniz tüm $vars için gelen $category_id. İkinci sorguda, eşleşen değeri $event_category_id.

Ben mantıklı olmadığını biliyorum, ama ne almak çalışıyorum temelde yok -

<h2>Category One</h2>
Event Name
Event Name
Event Name

<h2>Category Two</h2>
Event Name
Event Name
Event Name

vb "Olay Adı" "Kategori Adı" na karşılık gelir

Ben çalışıyorum, iki tablo benziyor bu-

CREATE TABLE `wp_wild_dbem_categories` (
  `category_id` int(11) NOT NULL auto_increment,
  `category_name` tinytext NOT NULL,
  PRIMARY KEY  (`category_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

CREATE TABLE `wp_wild_dbem_events` (
  `event_id` mediumint(9) NOT NULL auto_increment,
  `event_author` mediumint(9) default NULL,
  `event_name` tinytext NOT NULL,
  `event_start_time` time NOT NULL default '00:00:00',
  `event_end_time` time NOT NULL default '00:00:00',
  `event_start_date` date NOT NULL default '0000-00-00',
  `event_end_date` date default NULL,
  `event_notes` text,
  `event_rsvp` tinyint(1) NOT NULL default '0',
  `event_seats` tinyint(4) default NULL,
  `event_contactperson_id` mediumint(9) default NULL,
  `location_id` mediumint(9) NOT NULL default '0',
  `recurrence_id` mediumint(9) default NULL,
  `event_category_id` int(11) default NULL,
  UNIQUE KEY `event_id` (`event_id`)
) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=latin1

Yardımlarınız için teşekkürler!

1 Cevap

Herhangi anlamlı bir etkiye sahip ikinci sorguyu bunun için inside while döngüsü yapmanız gerekir:

$sql_categories = mysql_query("SELECT * FROM $categories_table");

while($category = mysql_fetch_assoc($sql_categories)) {    
    extract($category);    
    $events = mysql_query("SELECT * FROM $events_table WHERE event_category_id = '".mysql_real_escape_string($category_id)."'");

    echo "<h2>$category_name</h2>";    
    while($event = mysql_fetch_assoc($events) {
        extract($category);
        echo "<p>$event_name</p>";
    }
}

Bu istediğiniz yere almak, ancak bu şeyler yapmak için en iyi yol değildir dikkat etmelisiniz. Önce döngü içindeyken event_category_id ve döngü bu dizi endeksli onlardan bir dizi oluşturmak, olayları tüm almalısınız. Toplamda sadece iki sorgu yeterli olmalı oysa şimdi her kategori için ekstra bir sorgu yapıyoruz çünkü bu.

Ama belki de bu o başlamak istiyorum.