Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

XAMPP

Instalei o XAMPP , mas quando eu tento iniciar o APACHE aparece a mensagem abaixo. Como consigo resolver?

Problem detected! Port 80 in use by "Unable to open process" with PID 844! Apache WILL NOT start without the configured ports free! You need to uninstall/disable/reconfigure the blocking application or reconfigure Apache and the Control Panel to listen on a different port Problem detected! Port 443 in use by "Unable to open process" with PID 844! Apache WILL NOT start without the configured ports free! You need to uninstall/disable/reconfigure the blocking application or reconfigure Apache and the Control Panel to listen on a different port

8 respostas

E aí Raphael. O apache usa a porta 80 e 443. Porém outros softwares podem usar essas portas também e se for o caso o apache pode entrar em conflito e não inicia.

Esse problema é muito comum quando se têm o skype e o apache instalados na mesma máquina.

Se for o caso você pode abrir o skype e ir em :

ferramentas -> opções -> Avançado -> Conexão

Nessa janela você DESABILITA o checkbox :

[ ] Use as portas 80 e 443 como conexões de entradas adicionais.

Depois reinicia o skype, o apache e se tiver paciência a sua máquina também.

Tenta aí, se der certo bem senão a gente tenta outra coisa.

Aguardo retorno

Obrigado Edson. Consegui resolver, o problema era o Skype mesmo, mas estou com algumas outra dúvida.

Eu separei o cabeçalho e o rodapé das demais paginas do site, mas todas as páginas ficam com o mesmo titulo. Teria como deixar cada página com um título diferente?

Têm sim , mas eu não entendi qual título você se refere.

Tem o título que ficam entre as tags <head> </head>, que aparecem na barra superior do browser, e o título que aparece depois do menu, definida com um <h1></h1>por exemplo.

Se for a que fica entre as tag s h1 aí é fácil. É só colocar essas tags cada uma com seu nome especifico nos seus respectivos arquivos, e não no cabeçalho.

Provavelmente você deve ter deixado a tag de título no cabeçalho e é por isso que aparece em todas as páginas. Tudo que fica no arquivo cabecalho.php vai aparecer em todas as páginas.

Então você deve remover essa tag h1 do cabecalho e incluir nas páginas especificas .

Por exemplo , no código de produto-formulario.php :

<?php
    include('cabecalho.php');
    include('conecta.php');
    include('banco-categoria.php');

    $categorias = listaCategorias($conexao);
?>

    <h1>Formulário de Produto</h1>

<form action="adiciona-produto.php" method="post" accept-charset="utf-8">

    CONTINUA O CÓDIGO   .  .  .

Veja que o cabeçalho foi incluso no começo do código.

Mas a tag:

<h1>Formulário de Produto</h1>

fica no código de produto-formulario.php .

Sendo assim faça isso em todas as páginas.

Tenta aí e dá um retorno

Oi Edson,

O titulo que eu estou dizendo é o do head.

Tem algum código que colocaria dentro do title para que apareça um titulo específico para cada página?

solução!

Certo, no caso da tag <title> existem várias maneiras de fazer isso. Uma delas seria passando parâmetros via $_GET nos links do menu principal. Sendo assim podemos trabalhar no código do cabeçalho.php.

No inicio do código você pode implementar um IF pra verificar se existe algum parâmetro via GET com o nome do título da página que você quer:

<?php
    if (!empty( $_GET['titulo']) ){
        $titulo = $_GET['titulo'];
    }else{
        $titulo = "Minha Loja";
    }    
?>

Na tag <title> do head você passa via php a variável $titulo:

<title><?=$titulo?></title>

E nas tags <a> dos links dos menu você passa via get o nome dos títulos de cada página.

Exemplo href="produto-formulario.php?titulo=adiciona":

<div class="container">
    <div class="navbar-header">
        <a href="index.php?titulo=Minha Loja" class="navbar-brand">Minha Loja</a>
    </div>

    <div>
        <ul class="nav navbar-nav">
            <li><a href="produto-formulario.php?titulo=adiciona">Adiciona Produto</a></li>
            <li><a href="produto-lista.php?titulo=Lista">Produtos</a></li>
            <li><a href="#">Sobre</a></li>
        </ul>
    </div>
</div>

Segue abaixo o meu código completo de cabecalho.php:

