Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Espacios en blanco Buscador PHP

Estas en el tema de Espacios en blanco Buscador PHP en el foro de PHP en Foros del Web. Buenas gente, El caso es que he seguido un post de aqui para hacer un buscador PHP sencillo pero el mismo por defecto , me ...
  #1 (permalink)  
Antiguo 30/10/2015, 03:01
 
Fecha de Ingreso: abril-2015
Mensajes: 189
Antigüedad: 9 años, 7 meses
Puntos: 14
Espacios en blanco Buscador PHP

Buenas gente,

El caso es que he seguido un post de aqui para hacer un buscador PHP sencillo pero el mismo por defecto , me sustituye los espacios en blanco por %20 y yo necesito cambiar en la URL ese %20 por un -, porque asi es como estan hechas en mi web para los productos.

Cuando hay un espacio en blanco me pone un guion entre palabra y palabra.

He probado con str replace con algo asi :

$new = str_replace("%20", "-", "$new");

Pero no he conseguido que me haga el cambio.

Paso el codigo ya que solo es una pagina php:

Código:
<head>
<link href="../css/estiloGeneral.css" rel="stylesheet" type="text/css" media="screen and (min-width: 481px)" />
<link href="../css/movil.css" rel="stylesheet" type="text/css" media="handheld, only screen and (max-device-width: 480px)" />
<link rel="stylesheet" type="text/css" href="../css/estiloMenu.css" />
</head>
<body>
	<div id="contenedor">
		<?php require_once("include/cabecera.php");require_once("include/traducNombre.php");?>
		<div id="social2">
			<?php require_once('include/social2.php')?>
		</div>
		<div id="contenido">
				<?php
					// conectar al servidor
					$server_link = mysql_connect("host", "id", "pass");
					if(!$server_link){
						die("Fall&oacute; la Conexi&oacute;n ". mysql_error());
					}
					// seleccionamos la base de datos
					$db_selected = mysql_select_db("base", $server_link);
					if(!$db_selected){
						die("No se pudo seleccionar la Base de Datos ". mysql_error());
					}
					// varificamos que el formulario halla sido enviado
					if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
						$frase = addslashes($_GET['frase']);
						// hacemos la consulta de busqueda
						$sqlBuscar = mysql_query("SELECT nombre, descripcion,
												  MATCH (nombre, descripcion)
												  AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
												  FROM productoPrueba
												  WHERE MATCH (nombre, descripcion)
												  AGAINST ('$frase' IN BOOLEAN MODE)
												  ORDER BY coincidencias DESC", $server_link)
												  or die(mysql_error());                              
						$totalRows = mysql_num_rows($sqlBuscar);
						// Enviamos un mensaje
						// indicando la cantidad de resultados ($totalRows)
						// para la frase busada ($frase)
						if(!empty($totalRows)){
							echo stripslashes("<p>Su b&uacute;squeda arroj&oacute; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>");        
							// mostramos los resultados
							while($row = mysql_fetch_array($sqlBuscar)){
								echo "<strong><a href='http://www.tejasa.es/productos//$row[nombre]'>$row[nombre]</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";
								echo "<p>".substr(strip_tags($row['descripcion']), 0, 255)."...</p>";
							}
							//$newa = str_replace("%20", "-", "$new");
						}
						
						// si se ha enviado vacio el formulario
						// mostramos un mensaje del tipo Oops...!
						elseif(empty($_GET['frase'])){
							echo "Debe introducir una palabra o frase.";
						}
						// si no hay resultados
						// otro mensaje del tipo Oops...!
						elseif($totalRows == 0){
							echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");
						}
					}
			?>
		<h1>Buscador</h1>
		<form name="buscar" action="<?php $_SERVER['PHP_SELF'] ?>" method="get">
		Buscar: <input type="text" size="50" value="<?php echo $_GET['frase']; ?>" name="frase" />
		<input type="submit" name="buscar" value="Buscar" />
		</form>
		<?php require_once('include/piePagina.php')?>
		</div>
	</div>
</body>
Muchas gracias a ver si alguno me puede echar una mano!

Última edición por javy7v; 30/10/2015 a las 05:23
  #2 (permalink)  
