Jump to content
Developer17

Submit form php + ajax

Recommended Posts

Developer17

Boas tardes,

estou aqui encalhado no meu código e não vejo forma de perceber o porquê de não estar a funcionar.

Podem dar uma ajuda?

Aqui está o meu form.php:

<?php
include_once '/includes/db_connect.php';
include_once '/includes/js/ajax.js';
$clientC = new clientClass($_SESSION['user']);
?>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js" ></script>
    <script type="text/javascript">
	    $(document).ready(function () {
		    $("#actualiza").click(function () {
			    client_update();
		    });
	    });</script>

		    <div class="form-group">
			    <label class="control-label" for="client-name">Nome</label>
			    <input class="form-control" placeholder="Name" id="client-name" value="<?php echo ($clientC->name); ?>" type="text">
		    </div>
		    <div class="form-group">
			    <label class="control-label" for="client-id">User</label>
			    <input class="form-control" id="client-id" value="<?php echo $clientC->user; ?>" disabled="" type="text">
		    </div>
		    <div class="form-group">
			    <label class="control-label" for="client-email">E-mail</label>
			    <input class="form-control" id="client-email" value="<?php echo ($clientC->email); ?>" disabled="" type="text">
		    </div>
		    <br/>
		    <!--<br/>-->
		    <div class="form-group">
			    <label class="control-label" for="client-email">Change password:</label>
		    </div>
		    <div class="form-group">
			    <input class="form-control" placeholder="Password" id="client-password" type="text">
		    </div>

	    <div class="form-group">
		    <input class="form-control" placeholder="New password" id="client-novapass" type="text">
	    </div>
	    <div class="form-group">
		    <input class="form-control" placeholder="Confirm new password" id="client-novapassv" type="text">
	    </div>
	    <a id="actualiza" class="btn btn-primary btn-block">Actualizar dados</a>
    </div>
    </div>
    <div id="resultado"></div>
   </div>
</div>
</div>

O meu ajax.js:

function client_update(){
$(document).ready(function(){
   $('#actualiza').click(function(){
    $.ajax({
	    url:'inserir.php',
	    type:'POST',
	    data: 'name='+$('#client-name').val()+'password='+$('#client-novapassv').val(),

	    success:function(data){
		    $('#resultado').html(data);
	    }
    });
   });
});
}

e o meu inserir.php:

<?php
include_once '/includes/Classes/clientClass.php';
include_once '/includes/psl-config.php';
$valida = true;
$valida1 = true;
$valida2 = true;
$valida3 = true;
if($_POST['client-name'] == ''){
   $retorno.="Preencha o campo nome";
   $valida = false;
}
if($_POST ['client-password'] == ''){
   $retorno.= "Preencha o campo password";
   $valida = false;
}else if ($_POST['client-password'] != $clientC->password){
   $retorno.= "Password inválida";
   $valida = false;
}else{
   $valida1 = true;
}
if($_POST ['client-novapass'] == ''){
   $retorno.="Password não alterada";
   $valida2 = true;
}
if($_POST['client-novapassv'] == ''){
   $retorno.="Tem de confirmar a nova password";
   $valida = false;
}else if($_POST['client-novapassv'] != ['client-novapass']){
   $retorno.="Passwords diferentes";
   $valida=false;
}else{
   $valida3 = true;
}
if ($valida1 && $valida2 && $valida3){
   $nome = $_POST['client-name'];
   $novapass = $_POST['client-novapassv'];

   mysql_query("UPDATE check_list.client(name, password) VALUES ('$nome', '$novapass')");

   if (mysql_affected_rows() != -1){
    $retorno.= "dados actualizados com sucesso";
   }else{
    $retorno.="Erro ao inserir os dados";
   }
}
echo $retorno;

Ao clicar no botão "Actualiza" não acontece absolutamente nada.

Alguém pode dar uma dica?

P.S. Sorry pelo enorme tópico

Share this post


Link to post
Share on other sites
HappyHippyHippo

abre a consola de desenvolvimento do teu browser e indica se esta demonstra alguma mensagem de erro


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Developer17

