Ver Mensaje Individual
  #11 (permalink)  
Antiguo 06/02/2003, 12:52
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sobre htmlspecialchars() .. lo debes de usar en el momento que presentas HTML en tu foro o bien lo guardas "limpio de html" cuando insertes tu dato en tu Base de dtos campo q corresponda al mensaje (en realidad todos deberian ser)

Lo de la recarga se produce porque trabajas la parte q presenta eso datos y la q lo gestiona en la misma página .. Por eso el navegador te pide confirmación para reenviar los dtos nuevamente y por eso mismo tu lógica detecta los mismos datos .. Eso sumado a campos autoincrementales en las BD ocasiona ese efecto ..

La forma de solucionarlo (por lo menos la mas efectiva q uso yo) es redireccionando (aunque sea a la misma página) al terminar los procesos de INSERT/DELETE/UPDATE de tu Base de dato

Esto lo haces via:

header("Location: comosellametupagina.php");
exit;

(o puedes usar $_SERVER['PHP_SELF'] .. si quieres para obtner el nombre de la página en curso..)

Si lo usas en tu código tal cual está te va a dar un error aceca de las cabeceras ..

Esta parte de cabeceras HTML
<html>
<head>
<title> The Internet Joke Database </title>
</head>
<body>

no debe estar ahi .. solo debe de mostrarse cuando vallas a mostrar datos en el navegador .. En tu caso es cuando se usa el formulario .. o se muestra el SELCT q tienes por ahí .. Te recomiendo q pongas eso en una funcion .. y lo llames cuando sea necesario ... Lo mismo para el píe de página . aunque podría quedarse ahí ..

Los mensajes de error o como fué el proceso NO deberias mostrarlo ahí .. en ese punto (usando header() ) ..sino mandar alguna variable de control a "si mismo" (a la misma página) ejemplo:

Código PHP:
if(...){
  
// caso error
      
header("location: comosellametupagina.php?error=codigotuyo");
      exit;
} else {
  
// caso error
      
header("location: comosellametupagina.php?ok=codigotuyo");
      exit;

y en tu código principal .. usar algun condicional tipo:

Código PHP:
if (isset($_GET['error'])){
echo 
"hay un error  .. codigo".$_GET['error'];
}

if (isset(
$_GET['ok'])){
echo 
"Todo bien .. codigo".$_GET['error'];

Es decir .. Si hay alguna de estas variables error o OK .. se muestra el mensaje deacuerdo con la accion .. He de ahí ese "codigo" .. puedes emplear lo q quieras .. Lo mas funcional suele ser usar un array con tus mensajes de errror o OK .. y usar ese "codigo" como un indice del array .. $mensajes[$error] .. etc ..

Un saludo,