• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sir Pereira

[RESOLVIDO] Sistema de "episódios"

56 mensagens neste tópico

Boas pessoal,

estou a fazer um site para a TV da minha escola, e por cada programa que fosse lançado, para não estar sempre a mexer no código pensei em criar um backend, pelo qual inseria os programas (link do youtube que irá aparecer na iframe no meio, imagem thumbnail, data, título do programa, número do episódio e descrição.

Isto, digo eu, será uma coisa fácil de fazer, mas eu de PHP faço o básico praticamente.

O que me aconselham? :)

EDIT:

Queria algo deste género mas automático :)

iframe.jpg

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é através de HTML, se reparares os vídeos no Youtube têm do lado direito o código pronto com aquele vídeo para inserir o thumbnail em qualquer site, do tipo:

<object width="560" height="340"><param name="movie" value="

&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="
&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>

Com o PHP só precisas de concatenar o link para o vídeo ao restante código e mostrar na página usando um ciclo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, a minha dúvida não era bem essa :)

A minha dúvida era mais, visto que apenas sei "o básico do PHP", apesar de perceber a sintaxe, saber interpretar os comandos, mesmo que SQL, o que me aconselham, para fazer um esquema como aquele demonstrado na imagem, que por acaso foi feito por mim, mas escrito em código mesmo, e não "automatizado".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que percebi, queres algo que te mostre os vídeos mais vistos, ou os que estão, nesse momento a ser mais vistos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não não, não me estou a fazer entender :)

Aquele "menu" à direita, onde quando se clica no vídeo, ele vai abrir na iframe do meio, aquelas informações que lá estão, data, miniatura da imagem, título do "programa", e descrição do episódio, foi tudo escrito por mim em código.

Após o clique aí, isso irá abrir um vídeo ligado a esse "episódio" no youtube.

Para adicionar mais episódios, e consequentemente outros links do youtube (outra foto, data, título, etc) tenho de editar o código à mão, e colocar.

Por isso, pensei em fazer algo com PHP, CSS, e MySQL, o problema é que não estou a ver como o fazer, visto que a nível de programação com interação com bases de dados não sei tanto quanto queria, e apenas a entendo, não conseguindo criar um processo pelo qual consiga inserir as informações depois num backend, como formatá-las e consegui-las no frontend.

Será que me fiz entender agora ? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crias o form em HTML. Depois em PHP fazes algo como isto:

//Aqui conecta-se à base de dados MySql do teu host
$link = mysql_connect("host", "userBD", "passBD");
//Aqui escolhe-se a base de dados que contém a infornmação.
mysql_select_db("nome_da_tabela", $link);

A estrutura da tabela deverá ser:

CREATE  TABLE IF NOT EXISTS `nome_da_base_de_dados`.`nome_da_tabela` (
  `ID` INT NOT NULL AUTO_INCREMENT ,
  `thumbnail` VARCHAR(45) NOT NULL ,
  `title` VARCHAR(45) NOT NULL ,
  `description` VARCHAR(45) NOT NULL ,
  `date` DATE NOT NULL ,
  `url` VARCHAR(45) NOT NULL ,

  PRIMARY KEY (`ID`) )

ENGINE = InnoDB

E o INSERT será algo como isto:

mysql_query("INSERT INTO `nome_da_tabela` (`ID`, `thumbnail`, `title`, `description`, `date`, `url`) VALUES ( , \"".$_POST["thumbnail"]."\", \"".$_POST["title"]."\", \"".$_POST["description"]."\", \"".$_POST["date"]."\", \"".$_POST["url"]."\")")

Se quiseres obter a data automaticamente da inserção do registo, podes ver aqui.

Date

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmm, obrigado :)

E por exemplo, como aplicaria que cada um dos resultados ficasse na formatação da notícia que lá está que o código é este?:

<table width="284" height="79" border="0">

  <tr>

    <td width="98" rowspan="2"><a href="#link_do_youtube" target="monitor"><img src="caminho_da_imagem" alt="descricao_da_noticia" class="tv_news_image_static" height="60" width="94" /></a></td>

    <td width="218"><span class="news_date">14-12-2009</span><span class="titulo"><br />

    </span><span class="titulo_desc">    CATerpillar</span></td>

  </tr>

  <tr>

    <td class="textoNormal"><strong><a href="#link_do_youtube" target="monitor">Primeira edição do programa</a></strong></td>

  </tr>

