Ir para conteúdo
Alexandro Castro

Álbum de foto

Recommended Posts

Olá pessoal, 

 

Primeiramente agradecer a todos a colaboração, e meu primeiro post gostaria de dizer que todos obrigado pela hospitalidade e pretendo colaborar bastante aqui! 

 

Bom, estou fazendo um CMS para fotografos e queria que a capa de cada álbum fosse a última foto postada.

 

SELECT photo_id, photo_path, photo_album, album_id, album_nome 
FROM  photos 
INNER JOIN albuns 
ON photos.photo_album = albuns.album_id 
GROUP BY albuns.album_nome
 
Eu usei essa query, porém me retorna as primeiras fotos adicionadas, tentei usar:
 
ORDER BY photos.photo_id DESC
 
Mas msm assim, não consigo que as últimas Photo_id (adicionadas) exiba nos resultados.
 
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alexandro Castro Boa noite, vou te mandar um modelo do que eu uso na minha galeria onde eu eu defino o asc e o desc na hora que vou publicar esta assim

<?php
	header('Access-Control-Allow-Origin: *');
	require_once('../../includes/funcoes.php');
	require_once('../../database/config.database.php');
	require_once('../../database/config.php');
	$categoria = get('categoria');
	if (ModoManutencao()) { header("Location: ../manutencao.php"); }
	$data_atual = date('Y-m-d');
	$QueryCat = DBRead('c_album','*',"WHERE id = '{$categoria}'"); if (is_array($QueryCat)) { foreach ($QueryCat as $c_album) {
		$p           = $c_album['paginacao'];
        $ordenar_por = $c_album['ordenar_por'];
        $asc_desc    = $c_album['asc_desc'];
        $background  = $c_album['background'];
        $cor_titulo  = $c_album['cor_titulo'];
        $url         = $c_album['url'];
	} }
	if ($categoria != '0') {
		$QueryNum = DBCount('album','*',"WHERE status = 1 AND id_categoria = '{$categoria}' AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc}");
	} else {
		$QueryNum = DBCount('album','*',"WHERE status = 1 AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc}");
	}
	$pag = (isset($_GET['pag']))? $_GET['pag'] : 1;
    $registros 	= $p;
    $numPaginas = ceil($QueryNum/$registros);
    $inicio = ($registros*$pag)-$registros;
	if ($categoria != '0') {
		$Query = DBRead('album','*',"WHERE status = 1 AND id_categoria = '{$categoria}' AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc} LIMIT {$inicio}, {$registros}");
	} else {
		$Query = DBRead('album','*',"WHERE status = 1 AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc} LIMIT {$inicio}, {$registros}");
	}
?>	    
<style>
	.thumbnail:hover{ border-radius: 0px !important; border: 1px transparent !important;}
    .bg:hover { opacity: 0; }
</style>
	<div class="row">
		<div class='list-group'>
			<?php if (is_array($Query)) { foreach ($Query as $album) { ?>
            <div class='col-sm-4 col-xs-12 col-md-3 col-lg-3'>
                <a onmouseover="bg(<?php echo $album['id']; ?>)" onmouseout="bgnormal(<?php echo $album['id']; ?>)" class="thumbnail" style="background-color:<?php echo $background; ?>; border-radius: 0px !important; position: relative !important; border: 1px transparent !important;" href="#!" onclick="AbreAlbum(<?php echo $album['id']; ?>, <?php echo $categoria; ?>, <?php echo $pag; ?>, <?php echo $pag; ?>)">
                    <img class="img-responsive" alt="<?php echo $album['titulo']; ?>" src="<?php echo ConfigPainel('base_url'); ?>/wa/thumb.php?src=<?php echo ConfigPainel('base_url'); ?>/wa/album/uploads/<?php echo $album['imagem']; ?>&w=500&h=500&q=90" />
                    <div class='legenda' onmouseover="bg(<?php echo $album['id']; ?>)" onmouseout="bgnormal(<?php echo $album['id']; ?>)" style="margin-left: 4px; width: calc(100% - 8px); height: calc(55px + 5%); left: 0px; position: absolute; text-align: center; background-color: rgba(0,0,0,0.5); z-index: 2; padding: 1px; bottom: 4px;">
                        <small class='text-muted' style="font-size: 15px; color: #FFF;"><?php echo LimitarTexto($album['titulo'],50,'...'); ?></small>
                    </div>
                    <div id="bg<?php echo $album['id']; ?>" class="bg" style="margin-left: 4px; width: calc(100% - 8px); height: calc(100% - 8px); top: 4px; left: 0px; position: absolute; text-align: center; background-color: rgba(0,0,0,0.5); transition: 0.4s; z-index: 1; padding: 1px; bottom: 4px;"></div>
                </a>
            </div>
            <?php } } ?>
        </div>
	</div>

 a minha tabela sql

 

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