abre a consola de desenvolvimento do teu browser e indica se esta demonstra alguma mensagem de erro

ReferenceError: client_update is not defined

Share this post


Link to post
Share on other sites
Developer17

ReferenceError: client_update is not defined

Possivelmente porque me faltava isto:

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

Já adicionei isto, agora aparece:

ReferenceError: $ is not defined

Error: Graph container element not found

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens a referência apra o jquery ?

essa referência está antes de todas as outras que necessitam do jquery ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Developer17

Tenho no meu form.php:

<script src="assets/js/jquery-1.7.1.js"></script>

Penso que não preciso em mais nenhum lado..

Tenho no meu form.php:

<script src="assets/js/jquery-1.7.1.js"></script>

Penso que não preciso em mais nenhum lado..

E na página aparece:

Warning: include_once(): Failed opening '/var/www/html/includes/js/ajax.js' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/includes/html/user.php on line 3

Na minha linha 3 tenho o meu include ao meu ficheiro ajax.js

Share this post


Link to post
Share on other sites
HappyHippyHippo

a minha pergunta foi :

essa referência está antes de todas as outras que necessitam do jquery ?

o segundo ponto é bem explícito na mensagem de error : Failed opening

- existe ou não existe o ficheiro ?

- está no local onde dizes que deve estar ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Developer17

a minha pergunta foi :

o segundo ponto é bem explícito na mensagem de error : Failed opening

- existe ou não existe o ficheiro ?

- está no local onde dizes que deve estar ?

Isto é que não entendo mesmo, o ficheiro está lá..Até escrevi o caminho todo para evitar erros

Share this post


Link to post
Share on other sites
HappyHippyHippo

porque é que é o PHP a dar a mensagem de erro e não o browser ?

porque razão estás a fazer a inclusão do ficheiro .js no PHP ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Developer17

porque é que é o PHP a dar a mensagem de erro e não o browser ?

porque razão estás a fazer a inclusão do ficheiro .js no PHP ?

Tinhas razão, já fiz umas alterações.

Agora o problema é que no meu "inserir.php" não está a assumir os campos que recebo no "form.php".

Um dos erros:

Notice: Undefined index: client-name in /var/www/html/includes/html/inserir.php on line 11

Share this post


Link to post
Share on other sites
HappyHippyHippo

que dados estão a ser enviados para a página insere.php ?

// ...
data: 'name='+$('#client-name').val()+'password='+$('#client-novapassv').val(),
// ...

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Developer17

que dados estão a ser enviados para a página insere.php ?

// ...
data: 'name='+$('#client-name').val()+'password='+$('#client-novapassv').val(),
// ...

Desculpa a ignorância mas achei que isso levava os dados inseridos no meu formulário para o "inserir.php" mas,...não?

Desculpa a ignorância mas achei que isso levava os dados inseridos no meu formulário para o "inserir.php" mas,...não?

Funcionaria então desta forma?

   post_data = {
    'client': $('input[id=client-name]').val(),
    'p': $('input[id=client-novapassv]').val()
   };
$(document).ready(function(){
   $('#actualiza').click(function(){
    $.ajax({
	    url:'includes/html/inserir.php',
	    type:'POST',
	    data: post_data,

	    success:function(data){
		    $('#resultado').html(data);

Share this post


Link to post
Share on other sites
HappyHippyHippo

Funcionaria então desta forma?

não

se estás à espera de um valor referenciado pelo nome client-name, como esperas receber só enviando os seguintes dois campos : client e p ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Developer17

não

se estás à espera de um valor referenciado pelo nome client-name, como esperas receber só enviando os seguintes dois campos : client e p ?

Falta então o document.getElementById?

Share this post


Link to post
Share on other sites
HappyHippyHippo
   post_data = {
           'client': $('input[id=client-name]').val(),
//             A
//             |
//         este é o nome do parâmetro que o php irá receber
           'p': $('input[id=client-novapassv]').val()
//           A
//           |
//         este é o nome do parâmetro que o php irá receber
   };


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.