Debe especificar una cadena a bucar

Tona
09 de Noviembre del 2003
Segui el tutorial de PHP y MySQL y en la parte donde se hace una consulta no me registra la vaiable, la form es:
<html>
<head>
<title>Title here!</title>
</head>
<body>
<form method="POST" action="http://cassual.com/php/buscador.php3">
<strong>Nombre o Apellido:</strong>
<input name="T1" type="text" size="20">
<br><br>
<input type="submit" value="Buscar" name="buscar">
</form>
</body>
</html>
y el php es:
<html>
<head>
<title>Title here!</title>
</head>
<body>
<?php
if (!isset($nombre)){
echo "Debe especificar una cadena a bucar";
echo "</html></body> n";
exit;
}
$link = mysql_connect("localhost", "tona");
mysql_select_db("test", $link);
$result = mysql_query("SELECT * FROM directorio WHERE nombre LIKE '%$buscar%' or apellido like '%$buscar%' ORDER BY nombre", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> n";
//Mostramos los nombres de las tablas
echo "<tr> n";
while ($field = mysql_fetch_field($result)){
echo "<td>$field->name</td> n";
}
echo "</tr> n";
do {
echo "<tr> n";
echo "<td>".$row["nombre"]."</td> n";
echo "<td>".$row["apellido"]."</td> n";
echo "<td>".$row["tel_of"]."</td> n";
echo "<td>".$row["tel_casa"]."</td> n";
echo "<td><a href='mailto:".$row["email"]."'>".$row["email"]."</a></td> n";
echo "</tr> n";
} while ($row = mysql_fetch_array($result));
echo "</table> n";
} else {
echo "¡ No se ha encontrado ningún registro !";
}

?>
</body>
</html>

Henry
09 de Noviembre del 2003
para evitarte dolores de cabeza con la querys usa esta funcion anda muy bien, en especial cuando debes pasar una gran cantidad de campos de formulario.
function Inf_error(){
echo "Error:".mysql_errno()."; descripcion del error: ".mysql_error()."<br>n";
}

para llamarla:

if($result=mysql_query($sql,$link}
}
else{
inf_error();
}
Salu2 a to2

donbrux
09 de Noviembre del 2003
Te sugiero que depures la query, de la siguiente forma:
1.- Crea la consulta sql en una variable, asi:
$Sql = "SELECT * FROM directorio WHERE nombre LIKE '%$buscar%' or apellido like '%$buscar%' ORDER BY nombre";

2.- Luego de esto inserta :
echo "<br>SQL :<b>$Sql</b><br>";

3.- Ejecuta el script, copia el resultado y pruebalo en algun analizador de consultas

4.- SQL te dara el error mas claro..

:)

Tona
09 de Noviembre del 2003
Gracias pero...

El problema es des la primera linea del PHP:
if (!isset($nombre)){
echo "Debe especificar una cadena a bucar";
echo "</html></body> n";
exit;
}
............Que la forma no envio el contenido de la busqueda y por eso me manda el mensaje de que no he especificado una cadena en buscar, y ya probe quitandole este "if" y entonces no importa lo que especifique, me da el resultado del contenido de toda la tabla, como si la busqueda fuera de todos, por eso se que o no esta enviando o no esta recibiendo el contenido de la busqueda.
Gracias

Henry
09 de Noviembre del 2003
Hola Tona, he tenido el mismo problema.

Configuré 2 servidores distinos para probar.

En un servidor apache sobre linux no tengo problemas pero en un IIS 5 sobre Win 2000 no pasa las variables del formulario al archivo indicado en ACTION.

La verdad es que no sé porque sirve en uno y en el tro no. Sospecho que es debido a configuración.

De hecho me pasa que en el servidor que tengo sobre Win no me reconoce la variable PHP_SELF, y vaya usted a saber que otros problemas tenga.

Soy nuevo en esto y estoy tratando de aprender por mí mismo pero no me caería nada mal una mano con este problema.

Mientras tanto voy a seguir leyendo a ver si en otros post encuentro algo.

Saludos,

HD

Henry
09 de Noviembre del 2003
Tadaaaaaa!!!

Ha sido fácil encontrar la solución.

Aunque se recomienda programar los scripts de tal manera que no sea necesario activar esta opicón, lo cierto es que el ejemplo del que hablas no se ejecuta a menos que especifiques en el php.ini lo sigueinte:

register_globals = on


Saludos,

HD


gaby sapien
09 de Noviembre del 2003
cuando trabajas con sesiones, debes de poner:

session_start();

al inicio de cada pagina atraves del sitio (en todas las paginas), asi, $_SESSION['nombredesesion'] siempre estará existente....

tu problema con el isset
es que no reconoce si esta o no creada.

<?php
session_start();
?>