usando registros listar inteligente formulario criterios busqueda buscar buscador avanzado avanzada php mysql search highlight

registros - formulario de busqueda php mysql



Resalte el término de búsqueda en la búsqueda de mysql php (3)

Deseará usar una expresión regular ( preg_replace ) para buscar su término y reemplazarlo con dicho término rodeado de <span> </span> .

Mire la documentación de preg_replace para preg_replace cómo usarlo: http://us3.php.net/preg_replace

¿Podría alguien ayudarme a destacar el término de búsqueda en mi código de búsqueda php? A continuación se muestra el código que estoy usando actualmente, y funciona bien. Me gustaría agregar una función destacada pero no tengo idea de cómo implementar eso en este código sin rehacer todo.

Me encontré con Resaltar texto de búsqueda en mysql php search thispost que se ve muy bien. Pero estoy perdido tratando de implementar esto. Hace algún tiempo, tuve un efecto <span> , pero no pude ingresarlo en la <table> para resaltar solo el término de búsqueda y seguir recorriendo la tabla.

include("config/config.php"); $con = mysql_connect($host, $db_user, $db_pass); if (!$con) { die(''Could not connect: '' . mysql_error()); } mysql_select_db($db, $con); $result = mysql_query("SELECT * FROM data WHERE `data_id` LIKE ''%$_POST[searchterm]%'' OR `who` LIKE ''%$_POST[searchterm]%'' OR `ref` LIKE ''%$_POST[searchterm]%'' OR `asset` LIKE ''%$_POST[searchterm]%'' OR `make_model` LIKE ''%$_POST[searchterm]%'' OR `serial` LIKE ''%$_POST[searchterm]%'' OR `os` LIKE ''%$_POST[searchterm]%'' OR `swp` LIKE ''%$_POST[searchterm]%'' OR `ea` LIKE ''%$_POST[searchterm]%'' OR `dt_in` LIKE ''%$_POST[searchterm]%'' OR `status` LIKE ''%$_POST[searchterm]%'' OR `dt_out` LIKE ''%$_POST[searchterm]%'' "); $num_rows = mysql_num_rows($result); echo "<center>"; echo "<BR><BR>"; echo "<a href=''index.php''><button id=''sblogloginbtn'' name=''login'' type=''submit''><b>BACK</b></button></a>"; echo "<BR><BR>"; echo "<h1>Your search has found&nbsp;"; echo "<b><font size=''15'' color=''blue''>$num_rows</font></b>"; echo "&nbsp;records.</font></h1>"; echo "<BR><BR>"; echo "<table border=''frame''> <tr style=''color:#FF00FF''> <th>Signed in By</th> <th>Reference Number</th> <th>Asset Number</th> <th>Make Model</th> <th>Serial Number</th> <th>Operating System</th> <th>Office</th> <th>Profile</th> <th>Extra Apps</th> <th>Time IN</th> <th>Status</th> <th>Time OUT</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row[''who''] . "</td>"; echo "<td>" . $row[''ref''] . "</td>"; echo "<td>" . $row[''asset''] . "</td>"; echo "<td>" . $row[''make_model''] . "</td>"; echo "<td>" . $row[''serial''] . "</td>"; echo "<td>" . $row[''os''] . "</td>"; echo "<td>" . $row[''office''] . "</td>"; echo "<td>" . $row[''swp''] . "</td>"; echo "<td>" . $row[''ea''] . "</td>"; echo "<td>" . $row[''dt_in''] . "</td>"; echo "<td>" . $row[''status''] . "</td>"; echo "<td>" . $row[''dt_out''] . "</td>"; } echo "</table>"; echo "<br /><br />"; echo "</center>"; mysql_close($con);


No veo dónde está imprimiendo el término de búsqueda en su página. Además, usaría hojas de estilo CSS, evite las etiquetas de fuente, por ejemplo

<style> .searchTerm{ background-color:red; } </style> <table> <tr><th>You searched for<div class=''searchTerm''><?php echo $_POST[searchterm];?></div></th></tr> //rest of page


La solución más simple es usar str_replace() para reemplazar el término de búsqueda con etiquetas <span> envueltas en ellas, con estilo.

Advertencia: la forma en que configuras tu secuencia de comandos es vulnerable a los ataques de inyección. Este es solo un ejemplo para mostrarle cómo pasar variables.

Ver: ¿Cómo puedo evitar la inyección SQL en PHP?

<?php include("config/config.php"); $con = mysql_connect($host, $db_user, $db_pass); if (!$con) { die(''Could not connect: '' . mysql_error()); } mysql_select_db($db, $con); $term = $_POST[searchterm]; $result = mysql_query("SELECT * FROM data WHERE `data_id` LIKE ''%$_POST[searchterm]%'' OR `who` LIKE ''%$_POST[searchterm]%'' OR `ref` LIKE ''%$_POST[searchterm]%'' OR `asset` LIKE ''%$_POST[searchterm]%'' OR `make_model` LIKE ''%$_POST[searchterm]%'' OR `serial` LIKE ''%$_POST[searchterm]%'' OR `os` LIKE ''%$_POST[searchterm]%'' OR `swp` LIKE ''%$_POST[searchterm]%'' OR `ea` LIKE ''%$_POST[searchterm]%'' OR `dt_in` LIKE ''%$_POST[searchterm]%'' OR `status` LIKE ''%$_POST[searchterm]%'' OR `dt_out` LIKE ''%$_POST[searchterm]%'' "); $num_rows = mysql_num_rows($result); echo "<center>"; echo "<BR><BR>"; echo "<a href=''index.php''><button id=''sblogloginbtn'' name=''login'' type=''submit''><b>BACK</b></button></a>"; echo "<BR><BR>"; echo "<h1>Your search has found&nbsp;"; echo "<b><font size=''15'' color=''blue''>$num_rows</font></b>"; echo "&nbsp;records.</font></h1>"; echo "<BR><BR>"; echo "<table border=''frame''> <tr style=''color:#FF00FF''> <th>Signed in By</th> <th>Reference Number</th> <th>Asset Number</th> <th>Make Model</th> <th>Serial Number</th> <th>Operating System</th> <th>Office</th> <th>Profile</th> <th>Extra Apps</th> <th>Time IN</th> <th>Status</th> <th>Time OUT</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''who'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''ref'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''asset'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''make_model'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''serial'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''os'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''office'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''swp'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''ea'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''dt_in'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''status'']) . "</td>"; echo "<td>" . str_replace($term, "<span class=/"highlight/">$term</span>", $row[''dt_out'']) . "</td>"; } echo "</table>"; echo "<br /><br />"; echo "</center>"; mysql_close($con); ?>

Y algunos estilos de muestra:

<style type="text/css"> .highlight { background-color: yellow; } </style>