Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/02/2011, 06:27
Avatar de Gambinoh
Gambinoh
 
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Problema con php intercalado en formulario

Vale, confirmado, tras cambiar las comillas de costado por las comillas normales como sugería memoadian el buscador interno realiza correctamente las consultas a la base de datos.

Sin embargo hay un problema que no alcanzo a comprender. PHP devuelve un error de tipo E_NOTICE que es recogido en el campo de texto antes de realizar ninguna búsqueda, el error aparece en la siguiente línea:

Código PHP:
Ver original
  1. Buscar: <input type="text" size="50" value="<?php echo $_GET['frase']; ?>" name="frase" />

Notice: Undefined index: frase in /opt/lampp/htdocs/Web/buscar.php on line 11

Entiendo que al cargarse por primera vez el archivo (todo son archivos) buscar.php se ejecuta el código PHP contenido en la línea anterior y como es lógico en ese momento NO ha sido enviado mediante get nada, porque no se ha pulsado el boton enviar del formulario y de ahí ese error.

Ahora bien, pienso así rápidamente que podría definirse dentro de ese código PHP que está dentro del atributo value una variable, por ejemplo $texto_busqueda y darle como valor un string vacío (""), luego en el código PHP posterior, fuera del formulario, recoger el string enviado y asignarle un nuevo valor a la variable $texto_busqueda.

Se aceptan sugerencias (se piden en realidad, pienso que mi opción puede no ser buena y ando un poco perdido).

La cosa podría quedar así:

Código PHP:
Ver original
  1. Buscar: <input type="text" size="50" value="<?php $texto_busqueda = ""; echo $texto_busqueda; ?>" name="frase" />

Posteriormente, ANTES de las estructuras de control que acabarán realizando bajo ciertas condiciones las consultas SQL, meto este código:

Código PHP:
Ver original
  1. $texto_busqueda = $_GET['frase'];

O sea que inicialmente cuando la página es buscar.php se imprime en el campo texto un string vacío, es decir nada, no hay error porque la variable ha sido definida. Luego cuando se envía el string contenido por el campo frase, antes de que se realicen las consulta SQL y que se recargue la página mostrando los resultados, ya se habrá asignado a la variable $texto_busqueda su nuevo valor (que será el del string buscado).

[Edito]

Vale al parecer eso no funciona ¿Sugerencias?

[Edito otra vez y arreglado]

He añadido una estructura de control if antes del formulario resultando finalmente en esto:


Código PHP:
Ver original
  1. <?php
  2. if (empty($_GET['frase'])){
  3. $texto_busqueda = "";
  4. }else{
  5. $texto_busqueda = $_GET['frase'];}
  6. ?>
  7. <h1><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Buscador - By RogerTM</a></h1>
  8. <form name="buscar" action="<?php $_SERVER['PHP_SELF'] ?>" method="get">
  9. Buscar: <input type="text" size="50" value="<?php echo ($texto_busqueda); ?>" name="frase" />
  10. <input type="submit" name="buscar" value="Buscar" />
  11. </form>

Última edición por Gambinoh; 27/02/2011 a las 07:26