ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Не поможете сформировать запрос SELECT в БД?

 

284
arteshuk @arteshuk
Я сразу прошу прощения, php только начинаю познавать.....(и рву волосы на жопе голове, что не начал это делать 10 лет назад....

имеем таблицу в БД, пусть table

есть столбцы id и email

как сформировать запрос: если id=N и email=mail@mail.ru то делаем некое действие?

возможно я вообще хрень написал, тогда читаем первую строчку 😀

1130
Александр @WestSide
<?php
$query = mysql_query("SELECT `id`, `email` FROM `table`");
$row = mysql_fetch_assoc($query);

if($row['id'] == 'N' AND $row['email']='mail@mail.ru '){
//выполняем действие
}
?>

284
arteshuk @arteshuk
огромное спасибо, попробую, о результатах доложу 😀

20090
Dimitry @Dimitry
такой запрос перебирает все адреса в базе, что обычно не рекомендуется, обычно такое для проведения рассылок по всей базе 😀

284
arteshuk @arteshuk
Дмитрий, а как надо написать?

1130
Александр @WestSide
Dimitry пишет:

такой запрос перебирает все адреса в базе, что обычно не рекомендуется, обычно такое для проведения рассылок по всей базе 😀

ты хочешь сказать, что нужно использовать условия прямо в SQL запросе? (SELECT `id`, `email` FROM `table` WHERE IF(условие) ...) ?
Но тебе известно, что это очень сильно нагружает сервер? Даже при 200-300 записях в БД, сервер просто будет лежать...

20090
Dimitry @Dimitry
WestSide пишет:

Dimitry пишет:

такой запрос перебирает все адреса в базе, что обычно не рекомендуется, обычно такое для проведения рассылок по всей базе 😀

ты хочешь сказать, что нужно использовать условия прямо в SQL запросе? (SELECT `id`, `email` FROM `table` WHERE IF(условие) ...) ?
Но тебе известно, что это очень сильно нагружает сервер? Даже при 200-300 записях в БД, сервер просто будет лежать...

зависит от того что нужно вообще сделать, конечно же пхп код сувать в запрос не стоит 😉

6600
Александр @admiral
Неплохие ********** )
А вообще да, смотря для чего нужно и какая структура базы еще, отсюда и какой запрос оптимальней будет

3173
Николай @grom
sql.add('Select 1, 2, 3 from tab where mail>'''); 😀

284
arteshuk @arteshuk
Вот такую задачу помогите решить, кому не лень 😀

есть 2 таблицы: в одной есть слолбец ID, в другом PID

PID имеет одно из значений ID и в зависимости от этого, когда ID=PID выводит все что удовлетворяет этому условию.


function pub_show_partitions($items_pagename='')
{
global $kernel;

$template = $kernel->pub_modul_properties_get('template');
if ($template['isset'] == 1)
$this->parse_template($template['value']);
else
return '[#faq_modul_errore1#]';

$page = $items_pagename;
if (empty($page))
$page = $kernel->pub_page_current_get();

//$page .= '.html';

// Данные из MySQL о категриях
$sql = "SELECT id, name FROM `".PREFIX."_faq_partitions`";
$result = $kernel->runSQL($sql);

[b]Выше запрос в первую таблицу[/b]
[i][b]Вот сюда надо добавить другой запрос, во вторую таблицу[/b][/i]

// Формирование контента
$lines = '';
while ($data = mysql_fetch_assoc($result))
{
$link = $page.'.html?a=2&b='.$data['id'];
$line = $this->template_array['partition_list_line'];
$line = str_replace("%name%",$data['name'],$line);
$line = str_replace("%link%", $link, $line);
[b]$line = str_replace("%count%", count($???????), $line);[/b]
[b]для того что бы в этой строчке вывести кол-во ID=PID[/b]
$lines .= $line;
}

$html = $this->template_array['partition_list_begin'];
$html .= $lines;
$html .= $this->template_array['partition_list_end'];

return $html;
}

