Array
(
)

Ajuda com desenvolvimento web

PHP
Maycon Felippe
   - 31 out 2015

Boa tarde..
bom vamos lá estou desenvolvendo um sistema para meu tcc na faculdade..
Programo em delphi.. mas a faculdade não aceitou o meu projeto em delphi.. então..
Bom gostaria de uma luz para saber quais ferramentas usar para que o meu arquivo php no momento que for clicado nos botões da tela
o arquivo não seja atualizado e assim não suma as minhas outras consultas feitas na pagina..
Poderiam me indicar quais ferramentas poderia fazer isso e de uma forma simples.. pois estou correndo contra o tempo..
Agradeço desde já..
Obrigado a todos..

Marcio Araujo
   - 31 out 2015


Citação:
Bom gostaria de uma luz para saber quais ferramentas usar para que o meu arquivo php no momento que for clicado nos botões da tela


Boa tarde, poderia explicar essa parte do que escreveu?

Maycon Felippe
   - 31 out 2015

Marcio..
Tenho uma pagina .php de pedidos
eu faço a consulta dos produtos que faltam mas no momento que eu adiciono esse produto ao pedido
a pagina ela atualiza e assim some o que eu tinha na pagina..
queria saber como fazer pra isso não acontecer ..

tipo .. eu clicar em adicionar e minha consulta continuar lá sem limpar a pagina..
a pagina faz um reload e volta zerada.. some tudo
deu pra entender.?

Marcio Araujo
   - 01 nov 2015

Já olhou no código para aonde está sendo "levado" a pagina depois que efetua a operação?

Alekym
   - 05 nov 2015

Tente usar AJAX nos botões, ele carrega dentro da DIV especifica e não recarrega a pagina toda a menos que você programe para fazer isso.

Pode usar, também, funções javascript para adicionar componentes via innerHTML.

Eu utilizo da seguinte forma:

Acrescento o plugin AJAX na pagina:
#Código

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


Depois disso, só chamar a pagina em PHP, no onClick do botão da seguinte forma:

#Código
ajax($pagina_ajax,$div_carregar);


No caso ficaria assim(o caminho tem que ser especificado caso a pagina não esteja na raiz):

#Código
ajax('modulos/consulta/excluir.php?id=<?= $dados_solicitacao['id'] ?>', 'exclui<?= $dados_solicitacao['id'] ?>')


A pagina é programada em PHP e só me retorna o que eu preciso(mudar um status, popular um campo, etc.).

Nesse caso acima, ele manda o id do produto que eu quero excluir, e carrega o retorno dentro da div com id='exclui+id_do_produto'.

Espero ter ajudado.

Marcio Araujo
   - 05 nov 2015

Sem o Ajax é possivel Alekym?

Maycon Felippe
   - 06 nov 2015

Bom dia..
Alekym obrigado pela ajuda..
Nessa parte de js ou ajax
não sei nem o b,a,ba.. rs
Bom seria somente esse código para realizar essa função?
ou você resumiu para que eu possa entender?

Maycon Felippe
   - 06 nov 2015

Opa consegui fazer..
Mas agora estou com outra dificuldade.. rs

Eu realizo uma query de consulta para ver os produtos em baixa..
Quando exibo faço isso com uma table html
com isso coloquei esse button para adicionar o produto..
Só que no momento que clico no primeiro button da table html
Ele executa mas os outros button não realizam a função.. ='(

Alekym
   - 06 nov 2015


Citação:
Sem o Ajax é possivel Alekym?


Olha acho que sim, mas possivelmente seria mais complicado. Mas Desconheço outra forma, já que geralmente uso AJAX para isso.

Citação:
Só que no momento que clico no primeiro button da table html
Ele executa mas os outros button não realizam a função.. ='(


Tenta ver se na pesquisa não vem nos nomes ou em alguma string que possua aspas simples ou duplas. o código pode estar interpretando que essa aspa fecha a string e dá erro.

Caso seja isso, coloque o comando addslashes() pra que ele entenda que aspas são parte da string e não o fim dela.

Função addslashes

Se não for isso, poderia por gentileza postar o código para que eu possa ver como você fez?

Maycon Felippe
   - 06 nov 2015

Então amigo.. agora estou com uma outra dificuldade ..
vou por o codigo pra ver se consigo explicar melho..

#Código

 
// Essa é minha class
 while ($linha = pg_fetch_array($query))
           //     foreach ($linha[cod_prod] as $resul ) {

                    echo '<tr class="consulta1">
                                 <input type="text" name="tCod_prod2" value="' .$linha[cod_prod] . '" readonly >
                             <td><p class="codProduto"> ' . $linha[cod_prod] . '</p></td>
                             <td><p class="nomeProduto">' . $linha[nome_prod] . '</p></td>
                             <td><p class="precoProduto">' . $linha[preco_prod] . '</p></td>
                             <td><p class="Marca">' . $linha[marca_prod] . '</p></td>
                             <td><p class="quantProduto">' . $linha[quant_prod] . '</p></td>
                             <td><p class="descProd">' . $linha[descricao_prod] . '</p></td>
                             <td><p class="descTipo">' . $linha[descricao_tipo] . '</p></td>
                             <td><button class="Adicionar" type="button" id="butAdd" onclick="return(this.form)" >Adicionar</button></td>
                      </tr>';
                }
            echo '</table>';

// e aqui o js


$(document).ready(function() {
     $("#butAdd").click(function() {

         var tCod_prod2  = $("input[name=tCod_prod2]").val();
 
        //usar o metodo ajax da biblioteca jquery para postar os dados em processar.php
        $.ajax({
            "url": "processar.php",
            "dataType": "html",
            "data": {
                tCod_prod2 : tCod_prod2
             },
            "success": function(response) {

                //em caso de sucesso, a div ID=saida recebe o response do post
                $("div#saida").html(response);
            }

        });
    });
})




