Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigo.dill

Atualizar e Excluir sem uso da $_GET

Recommended Posts

Entre violar uma pequena parte do protocolo e usar uma gambiarra, prefiro a violação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A gambiarra é pequenina e não é grave, só na parte da GUI, nesse casso gambiarra se aplica pois os browsers são uma gambiarra para isso, logo nada mais justo do que gambiarra corrigindo gambiarra :P.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu mando assim: '?delete={ id }'

Pronto, só isso.

 

Gambiarra é gambiarra, Enrico.

Você tem que ir lá, fazer teu JS, enviar o AJAX, verificar resposta, daí se for de sucesso, você tem que achar o cara lá dentro da tua marcação, remover o cara de lá, e bla bla bla bla ...

 

Fora outros tratamentos que obviamente você não vai fazer.

Por exemplo, você acha o cara no HTML e remove ele, obviamente, se você deletar alguém dentro de uma lista que seja limitada (ninguém exibe uma tabela de 100, 200+ registros na lata) o próximo registro era pra vir.

Se você mostra uma contagem de dados, você vai ter que tratar de atualizar também.

Fora a paginação, entre outras coisinhas, que quando você for ver, já foram umas 200 linhas ou mais de JS DESNECESSÁRIOS.

 

E não faz sentido ter o método DELETE em formulários.

Por isso que falo, você fica ai de teoria, falando de verbos, e bla bla bla, me manda até RFC pro cidadão ali, mas ao trocar a ideia, aqui, comentando, parece fácil, ai o cara tem esses detalhes que todo gerenciador tem, e você só vai complicando a vida do cara, e no final ele vê que faz a mesma porcaria e que só mudou o método de requisição, pro cliente, pra você, não muda o código que será usado pra deletar, nem as questões de segurança, nem nada disso ...

 

P.S: O senhor está preparado ?

==> http://www.youtube.com/watch?v=BO0ngJHb_5k?hd=0&rel=0&autoplay=1&end=277&start=273

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cada método HTTP tem sua função, a do GET é para recuperar (obviamente) e a do POST é para inserir, e assim vai.

 

Discordo de você. O POST também serve para recuperar dados, quem lhe disse que não? Um exemplo prático disso é requisições AJAX, e o framework ExtJS você escolha em GET ou POST para recuperar ou sei lá tu quer fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrey, passar por GET ou por POST é a mesma coisa.

 

O negócio na prática funciona assim:

// Arquivo do formulário

<form method="POST" action"/users">
    // ...
    <input type="hidden" name="http_method" value="PUT" />
</form>

// Ou

<form method="POST" action"/users?http_method=PUT">
    // ...
</form>
// Recuperando

<?php

$method = $_SERVER['REQUEST_METHOD'];

// Se for usar com o input no form, troque o _GET por _POST
if (isset($_GET['http_method']) {
    $method = $_GET['http_method'];
}

 

Eu gosto de complicar as coisas às vezes, desculpe-me, senhor.



Discordo de você. O POST também serve para recuperar dados, quem lhe disse que não? Um exemplo prático disso é requisições AJAX, e o framework ExtJS você escolha em GET ou POST para recuperar ou sei lá tu quer fazer.

 

Semanticamente incorreto, eu não estou falando se funciona ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É... Em teoria, até mulher é perfeita. Mas na prática, não adianta olhar pro <body> se o que importa, pra elas, é o <head>

 

:lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

É... Em teoria, até mulher é perfeita. Mas na prática, não adianta olhar pro <body> se o que importa, pra elas, é o <head>

 

:lol:

 

Boa piada haha :graduated:.

+1

Compartilhar este post


Link para o post
Compartilhar em outros sites

É... Em teoria, até mulher é perfeita. Mas na prática, não adianta olhar pro <body> se o que importa, pra elas, é o <head>

 

:lol:

 

É o que eu falo ... eu vi que nego já começou a falar lero lero ... CTRL + W é a solução, nem termino de ler, sei que já falei muitos por ai, mas quem nunca ?

 

Enrico, ata, e pra que isso filho ? pra que complicar o que é simples ? ... pelo amor de deus kra

Pessoa vacila, muitos aqui, MUITOS mesmo, tem mania de recomendar o que NUNCA usou ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso por interface uniforme e semântica ou vai me falar que POST /users/deletar faz algum sentido?

 

Eu sou perfeccionista, não me leve a mal.

 

Não disse que POST /users/deletar faz sentido, estou falando sobre enviar AJAX só pra usar o verbo DELETE.

 

Eu também sou, por isso faço as coisas como EU acho que devo, não to nem ai pra opinião lá do cara do terceiro andar, pra tua opinião, pra opinião de um pica ai da informatica ... o código é meu, eu que escrevi, eu que mando, eu que deleto, eu que modifico, e ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o que eu sempre digo: se a teoria não se ajusta à prática, mudemos a teoria então. O importante é funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é necessário AJAX... eu não sou contra sobrescrever o método usando aquela forma. Concordo que usar AJAX só para isso é um overengineering enorme e fica muito maçante. Apesar de seguir padrões, não sou tão perfeccionista a ponto disso. Houve um mal entendido.

 

 

 

É o que eu sempre digo: se a teoria não se ajusta à prática, mudemos a teoria então. O importante é funcionar.

 

Então vamos escrever código spaghetti, funciona!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

 

O negócio na prática funciona assim:

// Arquivo do formulário

<form method="POST" action"/users">
// ...
<input type="hidden" name="http_method" value="PUT" />
</form>

// Ou

<form method="POST" action"/users?http_method=PUT">
// ...
</form>

// Recuperando

<?php

$method = $_SERVER['REQUEST_METHOD'];

// Se for usar com o input no form, troque o _GET por _POST
if (isset($_GET['http_method']) {
$method = $_GET['http_method'];
}

 

 

Agora eu pergunto: QUAL A VANTAGEM DE FAZER ISSO?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos escrever código spaghetti, funciona!

Então vamos fazer workaround esdrúxulos só pra seguir a RFC.

 

No fim das contas, você continua usando GET para apagar dados.

 

Manter a semântica do HTTP e não precisar usar AJAX. Se formos ver do lado 100% prático você não vai realmente achar vantagens.

Exato, vantagem nenhuma, só desvantagens.

 

Seguir especificações que realmente ajudam em algo é algo que todo bom desenvolvedor deve fazer, agora ficar caçando gambiarra pra "corrigir" algo desnecessário é total perda de tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No final das contas, o senhor é um fanfarrão.

Cara, na boa, você sabe que não precisa disso ... não precisa ai ficar tentando provar de N formas.

 

 

Vou te dar uma dica aqui, certo ?

Maioria das coisas que alguns falam aqui, ninguém segue, o cara no final vai usar mysql_connect, o cara vai fazer a mesma merda ... porque ele não tá nem ai saca ? o negócio é funcionar pro cliente ... depois é contigo, se o código tá ruim e você gasta tempo pra fazer manutenção, o problema é seu ... etc etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, isso só afeta a GUI. Não é um workaround tão ruim assim, mas você pode usar AJAX. Isso não é culpa do HTTP, é culpa dos infelizes dos browsers.



Andrey, ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Companheiro, não faz NENHUM sentido browsers suportarem o método DELETE. A resposta para o DELETE é apenas um [inline]HTTP/1.1 204 No Content[/inline]. O usuário envia o formulário e ganha de volta uma tela em branco, o que ele vai pensar?

Ih, deu pau

Compartilhar este post


Link para o post
Compartilhar em outros sites

#58

 

A resposta 200 (OK) deve ser usada apenas se a resposta retornar alguma coisa, caso contrário, código 204 (No content) é mais apropriado.

 

Não vejo problema algum em DELETE retornar código 200 com um response body para o usuário... você tem alguma referencia de que isso é proibido?

 

9.7 DELETE

 

(...)

A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 202 (Accepted) if the action has not yet been enacted, or 204 (No Content) if the action has been enacted but the response does not include an entity.

 

:seta: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.7/

Compartilhar este post


Link para o post
Compartilhar em outros sites

De fato, o método DELETE não é obrigado a retornar 204.

 

Mas só para deixar claro: eu prefiro fazer isso, não estou falando que é o certo ou o errado, apenas prefiro. Eu acho que o fórum tem mais utilidade do que simplesmente ajudar com códigos prontos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.