Bobrinha 4 Denunciar post Postado Janeiro 6, 2011 Olá eu tenho uma tabela aqui com 2 colunas login e creditos login varchar e creditos int bom como faço para fazer um update apenas se não tiver insert e se tiver o login ja no db fazer apenas o update dos creditos no login dele exemplo to cadastrado no db meu login é bobrinha e tenho 2 creditos bom como eu ja to cadastrado então quero fazer um update no db nos creditos se eu não tivesse cadastrado ai fazia update mais se eu ainda não tiver cadastrado faz insert espero que me ajudem desde ja obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Miguel Rocha1 0 Denunciar post Postado Janeiro 6, 2011 usa if e else Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Janeiro 6, 2011 Olá Bobrinha. Você pode utilizar o Replace Into ou (na minha opinião a melhor opção) ON DUPLICATE KEY UPDATE http://forum.imasters.com.br/index.php?/topic/254346-replace-into-para-inserir-e-atualizar/ Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Janeiro 7, 2011 alguém teria um exemplo simples e pratico sobre isso? Compartilhar este post Link para o post Compartilhar em outros sites
CrY 1 Denunciar post Postado Janeiro 7, 2011 to pensando aki acho que seria melhor se voce fizesse assim faz um select nas tabelas e ve se existe com o mysql_num_rows aki entra o if e else se achar algum registro faz o update se nao achar faz o insert vou tentar fazer um exemplo aki pra voce $nome = $_POST['nome']; $procura = mysql_query("select * from admin where 'login' = '$nome'"); $contar = mysql_num_rows($procura); if($contar > 0){ //aki faz o update $update = mysql_query("update admin set 'login' = '$login'"); if($update == true){ echo "Ja existia registro por tanto foi feito update" } }else{ //aki faz o insert $inserir = mysql_query("insert into admin('login') values('$nome')"); if($inserir == true){ echo "Nao existe registro entao foi criado um com o seguinte nome ".$nome.""; } } acho que foi só uma ideia o resto voce vai fazendo ai pra ver o que sai Compartilhar este post Link para o post Compartilhar em outros sites
F3RR4M3N745 0 Denunciar post Postado Janeiro 7, 2011 Bem como o CrY falou, usando o mysql_num_rows ele vai retornar o número de linhas que foi encontrado, se o valor for "0" quer dizer que não existe nenhum registro, agora se o valor foi maior que 0, quer dizer que foi encontrado algum registro. Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Janeiro 7, 2011 Desnecessário fazer 3 consultas (select, insert ou update) para isso. Fazer o ON DUPLICATE KEY UPDATE é simples e ainda você trocará 16 linhas de código por 1. Coloca o campo login da sua tabela como primary key. No phpmyadmin isso é bem simples de fazer isso, na parte onde você pode editar o tipo do campo (varchar, text e etc) terão diversos icones. Um deles será este: Só clicar no icone da linha referente ao nome de usuário. Fazendo isso ele irá desmarcar o campo id como primario e adicionar o login, com isso você orientará o MySQL de que aquele campo é o primário e não pode ter nenhum valor repetido naquele campo. Feito isso só você fazer esta única query. $sql = mysql_query("INSERT INTO admin(login,senha,credito,dataCadastro) values('$login','$senha',0,NOW()) ON DUPLICATE KEY UPDATE credito=credito+'$credito'") or die (mysql_error()); Com isso estou falando para inserir na tabela admin o login, senha, credito (zerado) e a data de cadastro, mas caso tenha uma chave duplicada (neste caso o campo login) ele irá atualizar o valor de credito pegando o valor atual somando com o valor passado pela variavel $credito. ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
CrY 1 Denunciar post Postado Janeiro 7, 2011 nunca tentei mais se o cara ai de cima falou ta falado nunca estudei esse comando que ele ta falando vou pesquisar mais sobre isso vlw ai obrigado vivendo e aprendendo xD living and learning Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Janeiro 17, 2011 Nícolas Creio que sua sugestão seja muito bem feita e realmente economizaria muito trabalho porem meu banco de dados é MSSQL e a função ON DUPLICATE KEY UPDATE não funciona ou eu não sei como fazer funcionar. eu tentei com if e else mais não da certo a pagina fica em branco apos o envio dos dados pelo formulario veja codigo formulario <form name="form1" method="post" action="cadastro_creditos_feito.php"> <input name="login" type="text" id="login" size="10" maxlength="10"> <input name="credito" type="text" id="credito" size="10" maxlength="4"> <input type="submit" name="button" id="button" value="Cadastrar"> </form> <?php include("../configuracao.php"); include("includes/anti_injection.php"); $login = anti_injection($_POST['login']); $creditos = anti_injection($_POST['credito']); if (empty($login) || empty($creditos)) { echo("<font color='#FF0000'>Por favor preencha os campos...<br><br>"); echo("Redirecionando..."); echo '<meta http-equiv="refresh" content="3; url=cadastro_creditos.php">'; } else{ //Checando o login $sql_login_check = mssql_query("SELECT memb___id FROM MEMB_INFO WHERE memb___id='$login'"); $username_check = mssql_num_rows($sql_login_check); if ($username_check <= 0) { echo "<font color='#FF0000'>O Login digitado esta incorreto ou nao existe</font><br>"; echo("Redirecionando..."); echo '<meta http-equiv="refresh" content="3; url=cadastro_creditos.php">'; } $procura = mssql_query("select memb___id,credits FROM MEMB_CREDITS WHERE memb___id='$login'"); $contar = mssql_num_rows($procura); if($contar > 0){ //aki faz o update $update = mssql_query("UPDATE MEMB_CREDITS SET credits=(credits + $creditos) WHERE memb___id='$login'"); if($update){ echo("Cadastro realizado com sucesso...<br><br>"); echo("Redirecionando..."); echo '<meta http-equiv="refresh" content="3; url=cash.php">'; } } else{ $atualiza = mssql_query("UPDATE MEMB_CREDITS SET credits=(credits + $creditos) WHERE memb___id='$login'"); if ($sql) { echo("Cadastro realizado com sucesso...<br><br>"); echo("Redirecionando..."); echo '<meta http-equiv="refresh" content="3; url=cash.php">'; } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
C. Medeiros 0 Denunciar post Postado Janeiro 18, 2011 ON DUPLICATE KEY UPDATE não tem, mas e a função REPLACE? se o login for primary key vai funcionar Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Janeiro 18, 2011 $query = mysql_query("insert blalbalblablaba"); if(!$query){ $update = mysql_query("update blablalbalbalbal"); } Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Janeiro 18, 2011 Problema resolvido era so falta de atenção fiz com if e else obrigado a todos Compartilhar este post Link para o post Compartilhar em outros sites
carlosmadeiracunha 3 Denunciar post Postado Julho 18, 2014 incrível como as pessoas vêm ao fórum pedir ajuda e quando conseguem não deixam o resultado postado, isso acarreta tópico duplicado. Compartilhar este post Link para o post Compartilhar em outros sites
Carlos Antoliv 6 Denunciar post Postado Outubro 8, 2015 incrível como as pessoas vêm ao fórum pedir ajuda e quando conseguem não deixam o resultado postado, isso acarreta tópico duplicado. Faltou postar o resultado da solução. Compartilhar este post Link para o post Compartilhar em outros sites