Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá bom dia amigos do Imasters, gostaria de uma ajudinha se possível, estou com um problema aqui eu tenho um cadastro com CRUD funcionando aqui, quando excluo um item de uma tabela eu gostaria que o header location me retornasse para a mesma página que eu estava, fiz a condição, porém está pegando id da maneira errada no header location, confiram o código abaixo, desde já obrigado!
Segue o código que executa o delete, e retorna á pagina anterior:
<?php
ob_start();
include("../../conexao/bd.php");
$id = $_GET['valorid'];
$query = "UPDATE `clientes` SET `procedimento11`='',`valor11`='',`obs11`=''";
if($mysqli->query($query)){
header("Location:../../procedimentos/teste.php?id=".$id);
}
?>
o que acontece é isso:
localhost/processo/paginas/procedimento/teste.php?id=%3C?php%20echo%2047;%20?%3E
ele manda com o ID correto porém com esses caracteres %3C?php%20echo% o 47 é o id correto da minha tabela, mas gostaria de saber como mandar o ID sem esses caracteres para ele voltar corretamente para a mesma página q eu estavaAcredito que o seu problema deve ser estar relacionado ao uso de header com o ob_start.
header envia informações para o browser (antes de qualquer outro output).
ob_start inicia o buffer e evita que qualquer dado seja enviado para o navegador, inclusive o header.
olá, não resolve, retirei o ob_start, reiniciei sistema, e nada resolve os caracteres insistem em permanecer
Caro amigo
Rodrigo
Tenta utilizar assim:
<?php
if(isset($_POST['executar']) && $_POST['executar'] == 'Finalizar'){
sleep(1);
$meta = '<meta http-equiv="refresh" content="2, URL=painel.php?exe=procedimentos/cadastro&cadId='.$cadId.'" />';
echo $meta;
}
?>
Caso tenha ajudado, poste um OK.
Abraços,
Renato
Olá Renato aí piorou aparece mais caracteres :
deleta11.php?%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20valorid=<?php%20echo%2047;%20?>
Não tem nada de diferente no arquivo "bd.php"? tipo outro "ob_start"; caso tenha, tente remover também.
não tem ob_start na conexão ela está ok, faz o CRUD normal, funciona blza somente o problema do header location q n funciona direito, ele manda o id com aquela porrada de caracteres %3C?php%20echo% .
Parece que isso está vindo da variável "$_GET['valorid']", comente a função "header", dê um "var_dump" nessa variável e veja o que aparece, dessa forma:
var_dump($_GET['valorid']);
// header("Location: ../../procedimentos/teste.php?id=".$id);aparece string(17) ""
Estranho isso, já tentou com "sprintf"?
header(sprintf("Location: ../../procedimentos/teste.php?id=%s", $_GET['valorid']));
continua do mesmo jeito
<?php
var_dump($_GET['valorid']);
O que aparece ?
Edit:
Não tinha visto. ->
Não faz sentido esse
string(17) ""
Aparece isso mesmo?
Uma string vazia com 17 casas? wtf
Tenta assim:
<?php
var_dump(trim($_GET['valorid']));Olá Gabriel permanece aparecendo a string de 17 casas
como eu falei logo acima o ID vem por get, porém ele fica com aqueles caracteres malditos
localhost/processo/paginas/procedimento/teste.php?id=%3C?php%20echo%2047;%20?%3E
O id pega correto numero 47 que está no meio dos caracteres %3C?php%20echo%20
Não consegui reproduzir o erro aqui, nos meus testes, todos funcionaram como desejado.
Testou com
header("Location:../../procedimentos/teste.php?id=$id");
ou
header("Location:../../procedimentos/teste.php?id=${id}");
Outra possibilidade seria usar um trim na $id ou, o que pode ter o resultado desejado, é usar o
url encode ou o url decode
Olá amigo, engraçado aqui n tem jeito, poderia me dar um exemplo usando url encode
Teste em outro servidor. Como falei no post #2, parece ser mais um problema do PHP do que do seu código. Aparentemente, ele está correto. Ele está pegando as tags PHP como se fizessem parte da string (ao invés de aparecer apenas 47, está fazendo <?php echo 47; ?> (que possui 17 caracteres)
Qual o conteúdo de bd.php?
Olá Maykel o que esta na conexão bd.php é isso:
<?php
$servidor = 'localhost';
$usuario = 'root';
$senha = '******';
$banco = 'clientes';
// Conecta-se ao banco de dados MySQL
$mysqli = new mysqli($servidor, $usuario, $senha, $banco);
// Caso algo tenha dado errado, exibe uma mensagem de erro
if (mysqli_connect_errno()) trigger_error(mysqli_connect_error());
?>Certo...
Nada de errado aí.
Tente testar em outro server! ;-)
sim, vou testar na nuvem, no meu servidor
Olá amigos mesmo no meu servidor da hospedagem q tenho contratada n funciona permanece igual, com os caracteres malditos:
teste.php?id=<?php%20echo%2048;%20?>
Pode informar como esse id é passado por parâmetro? ou como está o código do fomulário (caso seja um form) que envia os dados para essa página?
@deoliveiralucas ia falar isso agora hehe...
Como você chega nessa URL/ação?
Via url direto?
Via Form?
A charada está aí hehe
<?php
echo "<td>"; echo "<a href='../servicosbd/processa/deleta11.php?valorid=<?php echo $id; ?>'><i class='fa fa-trash-o text-red '></i></a>"; echo "</td>";
?>
Está sendo enviado da maneira acima, mas ele está funcionando do jeito q está, ele faz UPDATE como é esperado, no id correto do bd, o problema é no outro código q não retorna para a mesma página no header location pois o ID vem com caracteresVocê já imprimiu só a variável "id" ?
Olá uso um href, enviando id, pela url para deleta11.php e como disse ele deleta normal, porem no deleta11.php ele n retorna á pagina anterior ele vem o id com caracteres, como demonstrei anteriormente
Que loucura, ele está na verdade fazendo isso:
Algo está fazendo seu PHP não rodar direito. Certeza que este trecho de código está retornando isso?