¿Problema con variables?

  • Autor Autor RemPro
  • Fecha de inicio Fecha de inicio
R

RemPro

Betas!.
Tengo este código (hace referencia a una búsqueda de libros en una base de datos:

Insertar CODE, HTML o PHP:
if (!$tipobusqueda || !$terminobusqueda)
	{
		echo "No has introducido los detalles de la búsqueda";
		exit;
	}

El error que me aparece es:
Insertar CODE, HTML o PHP:
Notice: Undefined variable: terminobusqueda in ....\resultadostuto.php on line 9

Notice: Undefined variable: tipobusqueda in ....\resultadostuto.php on line 10

Y el formulario al que hace referencia es:
Insertar CODE, HTML o PHP:
<form action="http://forobeta.com/resultadostuto.php" method="post">
	Elige tipo de búsqueda:<br>
	<select name="tipobusqueda">
		<option value="autor">Autor
		<option value="titulo">Título
		<option value="isbn">ISBN
	</select>
	<br>
	Escribe término de búsqueda:<br>
	<input name="terminobusqueda" type=text>
	<br>
	<input type=submit value="Buscar">
</form>

¿Alguna idea de dónde está el error? :O
 
Última edición por un moderador:
trata de recibir las variables con $_POST 😀
 
trata de recibir las variables con $_POST 😀

Probé de escribir:
Insertar CODE, HTML o PHP:
$_POST=terminobusqueda;
$_POST=tipobusqueda;

y me sale el error:
Insertar CODE, HTML o PHP:
$_POST=terminobusqueda;
$_POST=tipobusqueda;

🙁
 
Primero cambia esto

<input type=submit value="Buscar">

Por esto

<input type="submit" name="buscar" value="Bucar">

El error te sale porque las variables no estan definidas y/o no estan validadas para eso haz esto

$termimobusqueda=isset($_POST['terminobusqueda'])?$_POST['terminobusqueda']:false;
$tipobusqueda=isset($_POST['tipobusqueda'])?$_POST['tipobusqueda']:false;
if( isset($_POST['buscar']) ){
if(!$terminobusqueda || !$tipobusqueda){
echo "blablabla";
}
}

Prueba y.dime como.teva
 
Primero cambia esto

<input type=submit value="Buscar">

Por esto

<input type="submit" name="buscar" value="Bucar">

El error te sale porque las variables no estan definidas y/o no estan validadas para eso haz esto

$termimobusqueda=isset($_POST['terminobusqueda'])?$_POST['terminobusqueda']:false;
$tipobusqueda=isset($_POST['tipobusqueda'])?$_POST['tipobusqueda']:false;
if( isset($_POST['buscar']) ){
if(!$terminobusqueda || !$tipobusqueda){
echo "blablabla";
}
}

Prueba y.dime como.teva

Gracias, lo intentaré!, pero eso va todo junto antes de mi código??

---------- Post agregado el 24-mar-2014 hora: 22:02 ----------

Quizás sea más fácil si dejo el código completo:

Formulario de búsqueda:
Insertar CODE, HTML o PHP:
<form action="resultadostuto.php" method="post">
	Elige tipo de búsqueda:<br>
	<select name="tipobusqueda">
		<option value="autor">Autor
		<option value="titulo">Título
		<option value="isbn">ISBN
	</select>
	<br>
	Escribe término de búsqueda:<br>
	<input name="terminobusqueda" type=text>
	<br>
	<input type="submit" name="buscar" value="Bucar">
</form>

Resultados:
Insertar CODE, HTML o PHP:
<html>
<head>
	<title>Resultados de búsqueda:</title>
</head>
<body>
<h1>Resultado de búsqueda:</h1>

<?php

trim($terminobusqueda);
if (!$tipobusqueda || !$terminobusqueda)
	{
		echo "No has introducido los detalles de la búsqueda";
		exit;
	}
$tipobusqueda = addslashes($tipobusqueda);
$terminobusqueda = addslashes($terminobusqueda);
@ $db=mysql_pconnect ("localhost","nombreUsuario","contraseña");
	if(!$db)
	{
		echo "Error: No se ha podido conectar a la Base de Datos";
		exit;
	}
mysql_select_db("libreria");
$consulta ="select * from libros where ".$tipobusqueda." like '%".terminobusqueda."%'";
$resultado=mysql_query($consulta);
$num_resultados=mysql_num_rows($resultado);
echo "<p>Número de libros encontrados: ".$num_resultados."</p>";
for ($i=0; $i<num_resultado;$i++)
{
	$row=mysql_fetch_array($resultado);
	echo "<p><strong>".($i+1).". Título: ";
	echo stripslashes($row["titulo"]);
	echo "</strong><br>Autor: ";
	echo stripslashes($row["autor"]);
	echo "<br>ISBN: ";
	echo stripslashes($row["isbn"]);
	echo "<br>Precio: ";
	echo stripslashes($row["precio"]);
	echo "</p>";
	
}
?>

</body>
</html>
 
Lo escribiste vos esto? estas enviando un formulario con POST pero en el resultados no estas usando las variables que envias...

Algo asi seria el arreglo:
<html>
<head>
<title>Resultados de búsqueda:</title>

<script type="text/javascript">
<!--
var _gaq = _gaq || [];

_gaq.push(['_setAccount', 'UA-2125042-35']);

_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//-->
</script>
</head>
<body>
<h1>Resultado de búsqueda:</h1>

<?php

trim($_POST['terminobusqueda']);
if (!$_POST['tipobusqueda'] || !$_POST['terminobusqueda'])

{
echo "No has introducido los detalles de la búsqueda";
exit;
}


$tipobusqueda = addslashes($_POST['tipobusqueda']);
$terminobusqueda = addslashes($_POST['terminobusqueda']);


@ $db=mysql_pconnect ("localhost","nombreUsuario","contraseña");
if(!$db)
{
echo "Error: No se ha podido conectar a la Base de Datos";
exit;
}
mysql_select_db("libreria");
$consulta ="select * from libros where ".$tipobusqueda." like '%".terminobusqueda."%'";
$resultado=mysql_query($consulta);
$num_resultados=mysql_num_rows($resultado);
echo "<p>Número de libros encontrados: ".$num_resultados."</p>";
for ($i=0; $i<num_resultado;$i++)
{
$row=mysql_fetch_array($resultado);
echo "<p><strong>".($i+1).". Título: ";
echo stripslashes($row["titulo"]);
echo "</strong><br>Autor: ";
echo stripslashes($row["autor"]);
echo "<br>ISBN: ";
echo stripslashes($row["isbn"]);
echo "<br>Precio: ";
echo stripslashes($row["precio"]);
echo "</p>";

}
?>

</body>
</html>
 
Lo escribiste vos esto? estas enviando un formulario con POST pero en el resultados no estas usando las variables que envias...

Lo copié exactamente de un tuto. Lo raro es que al del tuto le funcionó XD
Hice lo que me dijiste. Me dió este error:
Insertar CODE, HTML o PHP:
Notice: Use of undefined constant terminobusqueda - assumed 'terminobusqueda' in C:/......resultadostuto.php on line 44
Número de libros encontrados: 0


Notice: Use of undefined constant num_resultado - assumed 'num_resultado' in C:/....resultadostuto.php on line 48

El código completo es el siguiente XD
Insertar CODE, HTML o PHP:
<html>
<head>
<title>Resultados de búsqueda:</title>

<script type="text/javascript">
<!--
var _gaq = _gaq || [];

_gaq.push(['_setAccount', 'UA-2125042-35']);

_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//-->
</script>

					<script type="text/javascript">
					<!--
						var _gaq = _gaq || [];

						_gaq.push(['_setAccount', 'UA-2125042-35']);

_gaq.push(['_trackPageview']);
						
						(function() {
							var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
							ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
							var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
						})();
					//-->
					</script>
				</head>
<body>
<h1>Resultado de búsqueda:</h1>

<?php

trim($_POST['terminobusqueda']);
if (!$_POST['tipobusqueda'] || !$_POST['terminobusqueda'])
{
echo "No has introducido los detalles de la búsqueda";
exit;
}


$tipobusqueda = addslashes($_POST['tipobusqueda']);
$terminobusqueda = addslashes($_POST['terminobusqueda']);

@ $db=mysql_pconnect ("localhost","root","");
if(!$db)
{
echo "Error: No se ha podido conectar a la Base de Datos";
exit;
}
mysql_select_db("libreria");
$consulta ="select * from libros where ".$tipobusqueda." like '%".terminobusqueda."%'";
$resultado=mysql_query($consulta);
$num_resultados=mysql_num_rows($resultado);
echo "<p>Número de libros encontrados: ".$num_resultados."</p>";
for ($i=0; $i<num_resultado;$i++)
{
$row=mysql_fetch_array($resultado);
echo "<p><strong>".($i+1).". Título: ";
echo stripslashes($row["titulo"]);
echo "</strong><br>Autor: ";
echo stripslashes($row["autor"]);
echo "<br>ISBN: ";
echo stripslashes($row["isbn"]);
echo "<br>Precio: ";
echo stripslashes($row["precio"]);
echo "</p>";

}
?>

</body>
</html>

Disculpa por preguntar tanto XD es que necesito terminar el sitio cuanto antes 🙁
 
Te tira esa error porque cuando haces la llamada a la base de datos usas variables que no existen es decir: $terminobusqueda y $tipobusqueda.

Cómo te dijeron tenes que almacenar las variables que envias por $_POST desde el form.

$tipobusqueda = $_POST["tipobusqueda"];
$terminobusqueda = $_POST["terminobusqueda"];

Si queres podes usar directamente las varibles $_POST en la llamada, pero no es seguro que ya que te pueden meter una inyección a la base, por eso tenes que filtrar lo que pasa por $_POST antes de actuar sobre la base de datos, esto es muy importante
 
Atrás
Arriba