Consulta sobre código implementado en php con errores para pasar variables

Lo que tengo instalado es WNT, Apache, PHP y MySQL.
El problema que tengo es el paso de variables. Aquí esta el código de los dos ficheros, para que los puedas probar y a ver si me puedes ayudar.
Formulario.htm
<html>
<body>
<form action="http://localhost/buscadordebugeo.php" METHOD="POST">
<strong>Palabra clave:</strong>
<input type="text" name="buscar" size="20"><br><br>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar" >
</form>
</body>
</html>
buscadordebugeo.php
<html>
<body>
<?php
if ($buscar == ""){ ?>
<p>Debe especificar una cadena a buscar</p>
<script>alert("Tenias razon, no pasas variables")</script>
<p><a href=./formulario.html>Volver</p>
</body></html>
<?
exit;
} else{ ?>
<script>alert("si pasas variables la variable buscar = <? Echo $buscar ?>")</script>
<?
}
mysql_connect("localhost","nobody","");
$sql = "SELECT * FROM agenda WHERE nombre LIKE '%$buscar%' ORDER BY nombre";
$result=mysql_db_query("mydb", $sql);
if ($result){ ?>
<script>alert("he recorrido tu codigo y todo va bien hasta aqui es decir que le preguntaste a mysql <? Print $sql ?> y si encontro resultados")</script>
<?
echo "<table border = '1'> \n";
echo "<tr> \n";
while ($field = mysql_fetch_array($result)){
echo "<td colspan=5 align=\"left\">".$field['name']."</b></td> \n";
echo "</tr> \n";
echo "<tr> \n";
echo "<td>".$field["id"]."</td> \n";
echo "<td>".$field["nombre"]."</td> \n";
echo "<td>".$field["direccion"]."</td> \n";
echo "<td>".$field["telefono"]."</td> \n";
echo "<td><a href='mailto:".$field["email"]."'>".$field["email"]."</a></td> \n";
echo "</tr> \n";
}
echo "<tr><td colspan=\"5\"><p><ahref=formulario.htm>Volver</p></td> </tr>\n";
echo "</table> \n";
} else {
print "si existe un error de mysql debe de aparecer descrito aqui :";
print "<br>";
print mysql_error();
print "<br>";
print "este error paso cuando preguntaste a mysql :";
print "<br>";
echo $sql;
echo "<p>¡No se ha encontrado ningún registro!</p>\n";
echo "<p><a href=formulario.htm>Volver</p> \n";
}
?>
Lo que me aparece es :
Debe especificar una cadena a buscar
Tenias razón, no pasas variables
Muchas gracias.

1 respuesta

Respuesta
1
Todo es aparentemente correcto. Revisa el paso de variables usando en el formulario el método GET en vez de POST. Tiene que aparecer la variable en la URL del navegador.
Prueba tu formulario con varios navegadores distintos.
Al poner Get si que veo en la barra de dirección lo siguiente:
http://localhost/buscadordebugeo.php?buscar=Juan
Pero en buscadordebugeo.php cuando pregunto if ($buscar == "") me dice que si, con lo cual me aparece:
Debe especificar una cadena a buscar
Tenias razón, no pasas variables
Con respecto a los navegadores, he probado con Netscape 4.5 e Internet Explorer 5 y obtengo el mismo resultado.
El paso de variables CGI en PHP es automático. No sé porque te funciona mal. Aparentemente es como si PHP no estuviera recogiendo bien las variables CGI. Haz una comprobación. Al principio del código PHP, pon:
print "buscar = $buscar\n<P>";
exit();
Así veremos si pasa o no la variable. Si no la pasara, prueba a llamara al php de la siguiente forma:
http://www.tudominio.com/buscadordebugeo.php?buscar=prueba
¿Te pasa la variable?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas