Actualizar onde id = $GET ['id']

estou a tentar criar uma actualização bem sucedida, usando o seguinte HTML:

<form id="form2" name="form2" method="post" 
  onsubmit="return validateForm();" action="">

    Id <input type="text" class="txt" name="id" />
    <br />
    Name <input type="text" class="txt" name="name" />
    <br />
    Website <input type="text" class="txt" name="website" />
    <br />
    Description <input type="text" class="txt" name="description" />
    <br />
    <input type="submit" id="submit" value="Submit"/>
</form>

Depois uso o seguinte PHP para ler o valor e actualizar a minha base de dados:

<?php
  global $wpdb;
  if (isset($_GET['id']) && !empty($_GET['id']) &&
    isset($_POST['name']) && !empty($_POST['name']) &&
    isset($_POST['website']) && !empty($_POST['website']) &&
    isset($_POST['description']) && !empty($_POST['description']))
  {
      $wpdb->query("update where id = $_GET['id'] ".PRO_TABLE_PREFIX
            ."tutorial (name, website, description) "
            ."values('{$_POST['name']}', '{$_POST['website']}', '{$_POST['description']}')");
  }
?>
O que estou a fazer de errado?

Author: Troy Alford, 2013-01-01

5 answers

<form id="form2" name="form2" **method="post"** onsubmit="return validateForm();" action="">

Por favor, note que o seu método de formulário é post

E você está a tentar obter dados usando o método get

isset ( $_GET['id'] ) && ! empty ( $_GET['id'] )

Substitua estes por $_POST ['key_name]; para obter resultados adequados.

 2
Author: Ketan Patkar, 2013-01-01 07:14:08

Use isto a sua pesquisa de actualização não é a sintaxe correcta

$wpdb->query("update ".PRO_TABLE_PREFIX."tutorial set  name='{$_POST['name']}', website='{$_POST['website']}', description= '{$_POST['description']}' where id= $_GET['id'] ) ");
 0
Author: Manish Nagar, 2013-01-01 06:19:06

Se quiser que o ID esteja em $_GET ['id'], então a acção do formulário deverá ser assim

action = "<page-url>?id=<somevalue>"

Além disso, você tem que criar uma caixa de texto para inserir id e o para o formulário deve ser alterado de acordo com a entrada lá, usando jQuery ou Javascript.

Finalmente, se isto for muito complicado, mude $_GET ['id'] para $_POS ['id'] como os outros sugeriram.

Além disso, a consulta SQL está incorrecta. Outros já o assinalaram.

 0
Author: Prathik Rajendran M, 2013-01-01 06:28:43

Tente com o código de identificação

<?php
     global $wpdb;
if ( isset ( $_POST['id'] ) && ! empty ( $_POST['id'] ) &&
 isset ( $_POST['name'] ) && ! empty ( $_POST['name'] ) &&
 isset ( $_POST['website'] ) && ! empty ( $_POST['website'] ) &&
 isset ( $_POST['description'] ) && ! empty ( $_POST['description'] ))
{
$wpdb->query("INSERT ".PRO_TABLE_PREFIX."tutorial ( name, website, description )
values('{$_POST['name']}','{$_POST['website']}','{$_POST['description']}') ");
}
?>
 0
Author: Codesen, 2013-01-01 06:29:45
Duas coisas.

1) Uma vez que o seu método da forma é POST, você teria que usar $_POST['id'].

2) dentro do seu texto de pesquisa, a sua sintaxe mysql UPDATE está errada, assim como para usar uma matriz com a chave dentro de um texto, você tem que envolvê-la em { e } marcas. Isto deve funcionar.

$wpdb->query("UPDATE " . PRO_TABLE_PREFIX . "tutorial SET name='{$_POST['name']}', website='{$_POST['website']}', description='{$_POST['description']}' WHERE id={$_POST['id']}");
 0
Author: Supericy, 2013-01-01 07:10:00