говоря простым языком, данные кусок кода выводит список разделов "ФАКа". Это кусок модуля CMS.

надо что бы рядом, по метке %count% в шаблоне выводилось количество вопросов в той или иной категории.

в административном интерфейсе это выводится, сделано вот так (строчку сместил влево):

function priv_create_list_partition()
{
global $kernel;

$get_values = $kernel->pub_httpget_get();

// Предустановки
$template = $kernel->pub_template_parse('modules/faq/templates_admin/form_admin_table.html');
$list_table = $template["table"];
$list_table_row = $template["row"];
$list_table_subrow = $template["subrow"];

if (!isset($get_values['id']))
$get_values['id'] = 0;

$id = stripcslashes($get_values['id']);

// Получаем из MySQL перечень разделов
$sql = "SELECT id, name FROM `".PREFIX."_faq_partitions` ";
$result = $kernel->runSQL($sql);
unset($sql);

// Количество разделов:
$faq_partitions_count = mysql_num_rows($result);

// Подготавливаем массив с разделами
while ($data = mysql_fetch_assoc($result))
$faq[] = $data;

mysql_free_result($result);

// Заполняем массив с разделами информацией о содержимом разделов
for ($i = 0; $i <= ($faq_partitions_count - 1); $i++)
{
$sql = 'SELECT id, question, user, email FROM `'.PREFIX.'_faq_content` WHERE pid = '.$faq[$i]['id'];
$result = $kernel->runSQL($sql);
unset($sql);
if (mysql_num_rows($result) <= 0)
continue;

while ($data = mysql_fetch_assoc($result))
{
$faq[$i]['content'][$data['id']] = $data['question'];
$faq[$i]['content'][$data['id']] = $data;
}
}


if (!isset($faq))
return '';

// Парсим шаблоны
settype($lines, "string");
foreach ($faq as $key => $value)
{
settype($subrows,"string");
$line = $template['row'];
$line = str_replace("%name%" , $value['name'] , $line);
$line = str_replace("%action_edit%" , "partition_edit&id=".$value['id'] , $line);
$line = str_replace("%action_delet%", "partition_delete&id=".$value['id'], $line);
$line = str_replace("%action_addco%", "add_quest&id=".$value['id']."&partition_id=".$value['id'], $line);

///admin/?action=bottom_frames&view=faq_add_content&partition_id=%partition_id%
$current_partition = $value['id'];
if (isset($value['content']))
{
settype($subrows, "string");
$line = str_replace("%count%", count($value['content']), $line);[/b]
$all_rows = '';
//Добавлем строки с вопросами данного раздела
foreach ($value['content'] as $key => $value)
{
$subrow = $list_table_subrow;
if ($value['email'] != "" || $value['user'] != "")
{
$subrow = str_replace("%user_name%",$value['user'],$subrow);
$subrow = str_replace("%user_email%",$value['email'],$subrow);
}
else
{
$subrow = str_replace("%user_name%","Аноним",$subrow);
$subrow = str_replace("%user_email%","",$subrow);
}

$subrow = str_replace("%question%",$value['question'], $subrow);
$subrow = str_replace("%action_delet_q%", "del_quest&content_id=".$value['id'], $subrow);
$subrow = str_replace("%question_edit%", "add_quest&partition_id=".$current_partition."&content_id=".$value['id'], $subrow);
$all_rows .= $subrow;
}
$line = str_replace("%subrow%", $all_rows, $line);
unset($subrows);
}
else
{
//Если в этом разделе нет вопросов
$line = str_replace("%count%", "0", $line);
$line = str_replace("%subrow%", "", $line);
}
$lines .= $line;
}
$list_table = str_replace("%partition%", $lines, $list_table);

return $list_table;

}

ЗЫ в приложении весь файл модуля.

ОГРОМНОЕ СПАСИБО!

Отредактировано arteshuk - 10.01.2011