<?php
    if (!empty( $_GET['titulo']) ){
        $titulo = $_GET['titulo'];
    }else{
        $titulo = "Minha Loja";
    }    
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" /> 
        <title><?=$titulo?></title>

        <link href="css/bootstrap.css" rel="stylesheet" />
        <link href="css/loja2.css" rel="stylesheet" />

    </head>
    <body>

        <div class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <a href="index.php?titulo=Minha Loja" class="navbar-brand">Minha Loja</a>
                </div>

                <div>
                    <ul class="nav navbar-nav">
                        <li><a href="produto-formulario.php?titulo=adiciona">Adiciona Produto</a></li>
                        <li><a href="produto-lista.php?titulo=Lista">Produtos</a></li>
                        <li><a href="#">Sobre</a></li>
                    </ul>
                </div>
            </div>
        </div>

        <div class="container">
            <div class="principal">

Vê se é isso aí.

Aguardo retorno

Oi Edson,

Tem como colocar method = post para não aparecer na URL?

Obrigado Edson. Consegui resolve!

Sim mas vai dar mais trabalho. Pra usar o método POST você deve usar formulário e botões ao invés de links, isso já seria trabalho pra alterar o menu principal e os links do menu.

Outra questão são os estilos. Estamos usando o bootstrap e o estilo muda , cor dos botões, formatação, fonte, tamano, etc.

Mas se isso realmente importa segue abaixo o código:

<?php
    /*
        Aqui a lógica é a mesma. Verifica se existe parâmetro no $_POST['titulo']
        Passa o valor do parâmetro para a variável $titulo
    */
    if (!empty( $_POST['titulo']) ){
        $titulo = $_POST['titulo'];

    }else{
        $titulo = "Minha Loja";
    }    
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" /> 

        <!--
            Aqui é passada através do PHP o valor da variável $titulo
            Para a tag <title>
        -->
        <title><?=$titulo?></title>

        <link href="css/bootstrap.css" rel="stylesheet" />
        <link href="css/loja2.css" rel="stylesheet" />

    </head>
    <body>
        <div class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">

                    <!--Aqui ao invés de usar link, usa-se um formulário, um campo invisivel
                        do tipo hidden com valor do título desejado já preenchido.
                        E é usado um botão para acionar o método POST e direcionar para
                        o endereço especificado. O mesmo ocorre para os demais botões do menu
                    -->
                    <!--a href="index.php?titulo=Minha Loja" class="navbar-brand">Minha Loja</a-->
                    <form action="index.php" method="post" >
                        <input type="hidden" name="titulo" value="Minha Loja" />
                        <button class="navbar-brand navbar-inverse">Minha Loja</button>                        
                    </form>
                </div>

                <div>
                    <ul class="nav navbar-nav">
                        <li>
                            <!--a href="produto-formulario.php?titulo=adiciona">Adiciona Produto</a-->
                            <form action="produto-formulario.php" method="post" >
                                <input type="hidden" name="titulo" value="Adiciona" />
                                <button class="navbar-brand navbar-inverse">Adiciona Produto</button>                                
                            </form>
                        </li>
                        <li>
                            <!--a href="produto-lista.php?titulo=Lista">Produtos</a-->
                            <form action="produto-lista.php" method="post" >
                                <input type="hidden" name="titulo" value="Lista" />
                                <button class="navbar-brand navbar-inverse">Produto</button>
                            </form>
                        </li>
                        <li>
                            <!--a href="#">Sobre</a-->
                            <form action="#" method="post" >
                                <input type="hidden" name="titulo" value="Sobre" />
                                <button class="navbar-brand navbar-inverse">Sobre</button>
                            </form>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
        <div class="container">
            <div class="principal">

Como eu havia comentado, haverá alterações no estilo dos botões, então perceba que nós usamos classes diferentes nas tags button:

navbar-brand navbar-inverse

<button class="navbar-brand navbar-inverse">Adiciona Produto</button>

Mesmo assim haverá problemas com bordas e espaçamento entre os botões do menu, havendo necessidade de mudar os estilos.

Sendo assim no arquivo loja.css você deve incluir os seguintes estilos:

.navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
    border-color: #222;
}

Além dos métodos GET e POST pode ser possível alterar o nome dos links através de javascript ou JQuery, mas aí já estamos falando de front end e não de PHP. Fica pra você pesquisar.

Espero ter ajudado.

Abracos

É necessário verificar se realmente é necessário