2013-12-06 5 views
-2

Я строю почтовый индекс/почтовый индекс для США & Канада. У меня есть код, прекрасно работающий с обычным поиском в почтовом индексе США, который составляет 5 символов. Канадские почтовые коды - 6 символов. Мне нужен этот код, поэтому, если пользователь добавляет только 1-4 символа, если он соответствует чему-либо в базе данных, я не хочу, чтобы эти результаты отображались, потому что они отображали сотни, и все они были бы неправы.Как выполнить поиск php, где строка может содержать 5 или 6 символов?

В моем коде, у меня есть:

if (strlen($search_name)>=5) 

Как настроить это так, что нужно как 5 или 6 символов?

Итак, это код, я использую:

<?php 

if (isset($_POST['search_name'])) { 
    $search_name = $_POST['search_name']; 
    if (!empty($search_name)) { 

     if (strlen($search_name)>=5) { 

     $query = "SELECT * FROM `search4` WHERE `ZipCode` LIKE '%".mysql_real_escape_string($search_name)."%'"; 
     $query_run = mysql_query($query); 


     if (mysql_num_rows($query_run)>=1) { 
      echo "<table width=700' border='0'>"; 
      echo "<tr>"; 
      echo "<td width='700' valign='top'><table width='100%' border='0'>"; 
      echo "<tr>"; 
      echo "<td><p><strong>Results found: </strong></p>"; 
      while ($query_row = mysql_fetch_assoc($query_run)) {{ 
       echo $query_row ['ZipCode'].', '; 
       echo $query_row['ZipCity'].', '; 
       echo $query_row['ZipState'].'<br>'; 
       echo '<p><strong>Area: </strong></p>'; echo $query_row['Area'].''; 
       echo "</td>"; 
       echo "</tr>"; 

       echo "<tr>"; 
       echo "<td>"; 

       echo '<span class="productdescription"><p>Mar Cor Office: </p></span></h2>'; 
       echo $query_row['MCPOffice'].', '; 
       echo $query_row['CustClassID'].'<br>'; 
       echo $query_row['Address1'].'<br>'; 
       if(!empty($query_row['Address2'])) // This will skip if the field if it's empty 
       echo $query_row['Address2'].'<br>'; 
       echo $query_row['City'].', '; 
       echo $query_row['State'].' '; 
       echo $query_row['Zip'].'<br>'; 
       echo '<p><strong>Phone Number: </strong></p>'; 
       echo $query_row['Phone'].'<br>'; 
       echo '<p><strong>Fax Number: </strong></p>'; 
       echo $query_row['Fax'].'<br><br>'; 
       echo "</td>"; 
       echo "</tr>"; 
       echo "</table>"; 
       echo "</td>"; 

       //BeginImage display result 
       $res=mysql_query("select * from Images"); 

          { 
       echo "<td width='703' align='right' valign='top'>";?> <img src="<?php echo $query_row["Image"]; ?>"> <?php echo "</td>"; 
       echo "</tr>"; 
       } 


      //EndImage display result 
       } 

       } 

     }else{ 
     echo 'No results found.'; 
    } 

     }else{ 
     echo 'Your search must be a 5-digit zip code.'; 
    } 



       } 

    } 


?>    
+3

'если (strlen ($ search_name) == 5 || strlen ($ search_name) == 6) ' –

+0

Пожалуйста, покажите только код, необходимый для понимания вашей проблемы. Регулярное выражение с '{5,6}' соответствует «5-6 раз». Может ли это работать на вас? – Floris

ответ

0
if(strlen($search_name) == 5 || strlen($search_name) == 6) { 
// Whatever your code is here 
} 

Это условие будет только пройти, если длина строки 5 символов или 6 символов

Strlen manual here

+0

AliTrixx, Это сработало отлично. Именно то, что я искал. Спасибо. – GWana

+0

Стоит отметить, что @Deepu дал именно это предложение в самом первом комментарии к этому вопросу. – Floris

+0

@Floris Действительно, но тогда любой программист php, который даже знает основы, сможет ответить на этот вопрос. – Ali