INSERT INTO `modulos` (`id`, `nome`, `url`, `icone`, `status`, `ordem`, `tabela`, `cod_head`) VALUES (3, 'Ãlbum de Fotos', 'album.php', 'fa-camera', 1, 0, 'album', 'album/album.js');

CREATE TABLE IF NOT EXISTS `album` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) NOT NULL,
  `imagem` varchar(255) NOT NULL,
  `autor` varchar(50) NOT NULL,
  `data` date NOT NULL,
  `status` enum('1','2') NOT NULL,
  `id_categoria` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

CREATE TABLE IF NOT EXISTS `c_album` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `categoria` varchar(255) NOT NULL,
  `paginacao` int(11) NOT NULL,
  `paginacao_fotos` int(11) NOT NULL,
  `background` varchar(50) NOT NULL,
  `cor_titulo` varchar(50) NOT NULL,
  `url` varchar(255) NOT NULL,
  `ordenar_por` varchar(50) NOT NULL,
  `asc_desc` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

INSERT INTO `c_album` (`id`, `categoria`, `paginacao`, `background`, `cor_titulo`, `url`, `ordenar_por`, `asc_desc`) VALUES (0, 'Todos os Itens', 10, 'rgba(0,0,0,0)', '#242424', '', 'id', 'DESC');

CREATE TABLE IF NOT EXISTS `fotos_album` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) NOT NULL,
  `imagem` varchar(255) NOT NULL,
  `data` date NOT NULL,
  `id_album` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

   Bom espero que possa te ajudar em algo com o seu ai

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 minutos atrás, TUAN disse:

@Alexandro Castro Boa noite, vou te mandar um modelo do que eu uso na minha galeria onde eu eu defino o asc e o desc na hora que vou publicar esta assim


<?php
	header('Access-Control-Allow-Origin: *');
	require_once('../../includes/funcoes.php');
	require_once('../../database/config.database.php');
	require_once('../../database/config.php');
	$categoria = get('categoria');
	if (ModoManutencao()) { header("Location: ../manutencao.php"); }
	$data_atual = date('Y-m-d');
	$QueryCat = DBRead('c_album','*',"WHERE id = '{$categoria}'"); if (is_array($QueryCat)) { foreach ($QueryCat as $c_album) {
		$p           = $c_album['paginacao'];
        $ordenar_por = $c_album['ordenar_por'];
        $asc_desc    = $c_album['asc_desc'];
        $background  = $c_album['background'];
        $cor_titulo  = $c_album['cor_titulo'];
        $url         = $c_album['url'];
	} }
	if ($categoria != '0') {
		$QueryNum = DBCount('album','*',"WHERE status = 1 AND id_categoria = '{$categoria}' AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc}");
	} else {
		$QueryNum = DBCount('album','*',"WHERE status = 1 AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc}");
	}
	$pag = (isset($_GET['pag']))? $_GET['pag'] : 1;
    $registros 	= $p;
    $numPaginas = ceil($QueryNum/$registros);
    $inicio = ($registros*$pag)-$registros;
	if ($categoria != '0') {
		$Query = DBRead('album','*',"WHERE status = 1 AND id_categoria = '{$categoria}' AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc} LIMIT {$inicio}, {$registros}");
	} else {
		$Query = DBRead('album','*',"WHERE status = 1 AND data <= '{$data_atual}' AND status = '1' ORDER BY {$ordenar_por} {$asc_desc} LIMIT {$inicio}, {$registros}");
	}
?>	    
<style>
	.thumbnail:hover{ border-radius: 0px !important; border: 1px transparent !important;}
    .bg:hover { opacity: 0; }
</style>
	<div class="row">
		<div class='list-group'>
			<?php if (is_array($Query)) { foreach ($Query as $album) { ?>
            <div class='col-sm-4 col-xs-12 col-md-3 col-lg-3'>
                <a onmouseover="bg(<?php echo $album['id']; ?>)" onmouseout="bgnormal(<?php echo $album['id']; ?>)" class="thumbnail" style="background-color:<?php echo $background; ?>; border-radius: 0px !important; position: relative !important; border: 1px transparent !important;" href="#!" onclick="AbreAlbum(<?php echo $album['id']; ?>, <?php echo $categoria; ?>, <?php echo $pag; ?>, <?php echo $pag; ?>)">
                    <img class="img-responsive" alt="<?php echo $album['titulo']; ?>" src="<?php echo ConfigPainel('base_url'); ?>/wa/thumb.php?src=<?php echo ConfigPainel('base_url'); ?>/wa/album/uploads/<?php echo $album['imagem']; ?>&w=500&h=500&q=90" />
                    <div class='legenda' onmouseover="bg(<?php echo $album['id']; ?>)" onmouseout="bgnormal(<?php echo $album['id']; ?>)" style="margin-left: 4px; width: calc(100% - 8px); height: calc(55px + 5%); left: 0px; position: absolute; text-align: center; background-color: rgba(0,0,0,0.5); z-index: 2; padding: 1px; bottom: 4px;">
                        <small class='text-muted' style="font-size: 15px; color: #FFF;"><?php echo LimitarTexto($album['titulo'],50,'...'); ?></small>
                    </div>
                    <div id="bg<?php echo $album['id']; ?>" class="bg" style="margin-left: 4px; width: calc(100% - 8px); height: calc(100% - 8px); top: 4px; left: 0px; position: absolute; text-align: center; background-color: rgba(0,0,0,0.5); transition: 0.4s; z-index: 1; padding: 1px; bottom: 4px;"></div>
                </a>
            </div>
            <?php } } ?>
        </div>
	</div>

 a minha tabela sql

 


SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

INSERT INTO `modulos` (`id`, `nome`, `url`, `icone`, `status`, `ordem`, `tabela`, `cod_head`) VALUES (3, 'Ãlbum de Fotos', 'album.php', 'fa-camera', 1, 0, 'album', 'album/album.js');

CREATE TABLE IF NOT EXISTS `album` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) NOT NULL,
  `imagem` varchar(255) NOT NULL,
  `autor` varchar(50) NOT NULL,
  `data` date NOT NULL,
  `status` enum('1','2') NOT NULL,
  `id_categoria` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

CREATE TABLE IF NOT EXISTS `c_album` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `categoria` varchar(255) NOT NULL,
  `paginacao` int(11) NOT NULL,
  `paginacao_fotos` int(11) NOT NULL,
  `background` varchar(50) NOT NULL,
  `cor_titulo` varchar(50) NOT NULL,
  `url` varchar(255) NOT NULL,
  `ordenar_por` varchar(50) NOT NULL,
  `asc_desc` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

INSERT INTO `c_album` (`id`, `categoria`, `paginacao`, `background`, `cor_titulo`, `url`, `ordenar_por`, `asc_desc`) VALUES (0, 'Todos os Itens', 10, 'rgba(0,0,0,0)', '#242424', '', 'id', 'DESC');

CREATE TABLE IF NOT EXISTS `fotos_album` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) NOT NULL,
  `imagem` varchar(255) NOT NULL,
  `data` date NOT NULL,
  `id_album` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

   Bom espero que possa te ajudar em algo com o seu ai

 

Bom, me ajudou um pouco em algumas ideias no PHP, mas a ideia é apenas a query no MySQL, por isso postei aqui nessa área. Gostaria de resolver apenas com query, não com PHP.

 

