• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

electric

inserir na bd caso não tenha

8 mensagens neste tópico

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é isso mesmo :P

é que quero colocar dados de 1 random :P e como gere automaticameente não me convinha la estar repetido xD vou testar :P obrigado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :P )

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 !

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :D )

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...).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois bem ppl obrigado pelas respostas :D ao agora pude passar pelo forum :D 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 :D ) 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 :D

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 :P

ja agora

BOM ANO A TDS :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora