Foros del Web » Programando para Internet » PHP »

Notice: Undefined index: fecha in c:\archivos de programa\easyphp1-8\www\noticias.php

Estas en el tema de Notice: Undefined index: fecha in c:\archivos de programa\easyphp1-8\www\noticias.php en el foro de PHP en Foros del Web. Buenas soy un supernovato en php, pero poco a poco he ido creando una pagina, pero he encontrado el siguiente error con el que llevo ...
  #1 (permalink)  
Antiguo 28/08/2006, 13:22
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Notice: Undefined index: fecha in c:\archivos de programa\easyphp1-8\www\noticias.php

Buenas soy un supernovato en php, pero poco a poco he ido creando una pagina, pero he encontrado el siguiente error con el que llevo tres dias y no he conseguido quitarlo:

Notice: Undefined index: fecha in c:\archivos de programa\easyphp1-8\www\noticias.php on line 20

He probado con if(isset) cambiando las register globals, pero no se si lo hago bien o es otro error, el caso es que tengo que entregar la practica y no se donde piillarla

Os adjunto el codigo por si me podeis echar una mano:


<?php
session_start();
if (!$_SESSION['usuario']|!$_SESSION['passw'])
{
die ("Usuario no válido");
}
?>
<html>
<head>
<body bgcolor="#FFFFFF">

<title> Noticias </title>

<?php
// ****************** NOTICIAS.PHP ***********************

// recoge la fecha enviada por el mismo cuando se pide un
// dia concreto

$fecha_enviada = $_POST["fecha"];
$idseccion = $_GET["seccion"];


// si en vez de ser llamda por portada la llamada se hace desde
// ella misma este campo será igual a cero
if ($idseccion == 0)
{
// entonces recogera la seccion que la ha llamado
$idseccion = $_POST["seccion_actual"];
}

$con = mysql_connect ("localhost","root","")
or die ("No conexion bd");

$resp = mysql_select_db("dbpract2ro")
or die ("No conexion");

// escoge el nombre, decripcion y color de la seccion

$sqlquery_2 = "SELECT * FROM secciones WHERE idsecciones= $idseccion;";
$queryresult_2 = mysql_query ($sqlquery_2)
or die ("Error");
if ($row = mysql_fetch_array ($queryresult_2))
{
$nombre = $row["nombre"];
$descripcion = $row["descripcion"];

}

?>

<style type="text/css">
<!--

-->
</style></head>

<body bgcolor="<?php echo $color; ?>">
<font size = 5 face = "times new roman" color = "#00000" >
<br><br>
<a name="ARRIBA"></a>

<?
//
echo " <br><br><br><br> ";
echo "<CENTER><FONT size= 10 color = #00000><STRONG> " .$nombre ."</STRONG></FONT></CENTER>";
echo " <br> ";
echo "<CENTER><FONT size= 5 color = #00000><EM> " .$descripcion ."</EM></FONT></CENTER>";
echo " <br><br> ";


// porcion de codigo que introduce las imagenes dependiendo
// del tipo de seccion que se solicite
// el problema de este fragmento de codigo es que
// no es totalmente dinámico. se podría implementar una mejora
// en las tablas añadiendo un campo imagen que contenga el nombre
// de esta

if ($idseccion == 3)
{ // si se trata de internacional
echo "<CENTER><IMG src=\"world.jpg\" width = 30% height = 30%></CENTER>";
echo "<br><br>";
}
else if ($idseccion == 4)
{ // si se trata de nacional
echo "<CENTER><IMG src=\"spain.jpg\" width = 30% height = 30%></CENTER>";
echo "<br><br>";
}
else if ($idseccion == 5)
{ // si se trata de local
echo "<CENTER><IMG src=\"cervantes.jpg\" ></CENTER>";
echo "<br><br>";
}
else if ($idseccion == 6)
{ // si se trata de sociedad
echo "<CENTER><IMG src=\"sociedad.jpg\" ></CENTER>";
echo "<br><br>";
}
else if ($idseccion == 7)
{ // si se trata de europa
echo "<CENTER><IMG src=\"WORLD.jpg\" width = 30% height = 30%></CENTER>";
echo "<br><br>";
}

//enlace hacia la etiqueta abajo definida al final del documento
echo "<CENTER><a href=\"#ABAJO\"><FONT size=5 color=#99000><EM>Ir abajo</EM></FONT></a></CENTER>";
echo "<br><br>";

// consultas sobre la base de datos

$sqlquery = "SELECT * FROM noticias WHERE idsecciones = $idseccion ORDER BY idprioridad;";

$queryresult = mysql_query ($sqlquery)
or die ("Error");

if ($fecha_enviada == 0)
{
// si la llamada a este script se realiza desde la portada (portada.php)
// no se pasa ningun parametro de fecha. Lo que se hace es cargar en esta variable
// la fecha del dia para que imprima las noticias del dia

$fecha_enviada = Date ("Y-m-d");
echo "<CENTER><FONT size= 6 color = #00000><STRONG> Noticias de hoy </STRONG></FONT></CENTER>";
}
else
{
echo "<CENTER><FONT size= 6 color = #00000><STRONG> Noticias del dia " .$fecha_enviada ."</STRONG></FONT></CENTER>";
}

$contador = 0;
echo "<br>";

