2014-10-03 76 views
0

我有這樣的PHP代碼:創建換行符沒有HTML代碼的PHP/MySQL的

$address=''; 
if($_POST["address1"] > '') { 
    $address.=$_POST["address1"]; 
} 
if($_POST["address2"] > '') { 
    $address.=$_POST["address2"]; 
} 
if($_POST["address3"] > '') { 
    $address.=$_POST["address3"]; 
} 
if($_POST["town"] > '') { 
    $address.=$_POST["town"]; 
} 
if($_POST["county"] > '') { 
    $address.=$_POST["county"]; 
} 
if($_POST["postcode"] > '') { 
    $address.=$_POST["postcode"]; 
} 

然後插入行使用$address變量

我怎樣才能保證有一個數據庫是一個非 - 每個地址線的HTML換行符?

+0

你可能意味着'!='而不是'>'? – Yang 2014-10-03 18:00:20

+0

http://stackoverflow.com/questions/2902888/adding-a-line-break-in-mysql-insert-into-text – 2014-10-03 18:00:38

+0

Barmar答案應該工作,或者只是追加'。 「\ n」;'到每個地址行的末尾。 – mr12086 2014-10-03 18:01:09

回答

1

把地址字段中的數組,然後使用implode()將其與新行結合:當別人建議的方式破滅地址

$addr_array = array(); 
foreach (array('address1', 'address2', 'address3', 'town', 'county', 'postcode') as $field) { 
    if ($_POST[$field] > '') { 
     $addr_array[] = $_POST[$field]; 
    } 
} 
$address = implode("\n", $addr_array); 
+0

即時得到您的第二行語法錯誤 - 我似乎無法找到它 – Charlie 2014-10-03 18:02:30

+0

我有一個括號在錯誤的地方 – Barmar 2014-10-03 18:03:05

0

,我想建議在結構化保存地址在數據庫中的方式。這一點也很重要,因爲並非所有國家在表示地址時都遵循相同的順序:例如,某些歐洲國家將郵政編碼放在城市名稱之前等。

例如,您可以使用例如MySQL結構化數據存儲數據庫JSON(與PHP的serialize()不同,它比XML和跨平臺更高效)。

<?php 
$address = array(); 
$fields = array('address1', 'address2', 'address3', 'town', 'county', 'postcode'); 
foreach($k in $fields) { 
    if(!empty($_POST[$k])) { 
     $address[$k] = $_POST['k']; 
    } 
} 
// Store this single variable in the database 
$store = json_encode($address); 
?> 

(重要提示:在你的代碼好像你不過濾/從用戶驗證輸入我強烈建議你這樣做,刪除HTML代碼,檢查是否有有效的Unicode,等!通過過濾用戶輸入正確保護您的代碼從普通黑客的80%)

然後,當你從數據庫中讀取內容,你可以簡單地重新獲得您的陣:

<?php 
$result = // ... Obtain the data from the database 
$result['address'] // This variable contains your address 

$address = json_decode($result['address'], true); 
?> 
相關問題