Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Insert Record


wagtel

Pergunta

Olá pessoal, minha dúvida é com um sistema onde o cliente teria que clicar três vezes para inserir

seus dados em um database MySQL

Como faço para evitar isto?

Eu preciso que o usuário clique apenas uma vez e quando entrar na página o sistema insere automáticamente

no database e é redirecionado para a próxima página "index3_invert.php".

No código eu inseri assim:

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
  $insertSQL = sprintf("INSERT INTO amigos_menu (recebe, envia, nome, foto) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['recebe'], "text"),
                       GetSQLValueString($_POST['envia'], "text"),
                       GetSQLValueString($_POST['nome'], "text"),
                       GetSQLValueString($_POST['foto'], "text"));

  mysql_select_db($database_Tacapi, $Tacapi);
  $Result1 = mysql_query($insertSQL, $Tacapi) or die(mysql_error());

  $insertGoTo = "index3_invert.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
Já no formulário que é bem simples eu digitei assim:
<form action="<?php echo $editFormAction; ?>" id="form" name="form" method="POST">
                  <input name="Submit" type="submit" id="Submit" value="Confirmar" />
                  <input name="envia" type="hidden" id="envia" value="<?php echo $row_Propostas['usu_convida']; ?>" />
                  <input name="recebe" type="hidden" id="recebe" value="<?php echo $row_Propostas['usu_responde']; ?>" />
                  <input name="nome" type="hidden" id="nome" value="<?php echo $row_Propostas['usu_convida_nome']; ?>" />
                  <input name="foto" type="hidden" id="foto" value="<?php echo $row_Propostas['usu_convida_foto']; ?>" />
                  <input type="hidden" name="MM_insert" value="form3" />
                  <input type="hidden" name="MM_insert" value="form">
                </form>

Tudo o que preciso é saber como:

inserir os dados no database e redirecionar o usuário para a página "index3_invert.php"

Tudo de forma automática.

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Eu uso o Dreamweaver 8 para programar PHP e reparei que quando crio um formulário

que direciona o usuário para a página "deleta.php", esta página faz

a exclusão automática dos dados no database e redireciona para a ´página final

Tentei alterar o código anterior (parte dele) para o código abaixo:

if ((isset($_GET["usu_id"])) && ($_GET["usu_id"] != "form")) {
  $insertSQL = sprintf("INSERT INTO amigos_menu WHERE usu_id=%s(recebe, envia, nome, foto) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_GET['recebe'], "text"),
                       GetSQLValueString($_GET['envia'], "text"),
                       GetSQLValueString($_GET['nome'], "text"),
                       GetSQLValueString($_GET['foto'], "text"));

Mas de uo seguinte erro:

Warning: sprintf() [function.sprintf]: Too few arguments in C:\wamp\www\tacapi\comunidade\index2_conv.php on line 39

Query was empty

Alguém pode me dizer onde estou errando?

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, esse erro está gerando porque você liberou 5 espaços para inserir variável e só inseriu 4. Sua consulta sql também está incorreta.

Tenta dessa forma:

if ((isset($_GET["usu_id"])) && ($_GET["usu_id"] != "form")) {
  $insertSQL = sprintf("INSERT INTO amigos_menu(recebe, envia, nome, foto) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_GET['recebe'], "text"),
                       GetSQLValueString($_GET['envia'], "text"),
                       GetSQLValueString($_GET['nome'], "text"),
                       GetSQLValueString($_GET['foto'], "text"));

Se quiser colocar o where, coloque ele após os valores e coloca a variável como parâmetro na função sprintf().

Link para o comentário
Compartilhar em outros sites

  • 0

Dedas, está quase lá.

Eu alterei o código da forma sugerida e ele:

Inseriu na tabela MySQL e foi para a próxima página.

Mas não pegou os valores da Recordset , então todos os valores inseridos foram vazios.

Será que colocar o where após os valores e colocar a variável como parâmetro na função sprintf() pode ajudar?

Como faço isto?

Link para o comentário
Compartilhar em outros sites

  • 0
Como faço isto?

Dessa forma:

if ((isset($_GET["usu_id"])) && ($_GET["usu_id"] != "form")) {
  $insertSQL = sprintf("INSERT INTO amigos_menu(recebe, envia, nome, foto) VALUES (%s, %s, %s, %s) WHERE usu_id=%d",
                       GetSQLValueString($_GET['recebe'], "text"),
                       GetSQLValueString($_GET['envia'], "text"),
                       GetSQLValueString($_GET['nome'], "text"),
                       GetSQLValueString($_GET['foto'], "text"),
                       GetSQLValueString($_GET['usu_id'], "int"));

Mas eu acho que essa consulta ai num vai funcionar não... Nunca vi um where em uma query Insert :S

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

Dedas:

Você tinha razão, o código apenas estava inserindo dados vazios por que eu esqueci de enviá-los pela URL.

Corrigi a página anterior e agora funcionou muito bem.

O código correto é:

if ((isset($_GET["usu_id"])) && ($_GET["usu_id"] != "form")) {
  $insertSQL = sprintf("INSERT INTO amigos_menu(recebe, envia, nome, foto) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_GET['recebe'], "text"),
                       GetSQLValueString($_GET['envia'], "text"),
                       GetSQLValueString($_GET['nome'], "text"),
                       GetSQLValueString($_GET['foto'], "text"));

Com apenas um clique o cliente insere os dados duas vezes no database e depois retorna para sua página padrão

através de uma sessão de variável.

Ele passa por cinco páginas diferentes sem perceber.

Agradeço muito a sua ajuda, valeu mesmo.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...