Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jomasaco

- mysql verificação na DB antes de dar entrada

Recommended Posts

Boas pessoal.

 

É assim tenho um script que faz entradas na db.

primeiramente para uma tabela temporária QUE

e mais tarde será inserido na tabela DOWNLOAD

 

O que pretendia era adicionar uma verificação em outra tabela da DB download se o valor do campo SURL, já existisse na tabea download essa entrada era ignorada ou retornava um erro "entrada já existente".

 

SELECT `id` , `type` , `title` , `url` , `sname` , `surl` , `date` , `email` , `views` , `reports`
FROM `downloads`
SELECT `id` , `type` , `title` , `url` , `sname` , `surl` , `date` , `email` , `views` , `reports`
FROM `que`

else {
				$dato = $c->dato();
				@mysql_query("INSERT INTO $c->mysql_tb_que (type, title, url, sname, surl, date, email) "
				."VALUES ('$type[$i]','$title[$i]','$url[$i]','$sname','$surl','$dato','$email')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aê ..bem vindo ao Imasters ..quanto a sua dúvida, idéia é essa ..

$surl = $_POST['surl'];
$sql= "select * from download where surl ='".$surl."' ";
$exe = mysql_query($sql);
if (mysql_num_rows($exe) >= '1') {
echo "Entrada ja existente";
} else {
query pra inserir 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

não funcionou, continua a passar.

Mas encontrei talvez uma melhor maneira de o fazer.

 

Que será com esta função.

function add($location, $insert) {
	global $HTTP_POST_VARS, $type, $title, $url, $sname, $surl, $email;
	if (!$HTTP_POST_VARS)
	  $this->form($location);
	elseif (!$type || !$title || !$url || !$sname || !$surl)
	  echo "not all required fields were filled out correctly<br><br><a href=\"java script:history.go(-1)\">go back</a>";
	else {
	  if ($insert)
		$tabellen = $this->mysql_tb_dl;
	  else
		$tabellen = $this->mysql_tb_que;

	  $i = $banned = 0;
	  $dato = $this->dato();
	  while ($i < count($title)) {
		if ($title[$i] != "" && $url[$i] != "" && $type[$i] != "") {
		  $sql_title = $title[$i];
		  $sql_url = $url[$i];
		  $sql_type = $type[$i];
		  if (!$this->blacklist($surl)) {
		  mysql_query("INSERT INTO $tabellen (type, title, url, sname, surl, date, email)
		  VALUES ('$sql_type', '$sql_title', '$sql_url', '$sname', '$surl', '$dato', '$email')");
		  } else
			$banned = true;
		} else
		  break;
		$i++;
	  }
	  if ($insert && !$banned)
		echo "<b>Data added to database</b><br><br>";
	  elseif (!$banned)
		echo "<b>Your downloads have been sent for review</b><br><br>";
	  else
		echo "<b><font color=red>Your Site Have been banned!</b></font><br><br>";
	}
  }

Como adicionar ali a rotina para verificar que o url já existe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não funcionou? Acho que o que você quer é muito simples, não prescisa pegar algo pronto, ainda mais desse tamanho pra fazer não, posta ai que erro que deu, e como você envia essas variaveis pra página de inserção ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código ficou assim, não dá erro, mas também não bloqueia a entrada para a db.

 

 

<?php

if ($HTTP_POST_VARS && (!$HTTP_POST_VARS[sname] || !$HTTP_POST_VARS[surl] || !$HTTP_POST_VARS[title][0] || !$HTTP_POST_VARS[url][0])) {
	include "wrong.html";
	die();
} elseif ($HTTP_POST_VARS) {
	$c->open();
	if ($c->whitelist($surl))
				$dont = true;
		else
				$dont = false;
		if (!$dont) {
				for ($i=0; $i<count($HTTP_POST_VARS[title]); $i++) {
						if (!$title[$i] || !$url[$i] || $c->whitelist($url[$i]))
								break;								 
$url = $_POST['url'];
$sql= "select * from downloads where url ='".$url."' ";
$exe = mysql_query($sql);
if (mysql_num_rows($exe) >= '1') {
echo "Entrada ja existente";
}
			else {
				$dato = $c->dato();
				@mysql_query("INSERT INTO $c->mysql_tb_que (type, title, url, sname, surl, date, email) "
				."VALUES ('$type[$i]','$title[$i]','$url[$i]','$sname','$surl','$dato','$email')");
			}
		}
	}
	include "thanks.html";
	die();
	$inc = true;
} else
	$inc = false;
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

So um detalhe ..existem duas variáveis $url, não creio que seja esse o erro, tem algumas coisas que você instancia ai nesse seu código que eu não entendo bem como funciona, mas faz assim posta o formulário que você envia esses dados ..talvez eu possa te mostrar outra solução ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.