2011-11-26 84 views
-2
 
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選擇框,其中一些值將被選中。如何比較字符串而不使用mysql查詢?

如何比較字符串cr_id.Table1cr_id.Table2而不使用mysql查詢?

Upd。我想實現一個php函數,如果cr_id.Table1 == ccr_id.Table2將返回「selected」,否則返回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 "; 
         } 
        } 
+1

你需要用什麼方式比較它們?你想實現什麼?(請在你的問題編輯它) – Ikke

回答

7

你可以使用比較操作:

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和空,如果不是。

您可以使用上述任何方法來檢查兩個字符串是否相等,並適當地設置您的變量。例如。

// 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

第二個和第三個解決方案可以最終表現更好,(如果你有大量的比較執行:D) – ArtoAle

+0

我已經試過了。它返回false值導致$ row和$ row2具有不同數量的值。 – user1056252

+0

@ user1056252 - 我添加了一個修改來修復您的'checked'功能。 – nickb

0

試試這個:

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是您正在比較的字符串字段的名稱。