У меня есть карта сайта, созданная с помощью PHP и фактически вызывающая только розничные продавцы таблицы, как показано ниже:
$query = "select * from retailers WHERE status='active' ORDER BY added DESC";
и построить как:
while ($row = mysql_fetch_array($result)) { $i_url = SITE_URL.'loja/'.$row['slug_title']; $year = substr($row['added'],0,4); $month = substr($row['added'],5,2); $day = substr($row['added'],8,2); $i_date = ''.$year.'-'.$month.'-'.$day.''; // you can assign whatever changefreq and priority you like // changefreg - optional // priority - optional echo ' <url> <loc>'.$i_url.'</loc> <lastmod>'.$i_date.'</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> '; }
Проблема в том, что только в магазинах розничной торговли придет время, мне нужно получить еще 3 таблицы, но я не могу думать о способе вызвать и построить больше вещей внутри этого, возможно, условия PHP?
Спасибо всем за ваше время!
Я предлагаю вам создать функцию для обработки запросов или подзапросов, которые вам нужны
Как основной код
while ($row = mysql_fetch_array($result)) { $i_url = SITE_URL.'loja/'.$row['slug_title']; $year = substr($row['added'],0,4); $month = substr($row['added'],5,2); $day = substr($row['added'],8,2); $i_date = ''.$year.'-'.$month.'-'.$day.''; $data = subquery('what i need here', 'another param'); echo ' <url> <loc>'.$i_url.'</loc> <lastmod>'.$i_date.'</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> '; } function subquery($firstparam, $secondparam) { $myquery = "SELECT * FROM ".$firstparam; //more code $result = 'my query result'; return $result; }
С помощью этого вы можете вызвать подзапрос, основанный на основном запросе, вы можете создать больше funcionts или создать только один с различными типами, которые могут выполнять разные запросы в одной функции.
Поскольку все таблицы имеют одинаковые поля ( slug_name
и added
), мы можем просто slug_name
каждую таблицу с той же процедурой, а затем вывести файл sitemap.xml.
// Our Echo Buffer $buffer = array(); // Table Names $tables = array( 'retailers', 'table2', 'table3', 'table4' ); // Using MySQLi, cause it's Improved. $conn = new MySqli( 'localhost', 'user', 'pass', 'database' ); // Iterate over $tables foreach( $tables as $table ) { // Build Query $query = "SELECT `slug_name`, `added` FROM $table" . " WHERE status='active' ORDER BY added DESC"; // Get Result $result = $conn->mysqli_query( $query ); // Iterate over Result while( $row = $result->fetch_assoc() ) { // Chop up the Date $date = substr($row['added'],0,4) . '-' . substr($row['added'],5,2) . '-' . substr($row['added'],8,2); // Add page details to $buffer $buffer[] = '<url>' . '<loc>' . SITE_URL . 'loja/' . $row['slug_title'] . '</loc>' . '<lastmod>' . $date . '</lastmod>' . '<changefreq>daily</changefreq>' . '<priority>0.8</priority>' . '</url>'; } // Free MySQLi Result $result->close(); } // Output the Buffer to view. Make sure it looks good. echo implode( "\r\n", $buffer ); // Remove the echo above and uncomment below if it looks good. // if( ( $xml = fopen( 'sitemap.xml', "w" ) ) !== FALSE ) // { // fwrite( $xml, implode( "\r\n", $buffer ) ); // }