electric Posted November 1, 2007 at 03:23 PM Report Share #144493 Posted November 1, 2007 at 03:23 PM Boas povo o que pretendo fazer ´o seguinte, eu tenho uma bd gigante (imaginemos) e quero inserir algo dentro da BD , o meu problema é e se ele ja existir.... bem estou a usar este codigo : $result = mysql_query("SELECT * FROM random.rando"); echo "<table width=\"250\" border=\"0\">"; echo "<tr bgcolor=\"#FFFFFF\">"; while ($r = mysql_fetch_array($result)) { $var1 = $r['rand']; if ( $var1 != $password) { mysql_query("INSERT INTO random.rando(rand) VALUES ('$password')") or die (mysql_error()); } else { echo " não deu..."; } echo $var1; echo "<br/>"; } so que ele inser mesmo que seja diferente ou igual :s como faço para que se ele ja existir la dentro n voltar a colocalo ? Link to comment Share on other sites More sharing options...
softklin Posted November 1, 2007 at 06:47 PM Report Share #144538 Posted November 1, 2007 at 06:47 PM Boas! Eu não percebi bem, mas penso que com um select inicial a procurar na bd seria melhor, escusas de carregar toda essa base de dados gigante para uma variavel... Ficaria algo deste genero: $oQueQueresProcurar = "palavra"; $query = mysql_query("select * from <tabela> where <campo>='$oQueQueresProcurar'"); if(mysql_num_rows($query)>0){ //o valor ja esta na tabela echo "Esse valor ja la tá, pah!"; }else{ //valor novo, insere na bd mysql_query("insert into <tabela> values ('$oQueQueresProcurar')") or die("nao consegui inserir..."); } Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
electric Posted November 1, 2007 at 08:06 PM Author Report Share #144542 Posted November 1, 2007 at 08:06 PM é isso mesmo 😛 é que quero colocar dados de 1 random 😛 e como gere automaticameente não me convinha la estar repetido xD vou testar 😛 obrigado 😛 Link to comment Share on other sites More sharing options...
electric Posted November 1, 2007 at 08:36 PM Author Report Share #144545 Posted November 1, 2007 at 08:36 PM estive a pensar melhor e neste caso de ser 1 random não seria melhor usar 1 while ? so que nunca usei 1 while em php :s exemplo while((mysql_num_rows($query)>0){ volta acorrer o random} isso seria assim ? :s mas acho isto estranho :s que me dizem ? :S ou usar uma function tanbem não dava ? pah eu nucnca usei estas duas funções em php lol mas acho que seriam o mais indicado pro que preteno Link to comment Share on other sites More sharing options...
electric Posted November 1, 2007 at 09:37 PM Author Report Share #144554 Posted November 1, 2007 at 09:37 PM Bem depois de pensar secalhar resolvi isto de maneira primitiva :s mas coloquei header('Refresh: 1; url=pagina.php'); no else.... assim se achar parou se não achar volta a repetir :s ja agora curiosidade, como faço para ele so repetir 1 X nº de vezes ? tipo maginemos que eu tnho na bd 150 espaço que quero preencher, ponhos isto a correr com o header('Refresh: 1; url=random.php'); mas e depois como é que consigo que pare sozinho quando chegar ao 149 ( sim pk o 0 tambem conta 😛 ) Link to comment Share on other sites More sharing options...
Drone Posted November 2, 2007 at 09:46 AM Report Share #144600 Posted November 2, 2007 at 09:46 AM Boas, fiz algo parecido (digo eu) com o que tu queres... ve lá se te ajuda: $chars = "0A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2X3Y4Z5"; $chars_total = strlen($chars) - 1; $exist = 1; while ($exist > 0) { $code = ""; while ( strlen($code) < 10 ) $code .= substr($chars, rand(0, $chars_total), 1); $exist = "SELECT id FROM giftcards WHERE code = '$code'"; $exist = @mysql_num_rows ( mysql_query ($exist) ); } $SQL = "INSERT INTO giftcards (code,creator,email,amount) VALUES ('$code', '$member_id', '$email', '$ammount')"; @mysql_query($SQL); Cumps ! Link to comment Share on other sites More sharing options...
softklin Posted November 2, 2007 at 04:42 PM Report Share #144705 Posted November 2, 2007 at 04:42 PM Bem depois de pensar secalhar resolvi isto de maneira primitiva :s mas coloquei header('Refresh: 1; url=pagina.php'); no else.... assim se achar parou se não achar volta a repetir :s ja agora curiosidade, como faço para ele so repetir 1 X nº de vezes ? tipo maginemos que eu tnho na bd 150 espaço que quero preencher, ponhos isto a correr com o header('Refresh: 1; url=random.php'); mas e depois como é que consigo que pare sozinho quando chegar ao 149 ( sim porque o 0 tambem conta 😄 ) Então, com uma ligeira adaptação do código que forneci, basta introduzires um for: <?php for($i=0; $i<150; $i++){ $oQueQueresProcurar = "valorAleatorio"; $query = mysql_query("select * from <tabela> where <campo>='$oQueQueresProcurar'"); if(mysql_num_rows($query)>0){ //o valor ja esta na tabela echo "Esse valor ja la tá, pah!"; $i--; //este decremento é preciso porque senão não vai introduzir 150 numeros se alguns estiverem repetidos... }else{ //valor novo, insere na bd mysql_query("insert into <tabela> values ('$oQueQueresProcurar')") or die("nao consegui inserir..."); } } ?> Onde está valorAleatorio, poes a função com que pretendes gerar os numeros consoante queiras (inteiros, decimais...). Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
electric Posted January 8, 2008 at 12:08 PM Author Report Share #158589 Posted January 8, 2008 at 12:08 PM pois bem ppl obrigado pelas respostas 😄 ao agora pude passar pelo forum 😄 mas surgiu uma duvida meio parva -.- tive no outro dia a falar com um membro do forum ( desculpa mas n me recordo do teu nick 😄 ) e ele disseme que poderia fazer isto com 1 while e passou-meo seguint cod: $n1 = random(); While(mysql_num_rows(mysql_query("SELECT * FROM rand WHERE id LIKE '".$n1."'"))>0); { $n1 =random(); } pois bem qui tenho a função random k n pasa de um random normal, e o que isto faz ou devia fazer é sacar 1 ran e se ele ja la existir no campo então vai repetindo até axar e se ja n estiver dentro da bd então ponho la dentro 😄 o problema é que isto corre bem mas quando gere 1 nº que ja la esta bloqueia e depois da erro de tempo -.-, umadas minhas duvidas é que eu vou repetir este codigo umas quantas Xs pois preciso de gerar alguns rands ao mxm tempo e queria saber o que me sugerem para este caso 😛 ja agora BOM ANO A TDS 😛 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now