Ir para conteúdo

POWERED BY:

Arquivado

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

DeividMG18

[Resolvido] if no foreach

Recommended Posts

bom dia galera,

 

estou usando o script do tiagobelem para pegar a id de links da conta de um usuario do youtube e gravar ele no mysql, porem quando eu faço uma verificacao se o id que estou pegando ja foi inserido ele duplica os registros e ignora alguns..segue o codigo:

 

 

include 'funcoes/conecta.php';

date_default_timezone_set('America/Sao_Paulo');

// Seu usuário do YouTube
$usuario = 'contadoyoutube';

// URL do Feed RSS de vídeos de um usuário
$youTube_UserFeedURL = 'http://gdata.youtube.com/feeds/base/users/%s/uploads?orderby=updated&v=2';

// Usa cURL para pegar o XML do feed
$cURL = curl_init(sprintf($youTube_UserFeedURL, $usuario));
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
$resultado = curl_exec($cURL);
curl_close($cURL);

// Inicia o parseamento do XML com o SimpleXML
$xml = new SimpleXMLElement($resultado);



$videos = array();

// Passa por todos vídeos no RSS
foreach ($xml->entry AS $video) {
$url = (string)$video->link['href'];

// Quebra a URL do vídeo para pegar o ID
parse_str(parse_url($url, PHP_URL_QUERY), $params);
$id = $params['v'];

// Monta um array com os dados do vídeo
$videos[] = array(
	'id' => $id,
	'titulo' => (string)$video->title,
	'thumbnail' => 'http://i' . rand(1, 4) .'.ytimg.com/vi/'. $id .'/hqdefault.jpg',
	'url' => $url
);
}




foreach($videos as $video){	
$link= $video['id'];

$sql_v=mysql_query("SELECT url FROM videos WHERE url='$link'");
$l=mysql_fetch_array($sql_v);
$url=$l['url'];

if($url!=$link){
$sql=mysql_query("INSERT INTO videos (url) VALUES ('$link')");
}

}




?>

 

 

alguem sabe o pq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mude a lógica um pouquinho. Faça ele verificar se existe mais de uma linha para a query executada:

$sql_v=mysql_query("SELECT url FROM videos WHERE url='$link'");
$num_rows = mysql_num_rows($sql_v); 
if($num_rows == 0){
   $sql=mysql_query("INSERT INTO videos (url) VALUES ('$link')");
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas seu eu quiser pegar os outros dados ele nao ta inserindo mais..

 

foreach($videos as $video)
{ $titulo=$video['titulo'];
$foto=$video['thumbnail'];
$link= $video['id']; 

$sql_v=mysql_query("SELECT url FROM videos WHERE url='$link'");
$num_rows = mysql_num_rows($sql_v); 
if($num_rows == 0){


$origem_foto=$foto; 
$destino_foto="img/youtube/".$link.".jpg";

copy($origem_foto,$destino_foto); 

$y=100; 
$x=150; 

$lerimagem = imagecreatefromjpeg($destino_foto); 
$img_largura = imagesx($lerimagem);
$img_altura = imagesy($lerimagem);
$nome_miniatura = explode('.',$destino_foto);
$nome_miniatura = $nome_miniatura[0]."r".$link.".jpg"; 
$nova = imagecreatetruecolor($x,$y); 
imagecopyresampled($nova,$lerimagem,0,0,0,0,$x+1,$y+1,$img_largura,$img_altura); 
imagejpeg($nova,$nome_miniatura,95); 
$novo_x=imagesx($nova); 
$novo_y=imagesy($nova); 
unlink($destino_foto); 


$sql=mysql_query("INSERT INTO videos (titulo,thumbnail,url,permissao)
VALUES ('$titulo','$nome_miniatura','$link',ocultar)");
}

} ?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

heheh tmb so de Campo Belo =P

 

usa um 'or die()' ai nessa sua query pra ve c tem algum erro..

 

c o $link for um inteiro num precisa de aspas simples..

 

$sql_v=mysql_query("SELECT url FROM videos WHERE url = $link");
$num_rows = mysql_num_rows($sql_v); 
if($num_rows == 0 ){
......

Compartilhar este post


Link para o post
Compartilhar em outros sites

alterei o feed por

 

$youTube_UserFeedURL ='http://gdata.youtube.com/feeds/base/users/%s/uploads?orderby=published&max-results=30&v=2';

 

 

 

e deu certo.......vlw

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.