2015-04-24 87 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