// Aqui onde executo o php mas esta só para que eu possa ver se esta passando os codigos certos
$tCod_prod2  = $_REQUEST['tCod_prod2'];

echo "Seu id é <strong>$tCod_prod2</strong>";

 

Maycon Felippe
   - 06 nov 2015

Esqueci de falar..

o botão só funciona 1 vez e somente lá no primeiro button
os outros não respondem..

porque acontece isso de funcionar só o primeiro e somente uma vez..?

Alekym
   - 06 nov 2015


Citação:

#Código

 
// Essa é minha class
 while ($linha = pg_fetch_array($query))
           //     foreach ($linha[cod_prod] as $resul ) {

                    echo '<tr class="consulta1">
                                 <input type="text" name="tCod_prod2" value="' .$linha[cod_prod] . '" readonly >
                             <td><p class="codProduto"> ' . $linha[cod_prod] . '</p></td>
                             <td><p class="nomeProduto">' . $linha[nome_prod] . '</p></td>
                             <td><p class="precoProduto">' . $linha[preco_prod] . '</p></td>
                             <td><p class="Marca">' . $linha[marca_prod] . '</p></td>
                             <td><p class="quantProduto">' . $linha[quant_prod] . '</p></td>
                             <td><p class="descProd">' . $linha[descricao_prod] . '</p></td>
                             <td><p class="descTipo">' . $linha[descricao_tipo] . '</p></td>
                             <td><button class="Adicionar" type="button" id="butAdd" onclick="return(this.form)" >Adicionar</button></td>
                      </tr>';
                }
            echo '</table>';

 


Tenta assim:

#Código
 
// Essa é minha class
 while ($linha = pg_fetch_array($query))
           //     foreach ($linha[cod_prod] as $resul ) {

                    echo '<tr class="consulta1">
                                 <input type="text" name="tCod_prod2" value="' .$linha[cod_prod] . '" readonly >
                             <td><p class="codProduto"> ' . $linha[cod_prod] . '</p></td>
                             <td><p class="nomeProduto">' . addslashes($linha[nome_prod]) . '</p></td>
                             <td><p class="precoProduto">' . $linha[preco_prod] . '</p></td>
                             <td><p class="Marca">' . $linha[marca_prod] . '</p></td>
                             <td><p class="quantProduto">' . $linha[quant_prod] . '</p></td>
                             <td><p class="descProd">' . addslashes($linha[descricao_prod]) . '</p></td>
                             <td><p class="descTipo">' . addslashes($linha[descricao_tipo]) . '</p></td>
                             <td><button class="Adicionar" type="button" id="butAdd" onclick="return(this.form)" >Adicionar</button></td>
                      </tr>';
                }
            echo '</table>';

 


Por que como eu te disse, pode ser uma aspas simples que fecha a string da função, ou então um acento também.

Maycon Felippe
   - 06 nov 2015

Nada .. Continuar executando só o primeiro buton, ele exibe o cod no clique do button mas
ele só executa no primeiro os outros que o while cria junto com a tabela não funcionam..

Marcio Araujo
   - 06 nov 2015

Obrigado Alekym?

Alekym
   - 06 nov 2015

Agora notei uma coisa, no seu while ta faltando uma "{" no começo.

Maycon Felippe
   - 06 nov 2015

Na verdade nem estava aberto no while..
Mas o button esta do mesmo jeito.. Só executando o primeiro mesmo..
Será que não seria alguma coisa no js mesmo?

Alekym
   - 06 nov 2015

Você usa qual navegador pra visualizar seu projeto?

Se você usa o Chrome, abre o WebDeveloper tool e vê no console se ele da algum retorno sobre a função JS, ja que seu PHP parece normal.

Se voce usa o Firefox, abre o FireBug e vê no console se ele retorna algum erro.

Maycon Felippe
   - 06 nov 2015

Ele não retorna erro..
='(

Será que se eu colocar para o button receber o cod_prod2 eu conseguiria ler dele mesmo ao clicar?

Alekym
   - 06 nov 2015

Cara, como não vi isso antes, quando ele executa a 1ª vez, adiciona um botão com o mesmo id, tu não pode ter dois elementos com o mesmo id no formulário, dá conflito.

Assim, coloca o botão da seguinte forma:

#Código

<button class="Adicionar" type="button" id="butAdd" onclick="return(this.form); adicionar();" >Adicionar</button>


E a tua função JS deixa assim:

#Código
     function adicionar() {
 
         var tCod_prod2  = $("input[name=tCod_prod2]").val();
  
        //usar o metodo ajax da biblioteca jquery para postar os dados em processar.php
        $.ajax({
            "url": "processar.php",
            "dataType": "html",
            "data": {
                tCod_prod2 : tCod_prod2
             },
            "success": function(response) {
 
                //em caso de sucesso, a div ID=saida recebe o response do post
                $("div#saida").html(response);
            }
 
        });
    };


Vê se assim funciona.

Maycon Felippe
   - 09 nov 2015

Opa Alekym..
Desculpe a demora mais tive uma urgência
Meu amigo.. Me parece que assim ele nem esta executando a função..
Não retorna nada..
Será que falta algum detalhe ?

Alekym
   - 14 nov 2015

Assim cara, é alguma coisa por causa do ID do botão, eu elaborei meio na corrida a função e não tive tempo de executar.

Arranje um jeito de que cada vez que ele executar a função, o ID do botão mude e aplique a função no mesmo.

eu vou verificar com mais calma e caso voce não consiga eu posto aqui.