La columna "producto" tiene cargado valores como "zapatos, mocacines, zapatillas, etc" y la columna "firma" carga las marcas, por lo que un producto puede coincidir con varias marcas. Lo que quiero es seleccionar por ejemplo: en el primer select "zapatos", en el segundo "marca pirulo" y que me traiga todos los valores de la fila (son 9 columnas o campos en total) serían "color, modelo, disponibilidad, etc).
No se si se puede hacer. Los valores de la tabla son pocos, no mas de 400.
Estuve viendo lo de los selects dinamicos, pero no se sies exactamente lo que necesito ya que para mi utilidad bastaria con que la respuesta a la consulta arroje todas las coincidencias entre esas 2 columnas que aclaro son de la misma tabla.
El código que tengo es el siguiente:
Código PHP :
<? //////////////////////////// // Configuración /////////////////////////// //modifica estas variables según tu servidor de MySQL $bd_servidor = "localhost"; $bd_usuario = "root"; $bd_contrasenya = ""; $bd_bdname = ""; $bd_tabla = "ACCESORIOS"; // Tabla donde se harán las búsquedas // Conexión y selección de la base de datos $link = mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya); mysql_select_db($bd_bdname,$link); //////////////////////////// // Formulario /////////////////////////// ?> <center> <p><h2>Introduce las palabras para la búsqueda</h2></p> <p><form name="buscador" method="post" action="buscador_generico.php"><br> Buscar en: <select name="campo"> <?php //Con este query obtendremos los campos por los cuales el usuario puede buscar $result = mysql_query("SELECT DISTINCT PRODUCTO FROM `$bd_tabla`",$link); while($row = mysql_fetch_row($result)) { // en $row[0] tenemos el nombre del campo // de esta manera no necesitamos conocer el nombre de los campos // por lo que cualquier tabla nos valdrá ?> <option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option> <?php } ?> </select> <select name="firma"> <?php //Con este query obtendremos los campos por los cuales el usuario puede buscar $result = mysql_query("SELECT DISTINCT FIRMA FROM `$bd_tabla`",$link); while($row = mysql_fetch_row($result)) { // en $row[0] tenemos el nombre del campo // de esta manera no necesitamos conocer el nombre de los campos // por lo que cualquier tabla nos valdrá ?> <option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option> <?php } ?> </select> <br> <input type="submit" value="Enviar" name="enviar"> </form></p> </center> <? //////////////////////////// // Proceso del Formulario /////////////////////////// if(isset($_POST['enviar'])) { // Solo se ejecuta si se ha enviado el formulario $query = "SELECT * from $bd_tabla WHERE `{$_POST['campo']}` LIKE '%{$_POST['firma']}%'"; $result = mysql_query($query,$link); echo mysql_error(); $found = false; // Si el query ha devuelto algo pondrá a true esta variable while ($row = mysql_fetch_array($result)) { $found = true; echo "<p>"; foreach($row as $nombre_campo => $valor_campo) { // Tenemos que mostrar todos los campos de las filas donde se haya // encontrado la búsqueda. if(is_int($nombre_campo)) { continue; //Cuando hacemos mysql_fetch_array, php genera un array // con todos los valores guardados dos veces, uno con // índice numérico y otro con índice el nombre del campo. // Solo nos interesa el del nombre del campo. } echo "<b>".$nombre_campo."</b> : ".$valor_campo."<br>"; } echo "</p>"; } if(!$found) { echo "No se encontró la palabra introducida"; } } ?>
Algo estoy haciendo mal porque me devuelve error. Les agredeceré muchísimo su ayuda.