El sitio web funciona bien en línea, pero al ejecutarse en localhost muestra un índice y una variable indefinidos

tener un pánico aquí! El sitio web de mi disertación funciona bien en línea, pero una hora antes de enviarla descubrí que no funciona en un servidor local... dos o tres páginas siguen apareciendo con un índice o una variable indefinidos. ¿alguien podría ayudar? Aquí hay un recorte de un error: Aviso: índice indefinido: tablas en C:\Users..\Desktop\USBWebserver v3_en\root\SnysbArchive\Search.php en la línea 8

<?php
include 'UserFunction.php';
..html omitted..
//write connect function in here
include('Connect.php'); //Connects to database
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) 
{
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}
if (mysql_select_db($dbname, $conn))
{
?>
    <form method="post" action="SearchResults.php?go" id="searchform">
    In <select name="tables">
    <?php
    while ($row = mysql_fetch_row($result)) 
    {
    if ($row[0] != 'user_details' && $row[0] != 'request') 
    {
        echo '<option value="'.$row[0].'">'.$row[0].'</option>';
    }
    }
}
    ?>
    </select>
        Seach for: <input type="text" name="name"> 
    <input type="submit" name="submit" value="Search" />
</form>

<br>
<?php
$tbl=$_POST['tables'];
echo $tbl;
?>

no le gusta esta línea $tbl=$_POST['tables']; Gracias

preguntado el 22 de mayo de 12 a las 14:05

2 Respuestas

Su servidor local tiene el informe de errores configurado para ser más alto que en su servidor de producción. Esto hace que reciba mensajes de error para errores "menores", como avisos que no recibirá en su servidor de producción. Eso es bueno, ya que su servidor de producción no debería mostrar mensajes de error que pueden ser útiles para los piratas informáticos y su servidor local debería informarle. todo lo está haciendo mal, grande y pequeño, para que pueda construir su aplicación correctamente antes va en directo.

En tu caso $_POST['tables'] no está configurado y está siendo informado por su servidor local. Su servidor de producción también lo está detectando, pero debido a su configuración de informe de errores, no se le notifica (excepto probablemente en sus registros de errores).

ACTUALIZACIÓN

Para corregir su error, verifique si ese valor existe antes de asignarlo a una variable:

$tbl = (isset($_POST['tables'])) ? $_POST['tables'] : ''; 

contestado el 22 de mayo de 12 a las 14:05

Siempre podrías poner

error_reporting(E_ALL ^ E_NOTICE);

En la parte superior de la página, esto evitará que PHP se queje de las variables a las que se hace referencia pero que aún no existen.

Es mejor hacer lo que sugirió @john conde, mi sugerencia eliminará el error pero le permitirá codificar de manera descuidada. El código descuidado no es el mejor ...

contestado el 22 de mayo de 12 a las 14:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.