webdesign 1 Denunciar post Postado Novembro 26, 2012 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
brcontainer 16 Denunciar post Postado Novembro 26, 2012 Essa forma que você disse realmente é a melhor. Criar separadamente e use o PHP para exibir "junto". Compartilhar este post Link para o post Compartilhar em outros sites
webdesign 1 Denunciar post Postado Novembro 26, 2012 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
brcontainer 16 Denunciar post Postado Novembro 26, 2012 Espera, antes poste a estrutura (não os dados somente a estrutura) das duas tabelas SQL. Compartilhar este post Link para o post Compartilhar em outros sites
webdesign 1 Denunciar post Postado Novembro 26, 2012 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
brcontainer 16 Denunciar post Postado Novembro 26, 2012 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
webdesign 1 Denunciar post Postado Novembro 26, 2012 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
brcontainer 16 Denunciar post Postado Novembro 26, 2012 =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
webdesign 1 Denunciar post Postado Novembro 26, 2012 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
brcontainer 16 Denunciar post Postado Novembro 26, 2012 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
Sandro Matos 17 Denunciar post Postado Novembro 26, 2012 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
webdesign 1 Denunciar post Postado Novembro 26, 2012 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
brcontainer 16 Denunciar post Postado Novembro 26, 2012 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
webdesign 1 Denunciar post Postado Novembro 26, 2012 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
webdesign 1 Denunciar post Postado Novembro 26, 2012 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
brcontainer 16 Denunciar post Postado Novembro 26, 2012 Então é isso que está confuso em up_actores você disse que colocou vários atores em uma linha só, isso procede? Até amanhã! Compartilhar este post Link para o post Compartilhar em outros sites
Sandro Matos 17 Denunciar post Postado Novembro 27, 2012 rapaz desculpa eu me passei falei pra você adicionar echo $posts; quando era pra você adicionar echo $post; Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 27, 2012 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
webdesign 1 Denunciar post Postado Novembro 27, 2012 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
brcontainer 16 Denunciar post Postado Novembro 27, 2012 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