Problema con Header();

  • Autor Autor MicroPawn
  • Fecha de inicio Fecha de inicio

MicroPawn

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Hola tengo un problema, mi header no me redirige a ningún lado
editarusuario.php
PHP:
<div class="table-responsive border rounded p-1">
                      <table class="table" align="center" style="width:auto; height:20px;">
                        
                      
  <tr>
    <th>ID</th>
    <th >Usuario</th>
    <th >Password</th>
    <th>Créditos</th>
    <th >Activo</th>
    <th >Ban</th>
    <th >Acción</th>
  </tr>

  <tr>
    <?php
include("function.php");
$id = $_GET['id'];
select_id('usuarios','id',$id);

?>
    <form action="" method="post">

                    
                    
  <td><input type="text" value="<?php echo $row->id;?>" name="id" ></td> 
  <td><input type="text" value="<?php echo $row->usuario;?>" name="usuario"></td>
  <td><input type="text" value="<?php echo $row->password;?>" name="password"></td>
  <td><input type="text" value="<?php echo $row->creditos;?>" name="creditos"></td>
  <td><input type="text" value="<?php echo $row->activo;?>" name="activo"></td>
  <td><input type="text" value="<?php echo $row->baneado;?>" name="baneado"></td>
  <td><input type="submit" class="btn btn-success" name="enviar"></td>

</form>
 
  </tr>
 


</table>


   </div>
          
  </div>
          
<?php
 
  if(isset($_POST['enviar'])){
    $field = array("id"=>$_POST['id'], "usuario"=>$_POST['usuario'], "password"=>$_POST['password'], "creditos"=>$_POST['creditos'], "activo"=>$_POST['activo'], "baneado"=>$_POST['baneado']);
    $tbl = "usuarios";
    edit($tbl,$field,'id',$id);
    header("location:index.php");
  }
?>

function.php
Insertar CODE, HTML o PHP:
function edit($tblname,$form_data,$field_id,$id){ //Funcion para editar
    $sql = "UPDATE ".$tblname." SET ";
    $data = array();

    foreach($form_data as $column=>$value){

        $data[] =$column."="."'".$value."'";

    }
    $sql .= implode(',',$data);
    $sql.=" where ".$field_id." = ".$id."";
    return db_query($sql);
}


Trabaja y todo edita los registros pero al darle en submit no me funciona el header no me redirige a ningun lado
 
@MicroPawn Tienes que usarlo antes de mostrar algun código en pantalla, por lo tanto subelo arriba de tu html.
 
Probablemente es porque ya están las cabeceras.

Insertar CODE, HTML o PHP:
<?php
 
if(isset($_POST['enviar'])){
$field = array("id"=>$_POST['id'], "usuario"=>$_POST['usuario'], "password"=>$_POST['password'], "creditos"=>$_POST['creditos'], "activo"=>$_POST['activo'], "baneado"=>$_POST['baneado']);
$tbl = "usuarios";
edit($tbl,$field,'id',$id);
header("location:index.php");
}
?>

Esto colócalo arriba, no hasta abajo. También, cuando pases variables a la BD trata de filtrar la información.
 
muchas gracias a todos , ya intente de varias formas como me dijeron y sigue igual :/ lo unico que me funciono fue utilizar js. de la siguiente forma!


header("Location:index.php");
echo"<script language='javascript'>window.location='index.php'</script>;";
exit();

Que podría ser?

tomare en cuenta lo de filtrar!

@MicroPawn Tienes que usarlo antes de mostrar algun código en pantalla, por lo tanto subelo arriba de tu html.
 
Seguro tienes mas codigo arriba del header bro, asi tienes que trabajarlo.

HTML:
<?php
 
if(isset($_POST['enviar'])){
$field = array("id"=>$_POST['id'], "usuario"=>$_POST['usuario'], "password"=>$_POST['password'], "creditos"=>$_POST['creditos'], "activo"=>$_POST['activo'], "baneado"=>$_POST['baneado']);
$tbl = "usuarios";
edit($tbl,$field,'id',$id);
header("location:index.php");
}
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
 
Es probable que no llegue a la linea de: header("location:index.php");

y en la funcion --> edit($tbl,$field,'id',$id); pueda tener algun problema.
Tendras que comprobar la funcion 'edit' que pasen todos los parametros de modo correcto.
Yo es lo que haria depurar hasta el header
 
varios problemas:
El header debe ir antes de cualquier cosa
Si es una redirección no debe ir nada después
location es con la L mauúscula
después de los dos puntos va un espacio
debería ser así

<?php
if ( $alguna_condicion )
{
header( 'Location: index.php' ); // si es index.php tal vez debería ser Location: /
exit( 0 );
}

// resto del programa
 

Tampoco existe $_POST enviar.