Ir para conteúdo

POWERED BY:

Arquivado

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

GabrielFerrari

[Resolvido] For travando - PHP + AJAX

Recommended Posts

eu tenho um formulário: http://viqtory.com.b...ulario/exemplo/

nesse formulário o cara deveria escolher o número de páginas que ele deseja e então abrir o número de text para ele nomear

e os combos para ele escolher se tem ou não os conteudos.

 

Fiz as texts e funcionou perfeitamente porém depois de inserir as combobox

ele só funciona até 2 páginas

com mais que isso ele trava como pode ser visto no link acima

 

validacao.php

<?php
$campo = $_GET['campo'];
$valor = $_GET['valor'];

if ($campo == "n_pagina") {
	if (!eregi("^([1-2]?[0-9]){:content:}quot;, $valor)) {
		echo "Digite um valor válido! De 1 a 29";
	}else{
		for ($i = 1; $i <= $valor; $i++) {
			echo "<br/>".$i;?>
			<input type="text" name="<?php "campo".$i; ?>"/><br/><p>Clique abaixo para personalizar a página "principal"</p><br/>
			Banner:
			<select size="1" name="<?php echo "combobanner_".$i; ?>">
				<option value="teste">texto1</option>
				<option value="teste">texto2 </option>
				<option value="teste">texto3</option>
				<option value="teste">texto4</option>
			</select><br/>
			Conteúdos de textos:
			<select size="1" name="<?php echo "comboconteudo_".$i; ?>">
				<option value="teste">texto1</option>
				<option value="teste">texto2 </option>
				<option value="teste">texto3</option>
			</select><br/>
			<select size="1" name="<?php echo "comboimagem_".$i;?>">
				<option value="teste">texto1</option>
				<option value="teste">texto2 </option>
				<option value="teste">texto3</option>
			</select><br/><br/>
 <?php
		}		
	}
}
	
header("Content-Type: text/html; charset=ISO-8859-1",true);
?>

 

outros códigos

 

 

funcs.js

//	Variável que receberá o objeto XMLHttpRequest
var req;

function validarDados(campo, valor) {

	// Verificar o Browser
	// Firefox, Google Chrorme, Safari e outros
	if(window.XMLHttpRequest) {
		req	= new XMLHttpRequest();
	}
	// Internet Explorer
	else if(window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	// Aqui vão os valores, caso haja mais de um, e o nome do campo que pediu a requisição.
	var url = "ajax/validacao.php?campo="+campo+"&valor="+valor;
	
	// Chamada do método open para processar a requisição
	req.open("Get", url, true); 
	// Quando o objeto recebe o retorno, chamamos a função callback();
	req.onreadystatechange = function() {
		
		// Exibindo mensagem de carregar
		if(req.readyState == 1) {
			document.getElementById('campo_' + campo + '').innerHTML = '<font color="gray">Verificando...</font>';
		}
	
		// Verifica se o Ajax realizou todas as operações corretamente (essencial)
		if(req.readyState == 4 && req.status == 200) {
 	// Resposta retornada pelo executor.php
			var resposta = req.responseText;
			
			// Abaixo colocamos a resposta na div do campo que fez a requisição
			document.getElementById('campo_'+ campo +'').innerHTML = resposta;
		}
	
	}
	
	req.send(null);
	
}

index.php

<?php header("Content-Type: text/html; charset=ISO-8859-1",true) ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulário de E-mail</title>
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />

<script type="text/javascript" src="ajax/funcs.js"></script>

<style type="text/css">
body {
	font-family: Calibri, Verdana, Arial;
	font-size: 15px;
	font-weight:bold;
	margin: 25px;
}

input {
	border: dotted 1px #333;
	font-family: Calibri, Verdana, Arial;
	font-size: 13px;
}

div {
	padding-top: 5px;
	font-size: 13px;
	color: #C30;
}
</style>
</head>
<body>
<h1>Passo 1</h1>
<h2>Escreva o domínio (nome do seu site) que você deseja:</h2>
<input type="text" name="verificar_dominio"/> <input type="submit" value="consultar"/>
<h1>Passo 2</h1>
<h2>Escolha um dos layouts abaixo</h2>
<a href="images/image-1.jpg" rel="lightbox" title="my caption"><img src="images/thumb-1.jpg" border="0"/></a>
<a href="images/sol2-1.jpg" rel="lightbox" title="my caption"><img src="images/sol1-1.jpg" border="0"/></a>
<a href="images/montanha2-1.jpg" rel="lightbox" title="my caption"><img src="images/montanha1-1.jpg" border="0"/></a>
<a href="images/flor2-1.jpg" rel="lightbox" title="my caption"><img src="images/flor1-1.jpg" border="0"/></a>
<a href="images/inverno2-1.jpg" rel="lightbox" title="my caption"><img src="images/inverno1-1.jpg" border="0"/></a>
<h2>Escolha a cor principal do seu site:</h2>
<select size="1" name="corprincipal">
	<option selected value="Selecione">Selecione!</option>
	<option value="branco">branco</option>
	<option value="cinza">cinza</option>
	<option value="azul">azul</option>
	<option value="azul_escuro">Azul Escurto</option>
	<option value="vermelho">vermelho</option>
	<option value="verde">verde</option>
	<option value="roxo">roxo</option>
	<option value="laranja">laranja</option>
</select>
<h1>Passo 3</h1>
<h2>Organize seu site</h2>
<h3>Escolha a quantidade de paginas necessárias ao seu site em seguida nomeie-as:</h3>
<input type="text" id="n_pagina" name="n_pagina" onblur="validarDados('n_pagina', document.getElementById('n_pagina').value);"/>
<div id="campo_n_pagina"> </div> 

</body>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thelon,

 

Ao tentar acessar não faz nada. Olhando no firebug, aparece o seguinte erro.

 

PHP Parse error: syntax error, unexpected T_STRING in E:\home\viqtory\Web\prototipo\formulario\exemplo\ajax\validacao.php on line 7

 

Olhando o seu código próximo à esta linha, temos o seguinte.

if (!eregi("^([1-2]?[0-9]){:content:}quot;, $valor)) {

Você abriu a aspa dupla e não fechou.

 

Corrija isto e veja se resolve o problema. Se não resolver, poste de novo.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse era um dos erros que eu não tinha percebido :huh:

Mas o erro tava no header também

 

To desde ontem tentando caçar o erro no form e nas combobox que não tinha reparado nele no fim da página

Joguei para a segunda linha e funciono

 

<?php
header("Content-Type: text/html; charset=ISO-8859-1",true);
$campo = $_GET["campo"];
$valor = $_GET["valor"];

if ($campo == "n_pagina") {
	if (!eregi("^([1-2]?[0-9])$", $valor)) {
		echo "Digite um valor válido! De 1 a 29";
	}else{
		for ($i = 1; $i <= $valor; $i++) {
			echo "<br/>".$i;?>
			<input type="text" name="<?php "campo".$i; ?>"/><br/><p>Clique abaixo para personalizar a página "principal"</p><br/><br/>
			Banner:<br/>
			<select size="1" name="<?php echo "combobanner_".$i; ?>">
 <option value="teste">texto1</option>
 <option value="teste">texto2 </option>
 <option value="teste">texto3</option>
 <option value="teste">texto4</option>

			</select><br/><br/>
			Conteúdos de textos:<br/>
			<select size="1" name="<?php echo "comboconteudo_".$i; ?>">
 <option value="teste">texto1</option>
 <option value="teste">texto2 </option>
 <option value="teste">texto3</option>

			</select><br/><br/>
			Imagens do corpo do e-mail:<br/>
			<select size="1" name="<?php echo "comboimagem_".$i;?>">
 <option value="teste">texto1</option>
 <option value="teste">texto2 </option>
 <option value="teste">texto3</option>

			</select><br/><br/>
 <?php
		}
	}
}
?>

 

 

 

Obrigado Matias Rezende http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

 

Preciso baixar o firebug de novo

formatei a máquina e esqueci :P

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.