Jump to content

inserir na bd caso não tenha


electric

Recommended Posts

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

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

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

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

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

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

  • 2 months later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.