2015-04-24 84 views
2

我正在使用數組來獲取1011-2371之間的範圍,但我不需要所有數字。這是一個很長的列表,這就是爲什麼我將CSV導入數據庫。我想從數據庫表創建一個數組。 但我不明白。從數據庫創建數組

這裏的老PHP的粗略樣機:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> 
    <input type="text" placeholder="1234AB" name="postcode" /> 
    <input type="submit" value="verstuur" /> 
</form> 
<?php 

if($_SERVER['REQUEST_METHOD'] == "POST") { 
    $postcode = range(1011,2371); 
    if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) { 
     if(in_array($_POST['postcode'],$postcode)) { 
      echo 'FreshFoods is beschikbaar bij jou in de buurt.'; 
     } else { 
      echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.'; 
     } 
    } else { 
     echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB'; 
    } 
} 
?> 

,這就是我嘗試做從數據庫中獲取數組:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> 
    <input type="text" placeholder="1234AB" name="postcode" /> 
    <input type="submit" value="verstuur" /> 
</form> 
<?php 
require_once 'db_config.php'; 

if($_SERVER['REQUEST_METHOD'] == "POST") { 
    $postcode = array(); 
    $result = mysql_query("SELECT postcode FROM postcode_check"); 

    if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) { 
     if(in_array($_POST['postcode'],$postcode)) { 
      echo 'FreshFoods is beschikbaar bij jou in de buurt.'; 
     } else { 
      echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.'; 
     } 
    } else { 
     echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB'; 
    } 
} 
?> 

的db_config.php文件的樣子:

<?php 
$db = array ( 
    'host' => 'localhost', 
    'user' => 'root', 
    'pass' => 'root', 
    'dbname' => 'testzip' 
); 

if(!mysql_connect($db['host'], $db['user'], $db['pass'])) 
{ 
    trigger_error('Fout bij verbinden: '.mysql_error()); 
} 
elseif(!mysql_select_db($db['dbname'])) 
{ 
    trigger_error('Fout bij selecteren database: '.mysql_error()); 
} 
else 
{ 
    $sql = "SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'"; 
    if(!mysql_query($sql)) 
    { 
     trigger_error('MySQL in ANSI niet mogelijk'); 
    } 
} 
?> 
+0

您需要獲取結果,然後將其存儲在'$ postcode'中。 http://php.net/manual/en/function.mysql-fetch-array.php – chris85

+0

所以你有一個查詢('$ result = ...'),但是你不能獲取/執行它。此外,您不要在代碼中使用結果。 –

+0

@ chris85我試過但沒有得到正確的消息:( – hzrcan

回答

1

您必須使用mysql_fetch_arraymysql_fetch_assoc從數據中獲取結果基礎。

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> 
<input type="text" placeholder="1234AB" name="postcode" /> 
<input type="submit" value="verstuur" /> 
</form> 
<?php 
require_once 'db_config.php'; 

if($_SERVER['REQUEST_METHOD'] == "POST") { 
$postcode = array(); 
$result = mysql_query("SELECT postcode FROM postcode_check"); 
while ($row = mysql_fetch_array($result)) { 
    $postcode[] = $row['postcode']; 
} 
if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) { 
    if(in_array($_POST['postcode'],$postcode)) { 
     echo 'FreshFoods is beschikbaar bij jou in de buurt.'; 
    } else { 
     echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.'; 
    } 
} else { 
    echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB'; 
} 
} 
?> 

試試看看這個代碼。

+0

更改'$ postcode [] = $ row;'到'$ postcode [] = $ row ['postcode' ];' – Jayson

+0

聽起來有貨,它的工作原理! – hzrcan

1

您需要獲取結果。你的正則表達式永遠不會匹配你的db樣本數據,所以你總是會得到nog niet消息。或voorbeeld。從未'FreshFoods is beschikbaar bij jou in de buurt'

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> 
    <input type="text" placeholder="1234AB" name="postcode" /> 
    <input type="submit" value="verstuur" /> 
</form> 
<?php 
require_once 'db_config.php'; 
if($_SERVER['REQUEST_METHOD'] == "POST") { 
    $postcode = array(); 
    $result = mysql_query("SELECT postcode FROM postcode_check"); 
    while($row = mysql_fetch_assoc($result)){ 
     $postcode[] = $row['postcode']; 
    } 
    if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) { 
     if(in_array($_POST['postcode'],$postcode)) { 
      echo 'FreshFoods is beschikbaar bij jou in de buurt.'; 
     } else { 
      echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.'; 
     } 
    } else { 
     echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB'; 
    } 
} 
?> 
+0

謝謝@ chris85,這就是我想要的,我現在將專注於獲取過程 – hzrcan

+0

這是從這個答案恢復的任何特定原因嗎? – chris85