Lista de productos mostrados desde la base de datos usando PHP. Cuando el producto seleccionó la función javascript llamada para ingresar el producto en el campo de formulario HMTL.
<div id="addProductPanel"> <div class="popularProduct">Popular products</div> <div class="closeButton" onclick="closePopularProductWindow()">X</div> <?php $query_popular_product="SELECT product_code FROM database_table GROUP BY product_code ORDER BY product_code DESC"; $result_popular_product = $link->query($query_popular_product); while($row = $result_popular_product->fetch_assoc()) { $product_code = $row['product_code']; echo '<div class="popularProduct" onclick="setProduct("'.$product_code.'")">'.$product_code.'</div>'; } ?> </div>La función js setProduct es:
function setProduct(product) { console.log(product); document.getElementsByName("product")[0].value = product; document.getElementById("addProductPanel").style.display = "none"; } Al cargar la página y usar la consola del inspector de Chrome, al seleccionar un producto no se imprime el producto en la consola y se produce el error Uncaught SyntaxError: Unexpected end of input con HTML que se muestra a continuación:
<div class="popularProduct" onclick="setProduct("PROD123")">PROD123</div>He intentado escribir el siguiente HTML y funciona correctamente con la función javascript:
<div class="popularProduct" onclick="setProduct('PROD123')">PROD123</div>No se puede hacer que la sintaxis de PHP funcione con los valores del producto de la base de datos.
Utilice comillas simples en lugar de comillas dobles:
echo '<div class="popularProduct" onclick="setProduct(\''.$product_code.'\')">'.$product_code.'</div>'; Las comillas dobles terminarán las comillas dobles de onclick="setProduct(...
(Las comillas simples dentro de comillas simples deben escaparse, así que use \' )