2013-07-02 4 views
0
<?php 
$query = $_GET['query']; 
// gets value sent over search form 

$min_length = 6; 
// you can set minimum length of the query if you want 

if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then 

$query = htmlspecialchars($query); 
// changes characters used in html to their equivalents, for example: < to &gt; 

$query = mysql_real_escape_string($query); 
// makes sure nobody uses SQL injection 

$raw_results = mysql_query("SELECT * FROM cwnational WHERE (`postcode` = '$query') OR (`structure` LIKE '%".$query."%')") or die(mysql_error()); 

if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following 


while($results = mysql_fetch_array($raw_results)){ 

echo "<p><h3>".$results['postcode']."</h3>".$results['structure']."</p>"; 



} 

while($results = mysql_fetch_array($raw_results)){ 

if($results['structure'] = "National") { 

echo "print national_table"; 

} else { 
echo "print local_table"; 



} 



} 
else{ // if there is no matching rows do following 
echo "No results"; 
     } 

    } 
    else{ // if query length is less than minimum 
     echo "Minimum length is ".$min_length; 
    } 


?> 
</body> 

Я полностью в тупике сейчас ..добавляя дополнительные условия для цикла тузд

Когда я успешно соответствовать $ запроса, я хочу использовать 2-ю часть массива, который должен быть столбец называется структурой и используйте это как переключатель для печати table_local или table_national из db.

переписал его после того, как схватившись с правильным подходом,

if (empty($searchTerm)) { 
       echo "<h1>Empty search term</h1>"; 
       $sqlQuery = false; 
      } elseif (strlen($searchTerm) < $minQueryLength) { 
       echo "<h1>Search term must be at least ".$minQueryLength." characters long."; 
       $sqlQuery = false; 
      } else { 
       if (strlen($firstPart) + strlen($secondPart) == 7) { 
        $sqlQuery = $mysqli->query("SELECT `postcode`, `structure` FROM `cwnational` WHERE `postcode` LIKE '".$firstPart." ".$secondPart."'"); 
       } else { 
        $sqlQuery = $mysqli->query("SELECT `postcode`, `structure` FROM `cwnational` WHERE REPLACE(`postcode`, ' ', '') LIKE '".$searchTerm."%'"); 
       } 
      } 

      if (is_object($sqlQuery) && $sqlQuery->num_rows >= 1) { 
       $resultArr = array(); 
       while($row = $sqlQuery->fetch_assoc()) { 
        $resultArr[$row['postcode']] = array(); 
        $priceQuery = $mysqli->query("SELECT `base_rate`, `commit_mbps` FROM `pricing` WHERE `structure` = '".$row['structure']."'"); 
        if ($priceQuery->num_rows >= 1) { 
         while ($price = $priceQuery->fetch_assoc()) { 
          $resultArr[$row['postcode']][$price['commit_mbps']] = ((float)$price['base_rate'] + $transit[$price['commit_mbps']]) + (($transit[$price['commit_mbps']] + (float)$price['base_rate']) * ((float)$apiUser['margin']/100) ) ; 
         } 
        } 
       } 
+0

как нуб это не слишком поздно, чтобы избежать изучения вредных привычек, вы должны начать с MySQLi –

+0

привет Джо т, спасибо за вход, я возьму что во внимание, можете ли вы указать мне в правильном направлении для этого упражнения, пожалуйста? –

ответ

1

что происходит не так сейчас? Я вижу, что вам нужно добавить знак равенства здесь:

if($results['structure'] == "National") {

Примечания: двойные равные для PHP условного

Это также выглядит как у вас есть «еще» выходит из «времени», что не будет работать. И вы дважды сделали это «while», я объединил их в одно «Пока»:
while($results = mysql_fetch_array($raw_results)){

2

Вы читаете результирующий набор дважды. Это будет работать для первого цикла, но не будет выполнять второй, потому что вы уже достигли конца. Если вам нужно прочитать результаты дважды, используйте:

mysql_data_seek ($raw_results , 0) 

непосредственно перед вторым контуром, чтобы установить указатель на начало снова.

Конечно, вы должны использовать MySQLi ...

Смежные вопросы