Antiguo 30/10/2015, 06:05
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Espacios en blanco Buscador PHP

Sería mejor si en vez de enviarlo por GET envías el formulario por POST así no te reemplazan ningún espacio por %20 y si es el caso cuando recibas el valor por POST reemplazas los espacios por un guión si es que así tienes guardados los datos en la BD.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 30/10/2015, 07:17
 
Fecha de Ingreso: enero-2014
Mensajes: 36
Antigüedad: 10 años, 10 meses
Puntos: 4
Respuesta: Espacios en blanco Buscador PHP

Igualmente puedes usar la función "str_replace".
  #4 (permalink)  
Antiguo 30/10/2015, 10:36
 
Fecha de Ingreso: abril-2015
Mensajes: 189
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Espacios en blanco Buscador PHP

Cita:
Iniciado por chronos682 Ver Mensaje
Sería mejor si en vez de enviarlo por GET envías el formulario por POST así no te reemplazan ningún espacio por %20 y si es el caso cuando recibas el valor por POST reemplazas los espacios por un guión si es que así tienes guardados los datos en la BD.

Muchas gracias, el proximo dia voy a intentarlo con esto a ver...

Cita:
Iniciado por Fyodorovich Ver Mensaje
Igualmente puedes usar la función "str_replace".
Ya se que str_replace es una de las opciones claras para solucionarlo pero con el codigo que hay ahi , no he conseguido usar la funcion para que me lo solucione , no me sustituye nada , no se si no la aplico bien , si no pongo el array que es o sino la coloco donde deberia ir pero no lo consigo.
  #5 (permalink)  
Antiguo 30/10/2015, 18:53
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 9 años, 1 mes
Puntos: 19
Respuesta: Espacios en blanco Buscador PHP

Estás usando str_replace fuera de tu while, ¿ya probaste colocandolo dentro?

Por cierto, la extensión mysql está obsoleta, ya no es recomendable usarla.
  #6 (permalink)  
Antiguo 03/11/2015, 04:50
 
Fecha de Ingreso: abril-2015
Mensajes: 189
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Espacios en blanco Buscador PHP

Cita:
Iniciado por AlejandraLara Ver Mensaje
Estás usando str_replace fuera de tu while, ¿ya probaste colocandolo dentro?

Por cierto, la extensión mysql está obsoleta, ya no es recomendable usarla.
Gracias por el consejo!

Respecto al replace... si lo he probado a meter dentro del While y sigue sin funcionar :(

La verdad es que no tengo ni idea de como arreglarlo.

Si alguno me sabe decir alguna cosa mas para probar me sería de gran ayuda.

He probado de otras maneras que me han dicho por otro sitio , como usando esta expresion regular :

$string = preg_replace('/\s+/', '_', $string);

Pero si donde el string pongo $sqlBuscar no hace nada y si en vez de eso pongo directamente el codigo salta error y no ejecuta.

  #7 (permalink)  
Antiguo 03/11/2015, 05:05
 
Fecha de Ingreso: enero-2014
Mensajes: 36
Antigüedad: 10 años, 10 meses
Puntos: 4
Respuesta: Espacios en blanco Buscador PHP

A ver...
Haz esto:

$newa = urldecode("$new");

$newa = str_replace(' ','-',$newa);

Debería funcionar.
  #8 (permalink)  
Antiguo 03/11/2015, 05:43
 
Fecha de Ingreso: abril-2015
Mensajes: 189
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Espacios en blanco Buscador PHP

LO CONSEGUI! :D

Muchas gracias a todos los shurs que me habeis ayudado!

Al final lo hice de otra manera pero bueno lo importante es que funciona XD

El tema es que no estaba seguro de si estaba usando la funcion en el array adecuado asi que he añadido un boton con un form y un action y he cambiado el GET a POST como me dijisteis y por fin :D

No creo que sea lo mas limpio ni correcto pero funciona , paso codigo por si a alguno le interesa.

Código:
$pruebarray="productos//$row[nombre]";
$pruebarray=str_replace (" ", "-", $pruebarray);
echo"<form action='$pruebarray'>";
echo"<input type='submit' value='Ir al producto' />";
echo"</form>";

Etiquetas: blanco, buscador, espacios, formulario, mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:09.