Ver Mensaje Individual
  #8 (permalink)  
Antiguo 07/10/2003, 22:37
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
De todas maneras...

Bueno futilidad:

Antes te puse qu edeberías hacer una redirección, pero no te puse cómo hacerlo.

De todas maneras te pongo una posibilidad de hacer lo que pides sin utilizar cookies. Además algunos comentarios:

Código PHP:
<?php 
//comprueba si se ha pasado por la url  inicio.php?cargar=resultado
if ($_GET['cargar']=="resultado"){
    
//si existe, entonces quiere decir que ya se votó y que ya se procesó el voto.
    
echo "Gracias por votar";
}else{
    
//si no, se comprueba si se ha pasado por el formulario la variable $_POST['voto'] 
    
if (!$_POST['voto']) {
        
// en caso de no venir definida la variable $_POST['voto'] --->se escribe el formulario
        
echo "<form name=\"form1\" method=\"post\" action=\"post501187.php\">
          <p>&iquest;Que cancion te gustar&iacute;a cantar?</p>
          <p><input type=\"text\" name=\"artista\">Artista</p>
          <p><input type=\"text\" name=\"cancion\">Canci&oacute;n</p>
          <p>
            <input name=\"voto\" type=\"hidden\" value=\"1\">
            <input type=\"submit\" name=\"Submit\" value=\"Enviar\">
          </p>
        </form>"
;
    } else {
        
// en caso de venir definida la variable $_POST['voto'] también estarán definidas $_POST['artista'] y $_POST['cancion']
        
$artista strtolower($_POST['artista']); //cambiamos todo a minusculas
        
$cancion strtolower($_POST['cancion']); //cambiamos todo a minusculas
    
        
$host="localhost";
        
$user="tu_user";
        
$pass="tu_contraseña";
        
$db=mysql_connect($host,$user,$pass) or die ("Error durante la conexión a la base de datos");
        
$sql="INSERT INTO encuesta (artista,cancion) VALUES('".$artista."','".$cancion."')";
        
mysql_db_query("test",$sql,$db) or die (mysql_error());
        
mysql_close();
        
//destruimos la variable voto para evitar el recargar la pagina
        
unset ($voto);
        
//redireccionamos la misma página pero le mandamos (GET) la variable cargar=resultado para que no presente el formulario, sino las gracias.
        
header ("location: post501187.php?cargar=resultado");
    }
};
?>
Y bueno... al recargar la página (F5) ya no habrá problema...

Bueno... hay algunas cositas que creo que no tienes muy claras:

1.-) Si en tu formulario utilizas el método POST (que es lo más común), al recoger las variables, éstas son parte del array $_POST[] y no $_GET[] como estás utilizando tú.... si ves en el código que puse, yo utilizo $_GET[] al principio porque la variable $cargar se ha pasado por URL y no por formulario... El código te funciona porque da lo mismo que pongas $_POST['artista'] que simplemente $artista...
2.-) En las líneas que pones el comentario //recibimos la variable... creo que estás haciendo mal la asignación... "recibir" la variable no es necesario porque puedes utilizar directamente $_POST['artista'] para pasarla por strtolower() tal como puse arriba. Además, en todo caso sería $artista=$_GET y no $_GET=$artista porque el signo= asigna a la variable de la izquierda el valor del de la derecha...

Bueno... nada más... Puedes encontrar harta información sobre por qué utilizar el array $_POST['artista'] o $_GET['artista'] en lugar de simplemente $artista (aunque funcione)... busca en las FAQ's... De hecho casi todo lo que te puse ya está en algún lugar del foro... También puede resultar más práctico utilizar sesiones, pero quise seguir la línea de lo que publicaste porque creo que es más básico y de hecho puede ser didáctico...

saludos