Problema com variáveis?

  • Autor Autor RemPro
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
R

RemPro

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

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

El error que me aparece es:
Inserir CODE, HTML ou 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:
Inserir CODE, HTML ou 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 edição por um moderador:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
trata de recibir las variables con $_POST 😀
 
trata de recibir las variables con $_POST 😀

Probé de escribir:
Inserir CODE, HTML ou PHP:
$_POST=terminobusqueda;
$_POST=tipobusqueda;

y me sale el error:
Inserir CODE, HTML ou 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:
Inserir CODE, HTML ou 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:
Inserir CODE, HTML ou 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:
Inserir CODE, HTML ou 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
Inserir CODE, HTML ou 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
 
Voltar
Topo