Question

I am building a zip/postal code search for the US & Canada. I have the code working great with just the US zip code search, which are 5 characters. The Canadian Postal codes are 6 characters. I need this code so if the user only adds 1-4 characters, if it matchs anything in the database, I don't want those results displayed, becuase it would display hundreds and they would all be wrong.

In my code, I have:

   if (strlen($search_name)>=5)

How do I set this up so it takes both 5 or 6 characters?

So, this is the code I am using:

    <?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.';
    }



              }

  }


?>              
Was it helpful?

Solution

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

This condition will only pass if the string length is 5 characters or 6 characters

Strlen manual here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top