2012-06-01 39 views
0

我有一个莫名其妙的IE8 PHP问题。下面的代码在Chrome和FF中工作正常,但不是IE8。表单正在提交,如果未选择搜索项或复选框,则会显示错误,并且如果两个db搜索均失败,则会显示No Actor和No Movies找到的echo。但是,如果任何一个搜索都没有成功,甚至连演员/电影都找不到回声,这让我难以置信。PHP代码不工作在IE8

下面的代码:

<?php 
if($_POST[submitbutton]){ 
    $search = trim(mysql_real_escape_string($_POST[search])); 

    if(!$search){ 
     echo "Please enter a search term!"; 
    }else if(!$_POST['checkbox']){ 
     echo "Please select at least one database to search!"; 
    }else{ 
     //search names 
     if(in_array("actors", $_POST['checkbox'])){ 
      $query = mysql_query("SELECT name_id, realname, mainalias FROM names WHERE realname LIKE '%$search%' OR mainalias LIKE '%$search%'"); 

      if(mysql_num_rows($query)==0){ 
       echo "<h2>No Actors by that name found!</h2>", "<p>"; 
      }else{ 
       echo "<h2>Actors Found:</h2>"; 
       while ($record = mysql_fetch_assoc($query)){ 
        $realname = $record['realname']; 
        $name_id = $record['name_id']; 
        echo "<a href='index.php?page=name&id=$name_id'>", $realname, "</a><hr>"; 
       } 
      } 
     } 

     //search titles 
     if(in_array("movies", $_POST['checkbox'])){ 
      $query = mysql_query("SELECT title_id, title FROM titles WHERE title LIKE '%$search%'"); 

      if(mysql_num_rows($query)==0){ 
       echo "<h2>No Movies by that name found!</h2>", "<p>"; 
      }else{ 
       echo "<h2>Movies Found:</h2>"; 
       while ($record = mysql_fetch_assoc($query)){ 
        $title = $record['title']; 
        $title_id = $record['title_id']; 
        echo "<a href='index.php?page=title&amp;id=$title_id'>", $title, "</a><br>"; 

       echo "<hr>"; 
       } 
      } 
     } 
    } 
} //end post submitbutton 
?> 
+4

这首先要求进行基本的调试 - 当屏幕为空时会触发哪些条件和循环? –

+0

这是准确的:'$ _POST [submitbutton]'?这可能是一个错误。应该像'$ _POST ['submitbutton']'。 –

+0

与第3行中的$ _POST [search]相同的东西。 – Quantastical

回答

0

应该

$search = trim(mysql_real_escape_string($_POST[search])); 

$search = trim(mysql_real_escape_string($_POST['search'])); 

我不知道是否有任何与你的问题,但它跳线出来对我。

+0

虽然这是非常糟糕的做法不使用引号在PHP中的命名键,我不认为这会导致问题。 – ianbarker

+0

是的,谢谢。 – Kratos

0
<?php 
if(isset($_POST['submitbutton'], $_POST['search'])){ //use isset for check exists vars 
    $search = trim(mysql_real_escape_string($_POST['search'])); // ['POST vars'] 

    if(!$search){ 
     echo "Please enter a search term!"; 
    }else if(!isset($_POST['checkbox'])){ 
     echo "Please select at least one database to search!"; 
    }else{ 
     //search names 
     if(in_array("actors", $_POST['checkbox'])){ 
      $query = mysql_query("SELECT name_id, realname, mainalias FROM names WHERE realname LIKE '%$search%' OR mainalias LIKE '%$search%'"); 

      if(mysql_num_rows($query)==0){ 
       echo "<h2>No Actors by that name found!</h2>", "<p>"; 
      }else{ 
       echo "<h2>Actors Found:</h2>"; 
       while ($record = mysql_fetch_assoc($query)){ 
        $realname = $record['realname']; 
        $name_id = $record['name_id']; 
        echo "<a href='index.php?page=name&id=$name_id'>", $realname, "</a><hr>"; 
       } 
      } 
     } 

     //search titles 
     if(in_array("movies", $_POST['checkbox'])){ 
      $query = mysql_query("SELECT title_id, title FROM titles WHERE title LIKE '%$search%'"); 

      if(mysql_num_rows($query)==0){ 
       echo "<h2>No Movies by that name found!</h2>", "<p>"; 
      }else{ 
       echo "<h2>Movies Found:</h2>"; 
       while ($record = mysql_fetch_assoc($query)){ 
        $title = $record['title']; 
        $title_id = $record['title_id']; 
        echo "<a href='index.php?page=title&amp;id=$title_id'>", $title, "</a><br>"; 

       echo "<hr>"; 
       } 
      } 
     } 
    } 
} //end post submitbutton 
?>