0

estoy haciendo una búsqueda en PHP y me sale Notice: Undefined index:str NO se como resolverlo por que ya lo tengo llamado desde el formulario donde obtengo la información.

Dejo el código de búsqueda.

<form method="get" action="index.php" name="searchform" id="searchform">
<input type="text" name="str" id="str">
<input type="submit" name="submit" id="submit" value="Search">
</form>
<?php

$user = "root"; 
$password = ""; 
$host = "localhost"; 
$dbase = "employees_assign"; 
$table = "tbl_employees";
$str;

$search_term= $_GET['str'];

mysqli_connect($host,$user,$password); 
@mysqli_select_db($dbase) or die("Unable to select database");

if(empty($search_term))
{
echo ("");
}
else
{

$result1= mysqli_query( "SELECT * FROM $table WHERE emp_fname LIKE '%$search_term%") 
or die("SELECT Error: ".mysqli_error()); 




$count= mysqli_num_rows($result1);

if ($count == 0)
{
echo "<fieldset><b>No Results Found for Search Query '$search_term'</b></fieldset>";
}
else
{
print "<table border=1>\n"; 
while ($row = mysqli_fetch_array($result1)){ 

$emp_fname= $row['emp_fname'];
$emp_lname= $row['emp_lname'];
print "<tr>\n"; 

print "</td>\n";
print "\t<td>\n"; 
print "<font face=arial size=4/><div align=center>$emp_fname</div></font>"; 
print "</td>\n";
print "\t<td>\n"; 
echo "<font face=arial size=4/>$emp_lname</font>";
print "</td>\n";
print "</tr>\n"; 
} 

print "</table>\n"; 
}
}
?> 

También tengo un código que me imprime los detalles y me sale error, Agradezco la ayuda soy nueva en PHP así que no me den tan duro.

<div id="content">
    details view.
    <?php



    //echo '<li><a href="index.php?id='.$emp['emp_id'].'">'.$emp['emp_fname'].' '.$emp['emp_lname'].'</a></li>'


    ?>
    </div>

Muchisisimas Gracias!

Jose Javier Segura
  • 1,638
  • 1
  • 14
  • 25
Bella
  • 333
  • 1
  • 2
  • 11
  • 1
    El error indica que estás intentado acceder a un indice de una array que no existe. Por ejemplo, si en un array de 3 posiciones `array[2]` intanteses acceder a la cuarta posición `array[3]`. En que línea te marca el error? – Flowen Oct 19 '17 at 07:24
  • 1
    Al parecer el formulario no se está enviado. ¿Puedes mostrar el código a través del cual envías los datos del formulario al servidor? Imagino que lo haces mediante Ajax. – A. Cedano Oct 19 '17 at 09:01
  • 1
    Te recomiendo que leas sobre [inyección SQL](https://es.stackoverflow.com/q/10518/250) y [cómo evitarla en PHP](https://es.stackoverflow.com/q/18232/250). También te recomiendo que leas estas dos preguntas sobre XSS ([1](https://es.stackoverflow.com/q/53591/250) y [2](https://es.stackoverflow.com/q/82068/250)). El código que compartes presenta vulnerabilidades graves de seguridad, puede sufrir esos dos tipos de ataques y no debería usarse en un entorno de producción. – Alvaro Montoro Oct 19 '17 at 12:35
  • Ya que te estás iniciando en PHP intenta acostumbrarte desde el principio a no mezclar proceso de datos con presentación. En tu caso estás mezclando html y PHP. Aunque históricamente se ha hecho así es una mala práctica. Echa un vistazo por internet sobre MVC (modelo vista controlador) y buenas prácticas de php – Jakala May 19 '19 at 15:00

2 Answers2

0

Tu error esta en esta parte de tu código donde intentas acceder al indice 'str' del arreglo GET pero este aún no existe porque el formulario no ha sido enviado, te recomiendo que lo cambies por esto

//Esto es para que te guies donde está el error
$user = "root"; 
$password = ""; 
$host = "localhost"; 
$dbase = "employees_assign"; 
$table = "tbl_employees";
$str;

//Asi lo tenias
$search_term= $_GET['str'];

//Te recomiendo que lo pongas así, de esta manera te aseguras que tenga el valor correcto solo
//cuando existe ese índice en el arreglo $_GET
$search_term = isset($_GET['str']) ? $_GET['str'] : '';
0

Valida con isset() que recibas $_GET['str'].

$search_term= isset($_GET['str']) ? $_GET['str'] : '';
DevMind
  • 5,025
  • 11
  • 29
  • 60
Sergio Cauich
  • 1,527
  • 6
  • 8