Как сравнить строки без использования запросов MySQL? - PullRequest
0 голосов
/ 26 ноября 2011
Table1: id, cr_id 
10 | 81
10 | 82

Table2: cr_id, name
80 | Title80
81 | Title81
82 | Title82
83 | Title83

У меня есть два запроса mysql для них (получение результатов с mysql_fetch_array()).Я делаю HTML-поле выбора, в котором будут выбраны некоторые значения.

Как сравнить строки cr_id.Table1 и cr_id.Table2 без использования запроса MySQL?

Upd.Я хочу получить функцию php, которая будет возвращать «selected», если cr_id.Table1 == ccr_id.Table2 и Null, если нет.

Upd2.Что не так?

function checked($result_creative, $result_creative_chkd) {
                $select_row = null;
                if( strcmp( $result_creative['creative_id'], $result_creative_chkd['creative_id']) == 0)
                    {
                        $select_row = 'selected';
                    }
                };

            $query_creative_chkd=mysql_query("SELECT * FROM s_s_creative WHERE $id=id");
            $creative_chkd=mysql_num_rows($query_creative_chkd);
                if($creative_chkd != 0) 
                    {
                        while ($result_creative_chkd = mysql_fetch_array($query_creative_chkd)) 
                        {
                        $creative_s_id_chkd = $result_creative_chkd['id'];
                        $creative_id_chkd = $result_creative_chkd['creative_id'];
                        }
                    };

            $query_creative=mysql_query("SELECT * FROM s_creative ORDER BY creative_id ASC");
            $numrows_creative=mysql_num_rows($query_creative);
                if($numrows_creative != 0) 
                    {
                    while ($result_creative = mysql_fetch_array($query_creative)) 
                        {
                        $creative_id = $result_creative['creative_id'];
                        $creative_name = $result_creative['name'];

                        $select_row = checked($result_creative, $result_creative_chkd);

                        echo "<option value=\"".$creative_id."\" ". $select_row ." >".$creative_name."</option>\n  ";   
                        }
                    } 

Ответы [ 2 ]

7 голосов
/ 26 ноября 2011

Вы можете использовать оператор сравнения:

if( $row['cr_id'] == $row2['cr_id'])

ИЛИ, используйте функцию сравнения строк с учетом регистра strcmp

if( strcmp( $row['cr_id'], $row2['cr_id']) == 0)

ИЛИ, используйте функцию сравнения строк без учета регистра strcasecmp

if( strcasecmp( $row['cr_id'], $row2['cr_id']) == 0)

Редактировать:

Upd. Я хочу, чтобы добиться функции PHP, которая будет возвращать «выбранные», если cr_id.Table1 == ccr_id.Table2 и Null, если нет.

Вы можете использовать любой из вышеперечисленных методов, чтобы проверить, равны ли две строки, и соответственно установить свою переменную. Э.Г.

// Case sensitive string compare:
$selected = null;
if( strcmp( $row['cr_id'], $row2['cr_id']) == 0)
{
    $selected = 'selected';
}

Редактировать: У вас есть ошибка с вашей функцией (она ничего не возвращает). Попробуйте это:

function checked( $result_creative, $result_creative_chkd) 
{    
    return ( strcmp( $result_creative['creative_id'], $result_creative_chkd['creative_id']) == 0) ? 'selected' : null;
}
0 голосов
/ 26 ноября 2011

Попробуйте это:

function testselected(row1, row2)  {
   if(strcmp( $row['row1'] == $row['row2']))
       echo "Selected.";
   else
       echo "Null.";

}

Вы также можете присвоить результат переменной, если вам так нравится:

function testselected(row1, row2)  {
   $selectstr = ""
   $nullstr = ""
   if(strcmp( $row['row1'] == $row['row2']))
       $selectstr = "Selected."
   else
       $nullstr = "NULL."

}

Затем вы можете вызывать переменные везде, где вы хотите отобразить сообщение.Надеюсь, это поможет.

Вы бы вызвали функцию следующим образом:

testselected (id_1, id_2);

Где id_1 и id_2 - это имена строковых полей, которые высравнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...