Ir para conteúdo

POWERED BY:

Arquivado

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

johnhey

Caixa de mensagem

Recommended Posts

Tenho um outro tópico em esta da melhor forma que consegui, até que alguém de uma outra luz.

 

http://forum.imasters.com.br/topic/506223-checkbox/

 

Não sei se esse tópico seria em php ou javascript, mas aqui vai, caso não seja, peço desculpas.

 

em meu arquivo PHP coloquei um echo para me exibir quando um campo esta incorrecto ou não foi preenchido, gostaria de saber como faço para que apareça uma caixa de mensagem com a informação e logo de seguinte ao clicar no botão ok seja direcionado para o campo.

 

Tenho um formulário em HTML onde possuo campos com input, e o ficheiro PHP para o envio.

Tenho algumas condições no ficheiro php para verificar alguns campos.

 

Se for em php como faço? Se for em javascript, onde colocar o código? no ficheiro em HTML ou PHP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

O PHP é uma liguagem server-side portanto você não tem controle dos componentes do brownser através do PHP, para exibir alerts e outras interações com o cliente você deverá usar o JavaScript (Client-Side) , para interações mais avançadas eu recomendo a você que dê uma lida no JQuery.

 

Com o ajax você pode pegar o retorno do seu scrip php e exibir em um alert, isso é claro se o conteudo do seu alert depender de processamento prévio do lado do servidor, caso contrario co só usa o alert msm

 

ex: alert('sua mensagem aqui!')

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, consegui fazer e esta a funcionar, mas tem outro problema, quando aparece as caixa de alertas a página é direcionada para uma tela em branco, ou seja, para o ficheiro formulário.php, como faço para não mudar de página ou simplesmente retornar a pagina que estava?

 

o código do formulário php ficou assim:

 

<?php
$status = false;

$check1 = $_POST['checkbox1'];
$check2 = $_POST['checkbox2'];
$check3 = $_POST['checkbox3'];
$check4 = $_POST['morada'];
$check5 = $_POST['email'];
$check6 = $_POST['contacto'];

if ($check1 == "1"){
$tipocontacto = "Carta";	
}
if ($check2 == "2"){
$tipocontacto = "email";	
}
if ($check3 == "3"){
$tipocontacto = "Telefone/Telemovel";	
}
if ($check1 == "1" and $check2 == "2"){
$tipocontacto = "Carta ou email";	
}
if ($check1 == "1" and $check2 == "2" and $check3 == "3"){
$tipocontacto = "Carta, email ou Telefone";	
}

if ($check1 == "1" and $check3 == "3"){
$tipocontacto = "Carta ou Telefone";	
}

if ($check2 == "2" and $check3 == "3"){
$tipocontacto = "email ou Telefone";	
}

// CONFIGURAÇÃO DO FORMULÁRIO.

// RECEBE OS VALORES VINDO DO FORMULÁRIO E ATRIBUI AS VARIÁVEIS
$nome = $_POST['name'];
$email = $_POST['email'];
$contacto = $_POST['contacto'];
$assunto = $_POST['assunto'];
$metodo = $tipocontacto;
$morada = $_POST['morada'];
$mensagem = $_POST['comment'];

if ($nome == ""){
	echo"<script type='text/javascript'>";
	echo "alert('Preencha o campo nome!');";
	echo "</script>";
	$status = true;
}
if ($assunto == ""){
	echo"<script type='text/javascript'>";
	echo "alert('Preencha o campo assunto!');";
	echo "</script>";
	$status = true;
}
if ($mensagem == ""){
	echo"<script type='text/javascript'>";
	echo "alert('Preencha sua mensagem!');";
	echo "</script>";
	$status = true;
}

if ($check1 == "1" and $check4 == ""){
	echo"<script type='text/javascript'>";
	echo "alert('Preencha o campo da morada!');";
	echo "</script>";
	$status = true;	
}
if ($check2 == "2" and $check5 == ""){
	echo"<script type='text/javascript'>";
	echo "alert('Preencha o campo do email!');";
	echo "</script>";
	$status = true;	
}
if ($check3 == "3" and $check4 == ""){
	echo"<script type='text/javascript'>";
	echo "alert('Preencha um telefone de contacto!');";
	echo "</script>";
	$status = true;	
}
if ($check1 == "" and $check2 == "" and $check3 == ""){
	echo"<script type='text/javascript'>";
	echo "alert('Selecione a forma que queira ser contactado(a)!');";
	echo "</script>";
	$status = true;	}

