Función PHP ignorando un enunciado if

Debido a que un agente quería la URL de su sitio web sobre la funcionalidad en la que trabajé hace un mes, terminé teniendo que hacer algunos cambios menores. Tengo dos páginas PHP de funciones que ejecutan un script muy similar, pero tuve que hacer dos conjuntos de dos valores. Lo que hacen eco en la página con AJAX es exactamente el mismo y aquí es donde se pone un poco raro …

El primer script que hice fue exitoso, pero necesitaba hacer una statement if elseif else para que todos los agentes no tuvieran un enlace que no llegara a ninguna parte. Después de juguetear con esta afirmación, pude obtener solo un agente para tener allí la URL de su sitio web. Una vez que tuve eso hecho, tuve la impresión de que se estaría allanando la navegación desde allí … no era …

Usé exactamente la misma statement para sus dos scripts y solo funciona uno. Lo único que difiere de ellos es qué valor está recibiendo y que uso JavaScript + AJAX para el primero (que funciona) y luego decidí aprender jQuery + AJAX para hacer el siguiente. Antes de esto, todos funcionaron y es el código exacto para ambos además del uso de JavaScript / jQuery (que es el mismo idioma) y uno usa GET mientras que el otro usa POST

Tampoco recibo errores ni nada mientras la función se está ejecutando. El nombre del agente es Sam Fiorentino, que es el único con una URL del sitio web. Entré en la consola para la segunda búsqueda, los botones de opción, y muestra el nombre de la empresa fuera de la etiqueta de anclaje, que es la raíz del problema. ¿Por qué uno debería mostrarlo correctamente mientras que el otro no?

Primero PHP (Works)

 while ($stmt->fetch()) { // Gets results from the database echo "
" . "" . "". $First_Name . " " . $Last_Name . " " . $Suffix . "" . "" . "" . "" . "" ."
"; if ($Company == NULL) { echo "

"; } elseif ($Website == NULL) { echo "

" . "" .$Company . "" . "
"; } else { echo "

" . "" . "" .$Company . "" . "" . "
"; }

Segundo PHP (no funciona)

 while ($stmt->fetch()) { // Gets results from the database echo "
" . "" . "".$First_Name . " " .$Last_Name . " " . $Suffix . "" . "" . "" . "" . "" ."
"; if ($Company == NULL) { echo "

"; } elseif ($Website == NULL) { echo "

" . "" .$Company . "" . "
"; } else { echo "

" . "" . "" .$Company . "" . "" . "
"; }

Código SQL + Binded (Primero / Trabajo uno)

 $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; 

Código SQL + Binded (No funciona)

 $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 (Primero / Trabajando uno)

  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(); }  

jQuery + AJAX (Segundo / No funciona)

 $('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); } }); }); 

¿Alguna idea? Toda ayuda será muy apreciada y si necesita más código, ¡házmelo saber!

¡Esta es la única vez que uso PHP tan desnudo conmigo!

Sitio en vivo

 "" 

Este es su problema: no tiene comillas alrededor de su url. Se produce así:

 Company 

Debe agregar citas como esta:

 "" 

¡La url se ve así!

 Sam Fiorentino & Associates 

Necesita citas. La terminación / en la URL termina con .


La razón por la cual el primero funciona pero el segundo no:

innerHTML permite que el navegador interprete el html. $(...) es interpretado por jQuery, que hace algunas cosas elegantes para la compatibilidad del navegador, pero a veces tiene inconvenientes. Algunos navegadores intentan corregir el marcado incorrecto y, a veces, el navegador hace un mal trabajo. jQuery hace que todos actúen de la misma manera.

Vea este jsfiddle para comparar: http://jsfiddle.net/Rk7SQ/

 

Browser rendering:

Sam Fiorentino & Associates

jQuery rendering:

$(function() { $('#jqrender').html("Sam Fiorentino & Associates"); });

Puedes ver que son diferentes.