PHP函数忽略if语句

时间:2013-09-30 19:02:09

标签: javascript php jquery ajax

由于一位代理商想要他的网站网址在一个月前我工作的功能,我最终不得不做一些小的改动。我有两个函数PHP页面运行一个非常相似的脚本,但我不得不根据两个值集创建两个。他们用AJAX回显到页面上的内容完全相同,这就是它有点奇怪......

我做的第一个脚本是成功的,但是我需要发出一个if elseif else语句,所以每个代理都没有一个没有链接的链接。在摆弄这个声明之后,我能够让一个代理人在那里拥有他的网站URL。一旦我做完了,我就会觉得它会从那里顺利航行......那不是......

我对他们的两个脚本使用了完全相同的语句,只有一个有效。唯一与它们不同的是它接收的价值,我使用JavaScript + AJAX作为第一个(哪个有效),然后决定学习jQuery + AJAX来完成下一个。在此之前他们都工作了,除了使用JavaScript / jQuery(使用相同的语言)之外,它是两者的确切代码,一个使用GET而另一个使用POST

在函数运行时,我也没有任何错误或任何错误。代理人的名字是Sam Fiorentino,这是唯一一个拥有网站网址的人。 我进入了第二次搜索的控制台,单选按钮,它显示了锚标记之外的公司名称,这是问题的根源。为什么一个人正确地显示它而另一个没有“T?

第一个PHP (作品)

while ($stmt->fetch()) { // Gets results from the database
                echo "<div class='agentcon'>" . "<span class='agentn'>" . "<strong>". $First_Name . "&nbsp;" . $Last_Name . "&nbsp;" . $Suffix . "</strong>" . "</span>" . "<a href=mailto:".$Email . ">" . "<span class='email'>" . "Send an e-mail to" . "&nbsp;" . $First_Name . "</span>" . "</a>" ."<div class='floathr'></div>";
                if ($Company == NULL) {
                    echo "<p>";
                }
                elseif ($Website == NULL) {
                    echo "<p>" . "<strong>" .$Company . "</strong>" . "<br>";
                }
                else {
                    echo "<p>" . "<strong>" . "<a target='blank' href=" .$Website . ">" .$Company . "</a>" . "</strong>" . "<br>";
                }

第二个PHP (不起作用)

while ($stmt->fetch()) { // Gets results from the database
                echo "<div class='agentcon'>" . "<span class='agentn'>" . "<strong>".$First_Name . "&nbsp;" .$Last_Name . "&nbsp;" . $Suffix . "</strong>" . "</span>" . "<a href=mailto:".$Email . ">" . "<span class='email'>" . "Send an e-mail to" . "&nbsp;" .$First_Name . "</span>" . "</a>" ."<div class='floathr'></div>";
                if ($Company == NULL) {
                    echo "<p>";
                }
                elseif ($Website == NULL) {
                    echo "<p>" . "<strong>" .$Company . "</strong>" . "<br>";
                }
                else {
                    echo "<p>" . "<strong>" . "<a target='blank' href=" .$Website . ">" .$Company . "</a>" . "</strong>" . "<br>";
                }

SQL + Binded code (First / Working one)

$sql="SELECT First_Name, Last_Name, Suffix,  Email, Company, WorkAddress1, WorkCity, WorkStateProvince, WorkZipCode, Work_Phone, Fax, Ancillary, SmallGroup, IndividualPlans, LongTermCare, Medicare, LargeGroup, TPASelfInsured, CertifiedForPPACA, Website FROM `roster` WHERE Last_Name = '".$q."' OR Company = '".$q."' OR WorkCity = '".$q."' OR WorkZipCode = '".$q."' ORDER BY Last_Name ASC";

        if(!$stmt = $con->Prepare($sql))
    { 
        die; 

    }else{
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($First_Name, $Last_Name, $Suffix, $Email, $Company, $WorkAddress1, $WorkCity, $WorkStateProvince, $WorkZipCode, $Work_Phone, $Fax, $Ancillary, $SmallGroup, $IndividualPlans, $LongTermCare, $Medicare, $LargeGroup, $TPASelfInsured, $CertifiedForPPACA, $Website);
        $rows = $stmt->num_rows;

SQL + Binded代码(不工作)

$poststr = $_POST['expertise']; //get our post data
    if(count($poststr) > 1){ //count to make sure we have an array
        $expertise = implode(" AND ",$_POST['expertise']); //implode the array using AND as glue
    }
    else{              //otherwise if it is only one no need for implode
        $expertise = implode("",array($poststr));
    }
    //here is our string for prepared statement
    $sql = "SELECT First_Name, Last_Name, Suffix, Email, Company, WorkAddress1, WorkCity, WorkStateProvince, WorkZipCode, Work_Phone, Fax, Ancillary, SmallGroup, IndividualPlans, LongTermCare, Medicare, LargeGroup, TPASelfInsured, CertifiedForPPACA, Website FROM roster WHERE ".$expertise." = 1 ORDER BY Last_Name ASC";

    if(!$stmt = $con->Prepare($sql))
    { 
        die;

    }else{
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($First_Name, $Last_Name, $Suffix, $Email, $Company, $WorkAddress1, $WorkCity, $WorkStateProvince, $WorkZipCode, $Work_Phone, $Fax, $Ancillary, $SmallGroup, $IndividualPlans, $LongTermCare, $Medicare, $LargeGroup, $TPASelfInsured, $CertifiedForPPACA, $Website);
        $rows = $stmt->num_rows;

Javascript + AJAX (第一个/工作一个)

<script>
function showUser(str)
{
if (str=="")
  {
  document.getElementById("bodyA").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("bodyA").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","process.php?q="+str,true);
xmlhttp.send();
}
</script>

jQuery + AJAX (第二个/不工作)

$('input').on('click', function() { //Pulls data based on radial input
    var value = $(this).val();
    $.ajax({
        type: 'POST',
        datatype: "html",
        data: {
            expertise: value
        },
        url: "expertise.php",
        success: function (data) {
            $('#bodyA').html(data);
        }
    });
});

有什么想法吗?所有帮助将不胜感激,如果您需要更多代码,请告诉我们!

这也是我唯一一次和PHP一起使用过PHP!

Live Site

1 个答案:

答案 0 :(得分:4)

"<a target='blank' href=" .$Website . ">"

这是您的问题:您的网址周围没有引号。输出如下:

<a href=http://whatever.com/path>Company</a>

您需要添加如下引号:

"<a target='blank' href='" .$Website . "'>"

网址看起来像这样!

<a target='blank' href=http://www.samfiorentino.com/>Sam Fiorentino & Associates</a>

需要报价。网址中的结尾/结束<a>


第一个起作用但第二个起作用的原因不是:

innerHTML让浏览器解释html。 $(...)由jQuery解释,它为浏览器兼容性做了一些奇特的事情,但有时也有缺点。有些浏览器会尝试修复错误的标记,有时候浏览器会做坏事。 jQuery使它们大部分都是一样的。

请参阅此jsfiddle进行比较:http://jsfiddle.net/Rk7SQ/

<p>Browser rendering:</p>
<p><a target='blank' href=http://www.samfiorentino.com/>Sam Fiorentino & Associates</a></p>

<p>jQuery rendering:</p>
<p id="jqrender"></p>

$(function() {
    $('#jqrender').html("<a target='blank' href=http://www.samfiorentino.com/>Sam Fiorentino & Associates</a>");
});

你可以看到它们是不同的。