//Se o status for igual a falso envia o formulário
if ($status == false){

código de envio aqui

else{

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma das alternativa é você fazer o tratamento das informações do seu formulário no mesmo script do form, você pode usar a super global server para apontar para o proprio script no action do seu form

 

ex: action=" <?php echo $_SERVER['Php_Self'] ; ?>

 

mas se você preferir manter sua estrutura atual você pode usar o redirecionamento com o java script mesmo, segue abaixo um link com os exemplos:

 

http://www.oficinadanet.com.br/artigo/28/redirecionamento_em_javascript

Compartilhar este post


Link para o post
Compartilhar em outros sites

já tentei com o javascript e funcionou, o meu problema é:

 

utilizo o iframe para abrir os menus, pois meu cliente quis uma música no site e não aceita mudanças, tentei de toda forma e ele disse que então iria mudar para outra pessoa, e como as coisas andam difíceis aceitei.

Abro todos os links dentro de iframe o problema é que quando ele redireciona para a pagina não volta para dentro do iframe e sim na tela toda.

 

já da outra forma tenho que fazer alguma substituição, pois copiei seu código e deu erro, ou tenho que copiar todo o meu código php para dentro dessa linha que você colocou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não aconselho você a usar iframes para tocar a musica não, na verdade não aconselho você a usar iframes para nada :upset:

 

vc pode substituir o iframe por <bgsound> do html ou por um player do flash, essas são alternativas mais estaveis e automaticamente eliminarão seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me expressei mal, não estou a usar iframe para o som, tenho meu site feito em HTML, só que quando clicava em um botão (ex: contactos) a música parava e ao abrir a tela voltava a começar do inicio, e precisava que a música continuasse a toca quando desse um clique em outro botão.

Então depois de ler vários tópicos de ajuda daqui do site resolvi usar o iframe para abrir outras telas, (ex: home, quem sou, contacto, etc), assim como o som esta no índex, nunca para de tocar.

Agora se você souber outra alternativa até agradeço pois isso esta a me atrasar imenso com o site e não só isso, quando peço para fazer o tradutor do Google, não consigo traduzir o conteúdo de dentro do iframe.

Outra coisa, não quero usar flash, pois quem tem um ipad não consegue abrir no browser nativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu te entendi direito é só você ajustar a URL que você está usando como endereço de redirecionamento no java script, é só você apontar para o script principal (o script que contem todos os frames) ao invés de apontar o java script para um script especifico

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que contem todos os frames é o índex, mas ele quando abre aparece a pagina inicial(home) não contactos, queria que ele redirecionasse para a pagina em que estava ou iframe que estava.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que ser para o que tem todos os frames, é só vc usar uma verificação com $_GET pra ver qual frame exibir nele a home ou o que você passar junto com a url

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo BEM simples, sem javascript:

 

index.php

 

 

<?php
if(!isset($erros)){
	$erros = array();
}
function showErro($chave, $erros) {
	if(isset($erros[$chave])){
		echo '<p class="alert alert-danger">', $erros[$chave], '</p>';
	}
}
?>
<!DOCTYPE html>
<html>
	<head>
		<title>Contato</title>
		<meta charset="UTF-8" />
		<link href="http://getbootstrap.com/2.3.2/assets/css/bootstrap.css" rel="stylesheet">
	</head>
	
	<body>
		<div class="container">
			<form class="form-horizontal" method="post" action="contato.php">
				<div class="control-group">
					<label for="nome" class="control-label">Nome</label>
					<div class="controls">
						<input type="text" name="nome" id="nome" value="<?php echo empty($_POST['nome']) ? '' : $_POST['nome']; ?>"/>
						<?php showErro('nome',$erros); ?>
					</div>
				</div>
				
				<div class="control-group">
					<label for="email" class="control-label">E-mail</label>
					<div class="controls">
						<input type="email" name="email" id="email" value="<?php echo empty($_POST['email']) ? '' : $_POST['email']; ?>"/>
						<?php showErro('email',$erros); ?>
					</div>
				</div>
				
				<div class="control-group">
					<label for="telefone" class="control-label">Telefone</label>
					<div class="controls">
						<input type="text" name="telefone" id="telefone" value="<?php echo empty($_POST['telefone']) ? '' : $_POST['telefone']; ?>"/>
						<?php showErro('telefone',$erros); ?>
					</div>
				</div>
				
				<div class="control-group">
					<label for="" class="control-label">Forma de Contato</label>
					<div class="controls">
						<label>
							<input type="checkbox" name="formas[]" value="email" <?php echo !empty($_POST['formas']) && in_array('email',$_POST['formas']) ? 'checked="checked"' : ''; ?>> E-mail
						</label>
						<label>
							<input type="checkbox" name="formas[]" value="telefone" <?php echo !empty($_POST['formas']) && in_array('telefone',$_POST['formas']) ? 'checked="checked"' : ''; ?>> Telefone
						</label>
						<label>
							<input type="checkbox" name="formas[]" value="carta" <?php echo !empty($_POST['formas']) && in_array('carta',$_POST['formas']) ? 'checked="checked"' : ''; ?>> Carta
						</label>
						<?php showErro('formas',$erros); ?>
					</div>
				</div>
				
				<div class="control-group">
					<label for="mensagem" class="control-label">Mensagem</label>
					<div class="controls">
						<textarea id="mensagem" name="mensagem" rows="5" style="width: 100%"><?php echo empty($_POST['mensagem']) ? '' : $_POST['mensagem']; ?></textarea>
						<?php showErro('mensagem',$erros); ?>
					</div>
				</div>
				
				<div class="form-actions">
					<button class="btn btn-primary"><i class="icon-ok icon-white"></i> Enviar</button>
					<button class="btn" type="reset"><i class="icon-trash"></i> Resetar</button>
				</div>
			</form>
		</div>
	</body>
</html> 

 

 

 

contato.php

 

 

 

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
	$formaContato = empty($_POST['formas']) ? '' : implode(', ', $_POST['formas']);
	
	$_POST = array_map(function($value){
		if(!is_array($value)){
			$value = trim($value);
		}
		return $value;
	}, $_POST);
	
	$nome = $_POST['nome'];
	$email = $_POST['email'];
	$mensagem = $_POST['mensagem'];
	$telefone = $_POST['telefone'];
	
	$erros = array();
	
	if(empty($nome)) $erros['nome'] = 'Informe o seu nome';
	if(empty($formaContato)) $erros['formas'] = 'Selecione uma forma de contato';
	if(!filter_var($email,FILTER_VALIDATE_EMAIL)) $erros['email'] = 'E-mail inválido';
	if(empty($telefone)) $erros['telefone'] = 'Informe o seu telefone';
	if(empty($mensagem)) $erros['mensagem'] = 'Informe uma mensagem';

	if(empty($erros)){
		// envia o email
		echo 'E-mail enviado';
		exit;
	}
}

include 'index.php';

 

 

 

Exemplo funcionando

 

Veja que as formas de contato, que são checkboxes, chegam em formato de array.

Assim, é só fazer um implode e já se tem a informação para enviar pelo formulário.

Muito mais simples :D

 

E as mensagens de erro ficam organizadas com os campos.

 

Além disso, a lógica do PHP fica separada da apresentação (nem vou entrar muito no mérito MVC para vc não se complicar ainda mais ;) ).

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você aciona uma URL você está fazendo uma requisição, atravé de QueryString (passagem de parametros através de requisições no método get) você pode escolher qual será o conteudo exibido no seu site, isso é um dos principios básicos da web dinamica.

 

siga o exemplo do topico abaixo:

 

http://forum.imasters.com.br/topic/171313-exemplo-de-querystring-passo-a-passo/

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.