2015-12-22 62 views
1

我在兩個表上有這個查詢。修剪部分返回的字段

SELECT vcc.name AS item, vcc.prodid, vcc.quantity AS qty, UPPER(vcc.custom_message) AS nickname, vfd1.value AS fullname, vfd2.value AS email, vcc.purchaseid, vcc.price, (
vcc.quantity * vcc.price 
) AS sub 
FROM vxu_4_wpsc_cart_contents AS vcc 
INNER JOIN vxu_4_wpsc_submited_form_data AS vfd1 ON vcc.purchaseid = vfd1.log_id 
AND vfd1.form_id =2 
INNER JOIN vxu_4_wpsc_submited_form_data AS vfd2 ON vcc.purchaseid = vfd2.log_id 
AND vfd2.form_id =9 

它返回這個(附加圖像)result

它甚至有可能從項目列TRIM的「尺寸」的細節(即小/中/ XL等),以使得潛在的敏感信息沒有顯示?

我使用以顯示查詢的PHP是這樣的:

foreach ($result as $print) { 
      echo '<tr>'; 
      echo '<td>' . $print->fullname .'</td>'; 
      echo '<td>' . $print->nickname .'</td>'; 
      echo '<td>' . $print->item .'</td>'; 
      echo '<td>' . $print->qty .'</td>'; 
      echo '<td>' . $print->email .'</td>'; 
      echo '<td>' . $print->price .'</td>'; 
      echo '<td>' . $print->sub .'</td>'; 
      echo '<td>' . $print->purchaseid .'</td>'; 
      echo '<td>' . $print->prodid .'</td>'; 
     echo '</tr>'; 
+0

不是真的「修剪」,但使用一些正則表達式或找到符號位置來查找子字符串。 –

+0

是否要顯示(例如)演示帽衫(小)而不是演示帽衫(小,凱利綠色)? –

+0

嗨 - 而不是顯示演示帽衫(凱利綠色) - 省略(小) – dougmiller

回答

1

可以在打印之前,從item列刪除:

$item = preg_replace('/\b(?:Small|Medium|Large|XL|XXL)\b,? */', '', $print->item); // remove size 
$item = str_replace('()', '', $item); // If there's nothing else in the parentheses, remove it entirely 
echo '<td>' . $item . '</td>'; 
+0

非常感謝你 - 我會給它一個去... – dougmiller

+0

你們這麼聰明 - 第一次工作!當然會「接受」你的答案。再一次,謝謝 – dougmiller

+0

真的,真的挑剔的問題 - 如果一個字段只有大小的細節,例如。在我發佈的表中展示Polo衫,印刷品是()。代碼可以調整來阻止它嗎? – dougmiller

0

我不知道,如果你對模式有控制權,但在我看來,合併大小和項目名稱是非規範化的,因爲大小(以及顏色)是項目的屬性,就像它的名字一樣。

所以,如果我有架構的控制,我會將大小(和顏色)分成單獨的列。然後,不包括大小是微不足道的。

更新新列可以通過Barmar出色的preg_replace()建議完成。

另一種替代方法是使用MySQL分支MariaDB 10,它具有VIRTUAL columns。然後,您可以定義一個新的列,其值是從其他列派生的,例如使用MySQL字符串函數來提取名稱信息。

+0

嗨。感謝您對此的看法。我對模式沒有實際的控制權 - 這是一個WordPress插件! – dougmiller

+0

請參閱我上面有關使用MariaDB 10的編輯。 –