Ir para conteúdo

POWERED BY:

Arquivado

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

webdesign

Cadastro de Atores

Recommended Posts

Tenho no meu banco uma tabela que armazena os posts,atores,etc..

 

agora criei outra tabela só para atores_ só que agora ao cadastrar os atores, eu preciso pegar o id da tabela up_posts e colocar na nova tabela pos_id..para cada filme corresponder ao atores correctos.

 

o problema é que ele está a pegar um id qualquer e coloca no Post_id sempre o mesmo id nao referente ao ator..

eu coloquei este codigo aqui..

 

o erro penso que está aqui!?

 

 

 WHERE act = '$post'

 

<?php

$posts = mysql_query("SELECT
id,
titulo
FROM up_posts
WHERE act = '$post'")
or die(mysql_error());
if(@mysql_num_rows($posts) == '0'){
echo "não existem posts no momento";
}else{
 while($res_posts=mysql_fetch_array($posts)){
$id = $res_posts[0];
$titulo = $res_posts[1];
?>

<?php if(isset($_POST['cadastrar_post']) && $_POST['cadastrar_post'] == 'cad'){


$usuario = $_SESSION['MM_Username'];
$pega_autor = mysql_query("SELECT id FROM up_users WHERE usuario = '$usuario'")
             		or die(mysql_error());
	if(@mysql_num_rows($pega_autor) <= '0') echo 'Erro ao lesecionar o usuario';
	else{

        while($res_autor=mysql_fetch_array($pega_autor)){

         $id_autor = $res_autor[0];


$img 		= $_FILES['thumb'];
$actores 	= strip_tags(trim($_POST['actores']));
$tituloSlugVerifica = slug($actores);
$verifica = mysql_query("SELECT * FROM up_actores WHERE actores_slug = '$tituloSlugVerifica'");
$verificaConta = mysql_num_rows($verifica);
	if($verificaConta >= 1){
$numero = $verificaConta + 1;
$actores_slug = $tituloSlugVerifica.'-'.$numero;
}else{
$actores_slug = $tituloSlugVerifica;
}
$texto   	= strip_tags(trim( $_POST['texto']));
$cat 		= strip_tags(trim( $_POST['cat']));

$pasta = "../uploads/$cat";
$permitido = array('image/jpg', 'image/jpeg', 'image/pjpeg');


  	require("scripts/funcao_upload.php");
		$nome = $img['name'];
        $tmp = $img['tmp_name'];
        $type = $img['type'];




        if(!empty($nome) && in_array($type, $permitido)){
			$name = md5(uniqid(rand(), true)).".jpg";
			Redimensionar($tmp, $name, 500, $pasta);	

$cadastrar_noticias = mysql_query("INSERT INTO up_actores (post_id, thumb, actores, actores_slug, texto, cat) 
                                	VALUES ('$id', '$name', '$actores', '$actores_slug', '$texto', '$cat')")

                         			or die(mysql_error());

			if($cadastrar_noticias >= '1'){
				echo "<div class=\"ok\">Seu tópico foi cadastrado com sucesso!</div>";
			}else{
				echo "<div class=\"no\">Erro ao cadastrar o tópico</div>";
          }
        }
  	}
	}
 }



?>

è que depois eu puxo pelo o id desta forma a questao é que o id tem que ficar referente a tabel up_posts

<?php
$seleciona = mysql_query("SELECT 
          		up_posts.id,
		       up_posts.titulo,
		       up_actores.post_id,
		       up_actores.actores,
		       up_actores.actores_slug
		       FROM up_posts   
		       INNER JOIN up_actores ON up_posts.id = up_actores.post_id WHERE catslug = '$arquivo' AND tituloslug = '$post'  ");
$contar = mysql_num_rows($seleciona);
if($contar <='0'){
  echo "erro ao selecionar a tabela ou está sem resultados<br /><br />";	
}else{

	while($res = mysql_fetch_array($seleciona)){

	$id     		= $res['0'];
	$titulo 		= $res['1'];
	$actores    	= $res['3'];
	$actores_slug    	= $res['4'];




?>

<?php echo '<span itemprop="genre"><a href="'.$urlbase_config.'/personalidades/atores/'.$actores_slug.'" title="'.$atores.'">'.$actores.'</a></span>';?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa forma que você disse realmente é a melhor. Criar separadamente e use o PHP para exibir "junto".

 

epah mas eu criei separadamente, agora tou tendo dificuldadade em colocar cada autor referente a cada posts coloquei id,post_id,tumb,actores,actores_slug, texto, cat.

e ao cadastrar os atores tenho diculdade ao colocar com o id do post!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Espera, antes poste a estrutura (não os dados somente a estrutura) das duas tabelas SQL.

 

CREATE TABLE `up_actores` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `post_id` varchar(255) CHARACTER SET latin1 NOT NULL,
 `thumb` text CHARACTER SET latin1,
 `actores` text CHARACTER SET latin1,
 `actores_slug` text CHARACTER SET latin1,
 `texto` text CHARACTER SET latin1,
 `cat` text CHARACTER SET latin1,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=38 ;

-- Table structure for table `up_posts`
--

CREATE TABLE `up_posts` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `thumb` text,
 `titulo` text,
 `texto` text,
 `categoria` text,
 `data` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
 `autor` text,
 `visitas` varchar(11) DEFAULT NULL,
 `tags` varchar(250) DEFAULT NULL,
 `tituloslug` varchar(255) DEFAULT NULL,
 `catslug` varchar(255) DEFAULT NULL,
 `url` text,
 `reali` text,
 `act` varchar(255) DEFAULT NULL,
 `genero` text,
 `title_original` text,
 `site_oficial` text,
 `estreias` text,
 `origem` text,
 `class_etaria` text,
 `duracao` text,
 `duracao_iso` text,
 PRIMARY KEY (`id`),
 KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=232 ; 

 

Penso que seja issu?!Act é atores

Compartilhar este post


Link para o post
Compartilhar em outros sites
Nota: Sempre use

Deixe-me ver se entendi, você salva vários autores em uma mesma linha na tabela?
[code]`actores` text CHARACTER SET latin1,

Ou você o plural ae não é isso.

 

Acredito que o melhor seria um autor por linha, não é ? Se for isso (um autor por linha) então você está fazendo isso bem. Me confirma por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe-me ver se entendi, você salva vários autores em uma mesma linha na tabela?

`actores` text CHARACTER SET latin1,

Ou você o plural ae não é isso.

 

Acredito que o melhor seria um autor por linha, não é ? Se for isso (um autor por linha) então você está fazendo isso bem. Me confirma por favor.

 

nesta tabela Up_actores é um actor por linha que quero criar.

Para depois ligar a tabela up_posts o problema é que nao consigo interligar quando cadastro porque nao me assume o post_id

 

MAs inicialmente na tabela up_posts tenho os atores todos postados,numa linha só?mas nao resulta porque agora estou a criar uma pagina com personaliades...

Compartilhar este post


Link para o post
Compartilhar em outros sites

=Eu já té sei como resolver, mas a sua lógica está um pouco confusa.

 

Me diga: Pode haver mais de um autor para um poste só? Isso é meio confuso não é? Se for isso explique por que quer desta maneira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exacto,por que os filmes tem mais que um ator :vandame,roxky,silvester satalone....eu sei que é confuso, nao é facil explicar para voces que estão desse lado?

 

é que agora quero criar uma pagina para atores , onde o meu post referente ao filme tem esses atores na minha pagina Atores?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahhhhhhhhhhhhh, hehehe, me desculpe é ATOR não AUTOR. Já volto.

 

A melhor maneira seria, você criar a COLUNA para listagem de autores por VIRGULA no próprio `up_posts`.

 

E criar uma tabela com atores separados por linha.

 

Veja a lógica mais ou menos:

Tabela POSTS

ID|TITULO|AUTOR|ATORES

Dados de exemplo:

1|filme Coraline|guilherme|1,5,9

Recomendo que ao invés dos nomes do atores, use o ID deles

 

Tabela ATORES:

ID|NOME

 

Dados de exemplo:

1|Dakota Fanning
5|Teri Hatcher
9|Jennifer Saunders

 

Agora ao pegar o POST de ID 1 (filme Coraline), você irá ter a váriavel ATORES, use a função explode assim:

$atores_list = explode(',',$linha['explode']);

 

Nisso você usará a função implode para gerar a sua query para exibir os atores:

$atores_list = explode(',',$linha['explode']);
$query_atores = 'SELECT * FROM `ATORES` WHERE `id`=\''.('\''.implode('\' OR `id`=\'',$atores_list).'\'').';';

Essa query só vai pegar os atores referente ao teu POST. Era isso que você precisa? Deixe saber algo mais se preciso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo faz o seguinte e posta pra gente ver o que imprime

 

<?php

echo $posts;
$posts = mysql_query("SELECT
id,
titulo
FROM up_posts
WHERE act = '$post'")
or die(mysql_error());
if(@mysql_num_rows($posts) == '0'){
echo "não existem posts no momento";
}else{
 while($res_posts=mysql_fetch_array($posts)){
$id = $res_posts[0];
$titulo = $res_posts[1];
?>

<?php if(isset($_POST['cadastrar_post']) && $_POST['cadastrar_post'] == 'cad'){


       $usuario = $_SESSION['MM_Username'];
       $pega_autor = mysql_query("SELECT id FROM up_users WHERE usuario = '$usuario'")
                       or die(mysql_error());
       if(@mysql_num_rows($pega_autor) <= '0') echo 'Erro ao lesecionar o usuario';
       else{

        while($res_autor=mysql_fetch_array($pega_autor)){

                $id_autor = $res_autor[0];


       $img            = $_FILES['thumb'];
       $actores        = strip_tags(trim($_POST['actores']));
       $tituloSlugVerifica = slug($actores);
       $verifica = mysql_query("SELECT * FROM up_actores WHERE actores_slug = '$tituloSlugVerifica'");
       $verificaConta = mysql_num_rows($verifica);
       if($verificaConta >= 1){
       $numero = $verificaConta + 1;
       $actores_slug = $tituloSlugVerifica.'-'.$numero;
       }else{
       $actores_slug = $tituloSlugVerifica;
       }
       $texto          = strip_tags(trim( $_POST['texto']));
       $cat            = strip_tags(trim( $_POST['cat']));

       $pasta = "../uploads/$cat";
       $permitido = array('image/jpg', 'image/jpeg', 'image/pjpeg');


       require("scripts/funcao_upload.php");
               $nome = $img['name'];
        $tmp = $img['tmp_name'];
        $type = $img['type'];




        if(!empty($nome) && in_array($type, $permitido)){
                               $name = md5(uniqid(rand(), true)).".jpg";
                               Redimensionar($tmp, $name, 500, $pasta);        

$cadastrar_noticias = mysql_query("INSERT INTO up_actores (post_id, thumb, actores, actores_slug, texto, cat) 
                                       VALUES ('$id', '$name', '$actores', '$actores_slug', '$texto', '$cat')")

                                               or die(mysql_error());

                               if($cadastrar_noticias >= '1'){
                                       echo "<div class=\"ok\">Seu tópico foi cadastrado com sucesso!</div>";
                               }else{
                                       echo "<div class=\"no\">Erro ao cadastrar o tópico</div>";
          }
        }
       }
       }
 }



?>

 

 

foi adicionado

 
echo $posts;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo eu na tabela up_posts já tenho a coluna "act" que tem os actores inseridos por virgula e depois tenho este codigo que delimita as palavras por virgula, penso que seja igual ao seu código a diferença é que faz a contagem..e para exibir por virgula consigo e depois relacionar está tabela com a outra essa parte já nao percebi bem!?

<?php
$tagsSpost = explode(',',str_replace(' ','-',$act));
$tagsPost = explode(',',$act);
$tagsCount = count($tagsPost);
for($i=0;$i<$tagsCount;$i++){
echo '<span itemprop="genre"><a href="#" title="'.$tagsPost[$i].'">'.$tagsPost[$i].'</a></span>';
if($tagsCount - 1 != $i){echo ', ';}
}
?>

 

 

eu coloquei o seu codigo com a

<?php

$atores_list = explode(',',$act['explode']);
$query_atores = 'SELECT * FROM `up_actores` WHERE `id`=\''.('\''.implode('\' OR `id`=\'',$atores_list ).'\'').';';
print $atores_list;
print $query_atores;
?>

e fiz um print

:ArraySELECT * FROM `up_actores` WHERE `id`=''A';

 

e reparei que ele seleciona a primeira letra do ator, mas visto que ele está separado por virgula exite mais ou estou a fazer algo errado

Compartilhar este post


Link para o post
Compartilhar em outros sites
Amigo eu na tabela up_posts já tenho a coluna "act" que tem os actores inseridos por virgula e

Eu vi a coluna

act varchar(255)

, mas como tinha limite achei não tinha haver.

 

Então voltando, me responda por que colocar vários atores em uma linha só na tabela up_actores?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz issu e nao retomou nada!?

 

ou seja assim nao passa nada entao que variavel posto ali!*?

eu reparei que fiz um print na variavel id e só apareceu os id referente a categoria noticias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vi a coluna

act varchar(255)

, mas como tinha limite achei não tinha haver.

 

Então voltando, me responda por que colocar vários atores em uma linha só na tabela up_actores?

 

porque pensei que fosse um único jeito de funcionar,porque quero criar uma pagina por categoria de atores e depois no meus posts clicar e ir para esse mesmo ator!?se for ao meu site é mais facil visionar http://www.filmesani...et63.net/atores

outra coisa importante up_actores é para poder colocar algum texto e foto para a biografia etc..

Se ouver uma forma mais facil!?

 

Ou eu estou a complicar"?

 

é que se eu conseguise ao gravar os atores no banco ir buscar o id dos tabela up_posts referente a esses atores..eu puxava esses atores todos pelo mesmo id imagine sao 5 atores no filme twilight=>tem o id 25=>ou seja ator1=id25 ,ator2=id25,ator3=id25..etcc

assim ia buscar correctamente cada ator ao id do post

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uni os dois tópicos e removi algumas mensagens sequenciais. Parte da discussão pode não fazer muito sentido mas a culpa é do IP.Board que aparentemente mescla com base nas datas de postagem.

 

Nesse momento não tenho como lhe dar uma resposta completa mas possa te adianta que voc~e pode fazer o que deseja relacionando as duas tabelas.

 

Na tabela de Atores você teria uma coluna que corresponderia à um ID na tabela Filems. E a query ficaria algo como:

 

SELECT m.*, a.* FROM movies m
   LEFT JOIN actors a ON( m.id = a.mid )
       ORDER BY m.name

Sendo, nesse exemplo, movies a tabela de Filmes e actors a de Atores.

 

m.id é a chave primária da tabela de Filmes e a.mid é a coluna de referência à esta na tabela de Atores. Ambos com oas respectivos aliases.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a query ficava assim e funciona perfeitamente

<?php
$seleciona = mysql_query("SELECT 
      			up_posts.id,
	           up_posts.titulo,
	           up_actores.post_id,
	           up_actores.actores,
	           up_actores.actores_slug
	           FROM up_posts   
	           INNER JOIN up_actores ON up_posts.id = up_actores.post_id WHERE catslug = '$arquivo' AND tituloslug = '$post'  ");
$contar = mysql_num_rows($seleciona);
if($contar <='0'){
  echo "erro ao selecionar a tabela ou está sem resultados<br /><br />";	
}else{

	while($res = mysql_fetch_array($seleciona)){

	$id 			= $res['0'];
	$titulo 		= $res['1'];
	$actores    	= $res['3'];
	$actores_slug    	= $res['4'];




?>

<?php echo '<span itemprop="genre"><a href="'.$urlbase_config.'/personalidades/atores/'.$actores_slug.'" title="'.$atores.'">'.$actores.'</a></span>';?>
<?php 

 

 

Só tinha é que ao cadastrar os atores, pegasse o id dos post referente ao filme, se eu conseguir cadastar correctamente eu pego o id dos atores!?

 

o codigo que cadastra os atores é o que está nos topico anterior!?

 

Agradecia que me ajudassem

 

eu ao cadastar os atores

<?php

$posts = mysql_query("SELECT
id,
titulo
FROM up_posts
WHERE tituloslug = '$post'")
or die(mysql_error());
if(@mysql_num_rows($posts) == '0'){
echo "não existem posts no momento";
}else{
 while($res_posts=mysql_fetch_array($posts)){
$id = $res_posts[0];
$titulo = $res_posts[1];
?>

<?php
}
}
?>

 

eu quando coloco tituloslug ele diz"não existem posts no momento"..

 

esta maneira nao deve ser a mais correcta,como faço para ir buscar o id da tabela up_post.

 

ele só pega por

 WHERE act = '$post'")

e fiz um print e mesmo assim só está a pegar nas categorias noticias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uni os dois tópicos e removi algumas mensagens sequenciais. Parte da discussão pode não fazer muito sentido mas a culpa é do IP.Board que aparentemente mescla com base nas datas de postagem.

 

Nesse momento não tenho como lhe dar uma resposta completa mas possa te adianta que voc~e pode fazer o que deseja relacionando as duas tabelas.

 

Na tabela de Atores você teria uma coluna que corresponderia à um ID na tabela Filems. E a query ficaria algo como:

 

SELECT m.*, a.* FROM movies m
   LEFT JOIN actors a ON( m.id = a.mid )
       ORDER BY m.name

Sendo, nesse exemplo, movies a tabela de Filmes e actors a de Atores.

 

m.id é a chave primária da tabela de Filmes e a.mid é a coluna de referência à esta na tabela de Atores. Ambos com oas respectivos aliases.

Essa lógica é boa, mas consome muito tempo da execução, por isso estava tentando entender como ele quer exatamente para poder criar uma função exata para ele.

 

Ou eu estou a complicar"?

Então é isso que está confuso em up_actores você disse que colocou vários atores em uma linha só, isso procede?

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.