while ($row = mysql_fetch_array ($queryresult))
{
$idsecciones = $row["idsecciones"];
$idprioridad = $row["idprioridad"];
$titulo = $row["titulo"];
$texto = $row["texto"];
$resumen = $row["resumen"];
$fecha = $row["fecha"];
$adicional = $row["adicional"];

if ($fecha_enviada == $fecha)
{
echo " <br>";
echo "<CENTER><TABLE width=800 border=2 cellspacing=2>";
echo "<TR><TD><FONT size = 5 color = #00000> ". $titulo . " </FONT></TD></TR>";
//echo " <br>";
echo "<TR><TD><FONT size = 4 color = #00000> ". $resumen ." </FONT></TD></TR>";
//echo " <br>";
echo "<TR><TD><FONT size = 3 color = #00000> ". $texto . " </FONT></TD></TR>";
//echo " <br>";
echo "</TABLE></CENTER>";
$contador = 1;
}

}
if ($contador == 0) // si contador se matiene a cero no existe en la tabla ninguna entrada para ese dia
{
echo "<CENTER> NO HAY NOTICIAS DISPONIBLES PARA LA FECHA DE HOY </CENTER>";
}

?>

<br><br>
<CENTER><FONT size = 5 color = "#99000" face = "courier sans MS">(introducir en formato aaaa-mm-dd)</FONT></CENTER>
<CENTER>
<form action = "noticias.php" method="POST">
<input type = "text" name = "fecha">
<input type = "submit" name = "noticias locales">
<input type = "hidden" name = "seccion_actual" value ="<?php echo $idseccion ?>" >
</form></CENTER>

<br><br>
<CENTER><a href="portada.php"><FONT size=4 color=#99000>PORTADA</FONT></a></CENTER>
<br>

<?php

// codigo php que crea los enlaces a las secciones hijas
// si no hay secciones hijas no ocurre ningun evento

$sqlquery = "SELECT * FROM secciones WHERE idpadre = $idseccion ORDER BY idsecciones;";

$queryresult = mysql_query ($sqlquery)
or die ("Error");

while ($row = mysql_fetch_array ($queryresult))
{
$nombre_hijo = $row["nombre"];
$idsecciones = $row["idsecciones"];

print (" <CENTER><a href=\"noticias.php?seccion=$idsecciones\"><FONT size=4 color=#99000>$nombre_hijo</FONT></a></CENTER>");

}

?>


<a name="ABAJO"></a>
<br><br><br><br>
<CENTER><a href="#ARRIBA"><FONT size=5 color=#99000><EM>volver arriba</EM></FONT></a></CENTER>
<br><br>

</body>
</html>



MUCHISIMAS GRACIAS
  #2 (permalink)  
Antiguo 28/08/2006, 13:38
Avatar de DjFaramir  
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 2 meses
Puntos: 0
Cita:
if(isset($_POST["fecha"])){
$fecha_enviada = $_POST["fecha"];
}
$idseccion = $_GET["seccion"];
quizas asi?
__________________
See you... y Tolkien... mucho Tolkien...
  #3 (permalink)  
Antiguo 28/08/2006, 14:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Gracias DjFaramir por la contestación, ya habia probado algo parecido, tras modificarlo ahora me aparece el siguiente error:


Notice: Undefined variable: fecha_enviada in c:\archivos de programa\easyphp1-8\www\noticias.php on line 118


TE adjunto la linea 118:

if ($fecha_enviada == 0)

Gracias anticipidas
  #4 (permalink)  
Antiguo 28/08/2006, 14:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Los mensajes que tienes te avisan de que tal variable no está declarada ... (con o sin valor .. el caso es "declarada" ..)

Cuando usas las variables (arrays) superglobales como $_POST .. etc .. en scritpt's que hacen vários procesos (como tu caso) .. en algún momento no existen (no están definidas) normalmente en el estado inicial (al partir con tu script).

Es necesario hacer chequeos tipo "si existe tal variable .. .la uso" con isset() minimo

Cita:
if (isset($_POST['variable'])){

// uso $_POST['variable']

// etc código.

}
Y así con todas . .o bajo && en el IF ..

También podrías ajustar el tipo de mensaje de error que PHP arroja a un nivel más bajo (para que no haga "NOTICE"):
www.php.net/error_reporing

Esto no es la solucióna tus problemas en el aspecto de que "ocultar" un mensaje de error no quiere decir que tu error no siga existiendo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 28/08/2006, 14:36
Avatar de DjFaramir  
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 2 meses
Puntos: 0
le puede agregar un else al isset... y en el caso de que no exista la defines en 0... para asegurarte la existencia inicial para el resto de la pagina...
__________________
See you... y Tolkien... mucho Tolkien...
  #6 (permalink)  
Antiguo 28/08/2006, 14:38
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Parece qie desabilitando error_reporting me ha funcionado
De momento

Muchas gracias a todos
  #7 (permalink)  
Antiguo 28/08/2006, 15:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Como ya te han dicho, eso no es solucionar nada, tan sólo tapar los errores para que no suelten un error.
Es buena costumbre inicializar las variables, otra opción es añadir un valor por defecto, del estilo a:

$año = isset($_POST['año']) ? $_POST['año'] : '1981';

de modo que si no esta seteada la variable en cuestión se asigne el segundo valor a la variable $año, y si está seteada, el valor de $_POST['año']
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:02.