Ver Mensaje Individual
  #8 (permalink)  
Antiguo 14/07/2008, 10:22
Avatar de [NiRVaNa]
[NiRVaNa]
 
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años
Puntos: 6
Respuesta: POST se ejecuta al actualizar, ¿como lo evito?

Hola gente, de nuevo... Logre solucionar con una mezcla de consejos que encontre aca, haciendo un Header("Location: ....."); y pasando por el get el id del nuevo registro que se inserto, y asi lo verifico.

Peero, ahora tengo otro drama. Al hacer las pruebas localmente funciona todo perfecto. Pero cuando las subi a mi servidor (es un hosting de pago) me tira el error de que las cabeceras ya se han enviado. Sé que esto es porque ya se enviaron cabeceras HTML antes de que yo haga el Header("Location...").

Ahora bien, nose como podria solucionar esto, ya que hay un solo archivo en donde se cargan las porciones de codigo que hacen los inserts, updates, y deletes de la base de datos, y estos obviamente son archivos aparte, los cargo mediante include.

Entonces, como podria solucionar el tema de la redireccion? Porque por mas de que ponga el header() en el inicio de cada archivo, al momento de cargarse en el archivo principal ya se habran enviado algunas cabeceras html.

Les dejo mi codificacion para que vean como funciona...

Código PHP:
<?php
    
include("lib/class.upload.php");
    
$segundopaso false;
        
    if ((
$_POST['primero']) && (!$image_info)) {

        
/*Manejo para upload de imagenes, y guardar la direccion en la base de datos
        ...
        */
        
if ($_POST['name'] == "") die("Nombre es un campo requerido");
        
$sql "insert into products (nombre, foto, estado) values ('";
        
$sql .= $_POST['name']."', '";
        
$sql .= $image_info."', 'borrador')";
        if (
mysql_db_query($db$sql$link)) {
            
$idQ mysql_insert_id();
            
Header("Location: index.php?do=products&go=alta&segundo=true&id=".$idQ);
        } else {
            echo 
mysql_error();
        }
    } else if (
$_POST['segundo']) {
        if (
$_POST['pcontado'] == "" || $_POST['desc'] == "") die("Descripcion y Precio Contadon son campos requeridos");
        
        
$sql "update products set ";
        
$sql .= "descripcion = '".$_POST['desc']."', ";
        
$sql .= "precio_contado = ".$_POST['pcontado'].", ";
        if (
$_POST['cuatroc']) $sql .= "cuatro_cuotas = ".$_POST['cuatrocuotas'].", ";
        if (
$_POST['cincoc']) $sql .= "cinco_cuotas = ".$_POST['cincocuotas'].", ";
        if (
$_POST['ochoc']) $sql .= "ocho_cuotas = ".$_POST['ochocuotas'].", ";
        if (
$_POST['diezc']) $sql .= "diez_cuotas = ".$_POST['diezcuotas'].", ";
        if (
$_POST['docec']) $sql .= "doce_cuotas = ".$_POST['docecuotas'].", ";
        if (
$_POST['quincec']) $sql .= "quince_cuotas = ".$_POST['quincecuotas'].", ";
        
$sql .= "id_categories = ".$_POST['cat'].", ";
        
$sql .= "estado = 'activo' ";
        
$sql .= "where id = ".$_POST['idp'];
        
        if (
mysql_db_query($db$sql$link)) {
            
Header("Location: index.php?do=products&go=alta&ok=true"); //Es esto lo que me genera el error
        
} else {
            echo 
mysql_error();
        }
    }
?>
De no ser posible solucionar esto con header() que otra funcion puedo usar para el redireccionamiento que no sea javascript.

Gracias...