</table>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fazes algo como isto:

echo "<table width=\"284\" height=\"79\" border=\"0\">";
$sql = mysql_query("SELECT ID FROM nome_da_tabela ORDER BY date");
for ($pass = 0; pass < mysql_num_rows($sql); pass++){
  $query = mysql_query("SELECT url FROM nome_da_tabela WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
  $url = mysql_result($query, 0);
  echo '<tr>
    <td width="98" rowspan="2"><a href="'.$url.'" target="monitor">';

$query = mysql_query("SELECT thumbnail FROM nome_da_tabela WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
echo '<img src="'.mysql_result($query, 0).'" alt="descricao_da_noticia" class="tv_news_image_static" height="60" width="94" /></a></td>';

$query = mysql_query("SELECT date FROM nome_da_tabela WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
    echo '<td width="218"><span class="news_date">'.mysql_result($query, 0).'</span>';

$query = mysql_query("SELECT title FROM nome_da_tabela WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
echo '<span class="titulo"><br />
    </span><span class="titulo_desc">'.mysql_result($query, 0).'</span></td>
  </tr>
  <tr>';
  
  $query = mysql_query("SELECT description FROM nome_da_tabela WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
  echo '
    <td class="textoNormal"><strong><a href="'.$url.'" target="monitor">'.mysql_result($query, 0).'</a></strong></td>
  </tr>';
}

echo "</table>";

Não testei, mas deve funcionar. Se der erros ou tiveres alguma dúvida no código, diz. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Enaa paah! :) Já tenho aqui com que me entreter :)

Nunca atinei com os for's, e os while's e outro ainda que me está a escapar.

Aqui já tenho o código pronto (ao qual te tenho a agradecer e muito :D), mas nunca atinei com essa parte :) com os For's, só atinei com os For Each's no VB.NET :)

Bom, mas isto estar a montar assim o sistema a partir do nada se calhar ainda demora um pouco, por isso não sei se ainda monte hoje, ou se depois veja com mais calma...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu antes também não usava os for's, era só While's. Mas recentemente, e devido a um professor de programação que me mostrou as vantagens do for no PHP e C.

Nos for's de PHP e C, podes dividir a parte dos argumento em três:

for([parte1]; [parte2]; [parte3]){}

  • Parte1: É o código que é executado no ínicio da primeira vez do for.

for($passar = 0;  [parte2]; [parte3]){}

  • Parte2: É a condição para que o for continue. Por exemplo, se for verdadeira, o for "corre" mais uma vez, senão para.

//Aqui o for executa dez vezes
for($passar = 0; $passar < 10; [parte3]){
$passar++;
}

//Ou seja, é o mesmo que isto.
for($passar = 1; $passar <= 10; [parte3]){
$passar++;
}

  • Parte3: É executada no fim de cada loop, no fim de cada execução do script.

for($passar = 0; $passar < 10; $passar++){}

Ou seja, um exemplo:

//Esta função vai escrever a mesma frase x número de vezes.
function escreverFrases($frase, $vezes){
    for ($passar = 0; $passar < $vezes; $passar++){
        echo $frase."<br />";
    }
}

escreverFrases("Não devo falar na aula." 50);

E pronto, é simples, e útil. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ahh, acho que já percebi :)

Então, no exemplo para a listagem de "episódios", o que faz é:

  • Declara a variável pass como 0
  • Enquanto o valor de pass, for menor do que os resultados obtidos por aquela query SQL, vai somando mais um valor ao pass até que este seja igual ao valor de resultados obtidos da query.

Acertei ? :)

E já agora, se quisesse paginar os dados?

Imagina, chegava aos "5 episódios" numa página, e em baixo aparecia:

1 2 Próxima

Acho que deu para perceber :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, acertas-te. :)