Eu consigo os resultados dos últimos, se eu tirar o group by, mas vai repetir os nomes dos álbuns e não funcionaria em um foreach

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Perroni91
      Olá pessoal.
      Estou com uma dúvida, mas como sou leiga no mysql, não estou conseguindo resolver.
       
      Tenho duas tabelas no meu banco de dados:
       
      Posts
      id
      titulo_principal
      categoria_id
      imagem
       
      Categorias
      id
      categoria
       
      ---

      Já cadastrei as categorias 'HTML' e 'CSS', e cada um contêm 1 post de cada.

      O que eu gostaria era que: A cada vez que criar um post em alguma dessas categorias, mostrar a quantidade separadamente.

      Ficaria assim:
      HTML               3
      CSS                   1


      Alguém poderia me ajudar, por favor?
      Estou quebrando a cabeça tentando fazer isso e não consegui.
      Obrigada!
    • Por danart5
      Bom dia! Estou fazendo um sistema de chamados, e na pagina onde o cliente envia para mim os dados do seu chamado, gostaria de trazer um aviso onde informasse o ID do chamado do mesmo.
      No banco de dados tem o campo id_ocorrencia, é auto incremente e assim que o usuário cadastra a ocorrência é cadastrado um id_ocorrencia.
      Segue o código :
       
       
      <div class="cadastro-form">         <?php             $nome_solicitante = $_POST['nome_solicitante'];             $ccusto = $_POST['ccusto'];             $equip = $_POST['equip'];             $tp_problema = $_POST['tipo_problema'];             $obs_informada = $_POST['obs_informada'];             $data_cadastro = date('Y-m-d');             $hora_cadastro = date('H:i:s');             //Conexão com o MySQL             $conn = mysql_connect('localhost','root','123456');             if (!$conn) {                 die('Could not connect: ' . mysql_error($conn));             }             mysql_select_db("osafti", $conn);             mysql_set_charset("utf8", $conn);             $sqli = mysql_query("INSERT INTO cadOcor (nome_solicitante, ccusto, equip, data_cadastro, hora_cadastro, tipo_problema, obs_informada, status) VALUES ('$nome_solicitante', '$ccusto', '$equip', '$data_cadastro', '$hora_cadastro', '$tp_problema', '$obs_informada', '0')", $conn) or die (mysql_error());             if ($sqli) {             ?>                            --------- NESSA REGIÃO É ONDE GOSTARIA DE TRAZER O ID DO CADASTRO FEITO A CIMA, É POSSÍVEL ?  ----                 <div class="alert alert-success" role="alert">                     Ocorrência cadastrada com sucesso!                  </div> <?php } else { ?> <div class="alert alert-danger" role="alert"> Erro ao cadastrar ocorrência. Tente novamente. Caso o erro persista entre em contato com o CPD. </div> <?php } mysql_close($conn); ?> </div>
    • Por gersonab
      há tempos utilizo para cadastrar data no BD a instrução :
      implode('-',array_reverse(explode('/',$data)))
      com isso no input posso colocar 09/02/2019 e no banco de dados grava 2019-02-09 , até ai sem problemas, porém ao atualizar um sistema para pdo, estou com problema no insert dinâmico, onde posso fazer 1 ou mais inserts, da forma abaixo cadastro quantos eu quiser :
      $sql = "INSERT INTO cantos ( id_t, id_c, data, ca, cant, po, des) VALUES (:id_t, :id_c, :data, :ca, :cant, :po, :des)";              $stmt = $pdo->prepare($sql);             foreach($_POST['idp'] as $indice => $valor) {             $stmt->bindParam(':id_t', $_POST['id_tor'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':id_c', $_POST['idp'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':data', $_POST['data'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':ca', $_POST["ca"][$indice], PDO::PARAM_STR);             $stmt->bindParam(':cant', $_POST['cant'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':po', $_POST['po'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':des', $_POST['des'][$indice], PDO::PARAM_STR);                              if ($stmt->execute()){                     echo "Cadastrado com sucesso.";             }
      no entento a data vai no formato do input 09/02/2019.
      caso utilize :
      $stmt->bindParam(':data', implode('-',array_reverse(explode('/',$_POST['data'][$indice]))), PDO::PARAM_STR);
      tenho o erro Strict standards: "Only variables should be passed by reference in "que significa "Apenas as variáveis podem ser passadas por referência"
      qual a melhor forma de se fazer neste caso ?
    • Por lendadomato
      Pessoal,

      tenho alguns bancos de dados mysql e em servidores diferentes, o problema é que de um tempo
      pra cá ao inserir dados que tenham sinal de + nos campo tipo varchar, ele simplesmente ignora o sinal.
      Tenho aplicativos que os administradores cadastram combo de pizzas no exemplo:
      - Combo pizza Grande + Refri + borda catupiry

      Agora parece que alterou algo no banco que não é possível cadastrar mais com o sinal de + ficando assim:
      - Combo pizza Grande    Refri    borda catupiry
       
      O sistema substitui o sinal de + por dois espaços.
      Alguém sabe o que está acontecendo?
      Não fiz nenhum alteração no sistema que há muito tempo funcionava perfeitamente.
    • Por AllysonSouza
      Boa noite pessoal, passei dia todo batendo a cabeca e ainda nao descobri como fazer para o autocomplete listar o id em outro input, quero que depois do autocomplete enviar, ele envie apenas o ID da RUA, eu consigo puxar o id junto com o nome da rua no mesmo campo imput, porem queria que o id fosse para outro campo input para eu enviar para o banco de dados, bom segue o codigo:
      index.php
      <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>jQuery Autocomplete Plugin</title> <script type="text/javascript" src="js/jquery-1.4.2.js"></script> <script type='text/javascript' src="js/jquery.autocomplete.js"></script> <link rel="stylesheet" type="text/css" href="js/jquery.autocomplete.css" /> <script type="text/javascript"> $().ready(function() { $("#course").autocomplete("autoComplete.php", { width: 260, matchContains: true, //mustMatch: true, //minChars: 0, //multiple: true, //highlight: false, //multipleSeparator: ",", selectFirst: false }); }); </script> </head> <body> <div id="content" > <form autocomplete="off"> <p> Digite a rua : <input type="text" name="course" id="course" /> </p> </form> </div> </body> </html> autocomplete.php
      <?php include "conexao.php"; $q = strtolower($_GET["q"]); if (!$q) return; $sql = "select DISTINCT id, nome from ruas where nome LIKE '%$q%'"; $rsd = mysqli_query($con, $sql); while($rs = mysqli_fetch_array($rsd)) { $cid = $rs['id']; $cnome = $rs['nome']; echo "$cid $cnome\n "; } ?>  
×

Informação importante

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