¿Problema con variables?

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:

xSkArx

Dseda
Programador
Desde
25 Dic 2013
Mensajes
1.067
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
 
R

RemPro

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>
 

Feddy

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Dic 2013
Mensajes
373
Edad
34
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>
 
R

RemPro

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 :(
 

dogo

Zeta
Marketing
Desde
17 Ene 2014
Mensajes
1.511
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
 
Arriba