Quanto à paginação, basta colocares o valor da página menos 1 vezes o número de registos. Por exemplo, (1 - 1) * 5 = 0. (2 - 1) * 5 = 5. Isto para ele te começar no registo x. Depois a parte 2 fica o valor da página vezes o número de registos. Por exemplo, 1 * 5 = 5. 2 * 5 = 10. Assim, ele só vai até ao registo x, só mostra x registos. Algo como isto: :)

for ($pass = ($_GET["page"] - 1) * 5; $pass < $_GET["page"] * 5; pass++){
    //Resto do código
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, "assim noutra parte", será que seria possível, um upload de imagens, auto-resize das mesmas e disponibilização do link para thumbs? :D

EDIT:

Btw, como posso verificar se a inserção de dados resultou?

Tenho este código, mas dá-me erro no IF...

<?php


require_once('../db/ligar.php'); // este já tem código feito por mim para se ligar à bd, consultando ainda outro ficheiro com as definições do host, user, etc

$query = mysql_query("INSERT INTO `tv_noticias` (`ID`, `thumbnail`, `title`, `description`, `date`, `url`) VALUES ( , \"".$_POST["thumbnail"]."\", \"".$_POST["title"]."\", \"".$_POST["description"]."\", \"".$_POST["date"]."\", \"".$_POST["url"]."\")")

if ($query) {
echo "Os dados foram introduzidos.<br /><br /><a href=\"javascript:history.go(-1)\">Voltar</a>";
} else {
echo "Ocorreu um erro ao introduzir os dados.<br /><br /><a href=\"javascript:history.go(-1)\">Tentar de novo?</a>";
}

die();

?>

O erro que aparece é:

Parse error: syntax error, unexpected T_IF in /v2/gestao/noticias/addnoticia.php on line 87

e a linha 87 é a linha do if do $query, que segundo a minha lógica era, se o conteúdo da variável $query fosse executado (que é a operação SQL), retornava verdadeiro, e mostrava que a operação tinha sido concluída.

Pelo menos, fiz algo do género para fazer a conexão ao SQL, e funcionou.

Sugestões ? :P

EDIT2:

Aliás, mesmo só com a parte do mysql_query, mesmo depois ao ver na base de dados, a tabela está limpa :P

EDIT3:

Outra dúvida (ai tanta :P) em que formato o MySQL guarda a data? dd/mm/yyyy?

Já vi que é YYYY-mm-dd, e não dava para alterar para dd-mm-yyyy?

Abraço :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguém me pode dar uma ajudinha aqui? Tenho o post actualizado :P (UP :thumbsup:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto ao erro do código, esqueces-te-te de um ; no fim da linha da query. :P

<?php

       
require_once('../db/ligar.php'); // este já tem código feito por mim para se ligar à bd, consultando ainda outro ficheiro com as definições do host, user, etc

$query = mysql_query("INSERT INTO `tv_noticias` (`ID`, `thumbnail`, `title`, `description`, `date`, `url`) VALUES ( , \"".$_POST["thumbnail"]."\", \"".$_POST["title"]."\", \"".$_POST["description"]."\", \"".$_POST["date"]."\", \"".$_POST["url"]."\")");

if ($query) {
        echo "Os dados foram introduzidos.<br /><br /><a href=\"javascript:history.go(-1)\">Voltar</a>";
} else {
        echo "Ocorreu um erro ao introduzir os dados.<br /><br /><a href=\"javascript:history.go(-1)\">Tentar de novo?</a>";
}

die();

?>

Quanto à segunda questão, eu sempre que preciso disso guardo no formato do MySql, e depois ao lêr, formato a data.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado :thumbsup:

Já agora, como retorno a data actual no formato da base de dados? Tive a ver no PHP.net, mas ou me escapou ou não estava lá :P

O código que tenho actualmente:

<?php echo date("d-m-y"); ?>

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Que estranho, continua a dar-me um erro a inserir na base de dados. Peguei nisso da data pois pensei que fosse esse o problema.

Tenho este código no formulário:

  <form action="addnoticia.php" method="POST">
    <h1 class="a">URL da miniatura:<br />
    <input type="text" name="thumbnail" size="70" />
    </h1>
    <p class="a">Título:<br />
    <input type="text" name="date" size="50" />
    </p>
    <p class="a">Descrição:<br />
    <textarea rows="5" cols="67" name="description"></textarea>
    </p>
    <p class="a">Data:<br />
    <input type="text" name="date" size="16" value="<?php echo date("Y-m-d H:i:s"); ?>" readonly="readonly" disabled="disabled"/>
    </p>
    <p class="a">URL do Youtube:<br />
    <input type="text" name="url" size="70" />
    </p>
    <br />
    <input type="submit" value="Enviar notícia" />  <input type="reset" value="Apagar" />
    </form>

addnoticia.php:

<?php


require_once('../db/ligar.php'); // ficheiro que inclui a conexão, e esta funciona porque já experimentei

$query = mysql_query("INSERT INTO `tv_noticias` (`ID`, `thumbnail`, `title`, `description`, `date`, `url`) VALUES ( , \"".$_POST["thumbnail"]."\", \"".$_POST["title"]."\", \"".$_POST["description"]."\", \"".$_POST["date"]."\", \"".$_POST["url"]."\")");

if ($query) {
echo "Os dados foram introduzidos.<br /><br /><a href=\"javascript:history.go(-1)\">Voltar</a>";
} else {
echo "Ocorreu um erro ao introduzir os dados.<br /><br /><a href=\"javascript:history.go(-1)\">Tentar de novo?</a>";
}

die();

?>

Vai-me sempre para o Else :P

Btw, como se põe o geshi em HTML? Não consigo --'

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No else mete isto:

echo "Ocorreu um erro ao introduzir os dados.<br /><br /><a href=\"javascript:history.go(-1)\">Tentar de novo?</a>";
echo "<br /><br />".mysql_errno($link).": ".mysql_error($link);

E diz o que ele te retorna.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O erro está no teu formulário, daquele erros que não é por não perceber, passam-nos à frente. Tu tinhas, no nome do input de titulo, date, e por isso o $_POST["title"] não retornava nada. :P

  <form action="addnoticia.php" method="POST">
    <h1 class="a">URL da miniatura:<br />
    <input type="text" name="thumbnail" size="70" />
    </h1>
    <p class="a">Título:<br />
    <input type="text" name="title" size="50" />
    </p>
    <p class="a">Descrição:<br />
    <textarea rows="5" cols="67" name="description"></textarea>
    </p>
    <p class="a">Data:<br />
    <input type="text" name="date" size="16" value="<?php echo date("Y-m-d H:i:s"); ?>" readonly="readonly" disabled="disabled"/>
    </p>
    <p class="a">URL do Youtube:<br />
    <input type="text" name="url" size="70" />
    </p>
    <br />
    <input type="submit" value="Enviar notícia" />  <input type="reset" value="Apagar" />
    </form>

Assim deve dar. :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aichh, pois foi :P mesmo daqueles erros lixados, que por uma coisita não funcionam.

Mas parece que o problema não está aqui!

Continua-me a dar exactamente o mesmo erro:

1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' "http://tv.esdg.pt/v2/images/videos/thumbs/amostra.jpg", "A ESDG vista do céu.' at line 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz, onde fizes-te isso do erro, isto:

echo "INSERT INTO `tv_noticias` (`ID`, `thumbnail`, `title`, `description`, `date`, `url`) VALUES ( , \"".$_POST["thumbnail"]."\", \"".$_POST["title"]."\", \"".$_POST["description"]."\", \"".$_POST["date"]."\", \"".$_POST["url"]."\")";

E diz o que ele imprime. Já agora, na tabela, muda oo tamanho máximo de caracteres para o thumbnail e para o link, porque eu estive a contar os do teu exemplo que o thumbnail tem mais de 45.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ocorreu um erro ao introduzir os dados.

Tentar de novo?

1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' "http://tv.esdg.pt/v2/images/videos/thumbs/amostra.jpg", "A ESDG vista do céu.' at line 1

INSERT INTO `tv_noticias` (`ID`, `thumbnail`, `title`, `description`, `date`, `url`) VALUES ( , "http://tv.esdg.pt/v2/images/videos/thumbs/amostra.jpg", "A ESDG vista do céu...", "descriçao", "", "http://tv.esdg.pt/v2/videos/programas/catrapillar/1.php")

Já percebi (acho eu), está a retornar a data em branco...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora