Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Passar valores de jQuery para PHP

01-10-2016 19:00

Como posso transferir valores obtidos através de um código jQuery para variáveis PHP? Tenho pesquisado bastante, estou esboçando um código, que exibirei abaixo; nas pesquisas, há informação de que se tem de utilizar AJAX (não sei se é isso, mesmo), mas não está dando certo. Percebo que há muitas outras tentativas nesse sentido, como a deste link: http://stackoverflow.com/questions/1422 ... n-one-file, mas não consigo concluir se tiveram êxito.

Eu gostaria de exibir, principalmente, o valor da largura do navegador numa variável PHP, ou, então, conforme determinada largura, atribuir um número a uma variável PHP.

Abaixo, segue o esboço do código:

<html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <style type="text/css"> #browserInfo{ padding:8px; border:1px solid blue; width:300px; } </style> </head> <body> <h1>jQuery resize() example</h1> <h4>Try resize this browser</h4> <div id="browserInfo"> </div> <script type="text/javascript"> $('#browserInfo').text('Browser (Width : ' + $(window).width() + ' , Height :' + $(window).height() + ' )'); $(window).resize(function () { $('#browserInfo').text('Browser (Width : ' + $(window).width() + ' , Height :' + $(window).height() + ' )'); }); </script> <script type="text/javascript"> $.ajax({ type: 'post', url: 'este_arquivo.php', data: { width : $(window).width(), height : $(window).height() } }); </script> <?php $width = $_POST["width"]; $height = $_POST["height"]; echo $width; echo "&nbsp;-&nbsp;"; echo "variável width"; echo "<br>"; echo $height; echo "&nbsp;-&nbsp;"; echo "variável height"; echo "<br>"; ?> </body> </html>

O que faltaria para esse código funcionar, exibindo as variáveis PHP?

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

01-10-2016 19:02

Estou sem PC agora. Na segunda dou uma ajuda.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

01-10-2016 21:34

Obrigado. Eu continuei tentando e postarei, para ir facilitando. Consegui exibir a largura da página numa variável PHP através do AJAX. São dois arquivos: pagina_atual.php e outra_pagina.php.

Arquivo pagina_atual.php:

<html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script> <style type="text/css"> #browserInfo{ padding:8px; border:1px solid blue; width:300px; } </style> </head> <body> <h1>jQuery resize() example</h1> <h4>Try resize this browser</h4> <div id="browserInfo"> </div> <script type="text/javascript"> $('#browserInfo').text('Browser (Width : ' + $(window).width() + ' , Height :' + $(window).height() + ' )'); $(window).resize(function () { $('#browserInfo').text('Browser (Width : ' + $(window).width() + ' , Height :' + $(window).height() + ' )'); $.ajax({ type: 'GET', url: 'outra_pagina.php', data: {width: $(window).width()}, success: function(data) { $('#php_screen_width').html(data); } }); }); </script> <?php echo "<br><br>"; echo "ABAIXO, A INFORMAÇÃO DA LARGURA PELO AJAX:"; echo "<br><br>"; ?> <div id="php_screen_width"></div> </body> </html>

Arquivo outra_pagina.php:

<?php $jq_ajax_screen_width = $_GET['width']; echo 'width = ' . $jq_ajax_screen_width; ?>

.
Há um problema que não sei se é um erro: no carregamento inicial não é exibido o valor da variável PHP através do AJAX, somente quando se redimensiona o navegador.

Fora tal problema, a minha dúvida maior é a seguinte: eu preciso usar a variável PHP no arquivo pagina_atual.php. O valor dela é exibido pela DIV que está no código AJAX, mas essa variável está no arquivo outra_pagina.php. Como posso utilizar essa variável PHP no arquivo pagina_atual.php fora dessa DIV?

Grato pela força.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

01-10-2016 22:04

Consegui exibir o valor da variável PHP no arquivo pagina_atual.php. Mas não sei se o procedimento está certo.

Eu inseri este código no arquivo outra_pagina.php:

<script language="javascript"> location.href="pagina_atual.php?lgr=<?php echo $jq_ajax_screen_width; ?>"; </script> <?php exit(); ?>

E, no arquivo pagina_atual, inseri este código:

<br><br> <?php echo $_GET['lgr']; echo "&nbsp;-&nbsp;"; echo "variável GET lgr"; echo "<br>"; ?>

.
O problema do carregamento inicial persiste, mas a exibição do valor da variável ocorre conforme o ajuste da largura do navegador.

Por enquanto, testei com GET, e, depois, testarei com POST.

Agora, vou tentar inserir isso no meu código para ver se funciona.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

02-10-2016 10:27

Na adaptação desse código ao que estou desenvolvendo, no equivalente da pagina_atual.php, pelo celular, fica ocorrendo o refresh da página continuamente. Pelo computador, isso não ocorre. Desculpe por continuar postando. Mas quis relatar esse problema.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

03-10-2016 20:00

O método que usou com o location.href redireciona o usuário de uma página para outra.

Por exemplo:

redireciona.php

<script>location.href='resolucao.php....'</script>

resolucao.php

Não entendi o problema do refresh nesse caso. Isso de recarregar só aconteceria se você redirecionasse para o próprio redireciona.php novamente, fazendo um loop.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

03-10-2016 21:59

Não sei se é bem um refresh. Pelo celular, se tento ir subindo a tela com o dedo, ela volta para o topo. No notebook isso não acontece por não ter o efeito de subir a tela, creio.

Eu fiz no chute a adaptação, por isso usei o location.href. No arquivo original, a largura é exibida pela div. Tentei capturar o seu conteúdo, mas me parece que no caso seria capturado o que está dentro dela no formato <div>conteúdo</div>, e não o seu valor informado pelo AJAX.

Tenho pesquisado e testado vários códigos. Li que o AJAX justamente não faz o refresh. Se tiro a div informada da página inicial, o problema não acontece, mas o código não funciona de vez.

O AJAX sempre tem de enviar dados para outra página? Não pode enviar para ela própria?

Eu preciso que a variável php contendo a informação da largura obtida através do AJAX seja exibida na página em que estou. Conforme a largura do dispositivo (ou da janela do navegador, que é o que me parece que é capturado), capturada pelo AJAX e informada na variável PHP defino o número de colunas de exibição do resultado da consulta no banco de dados.

O código abaixo parece que se aproxima bem do que preciso (apesar de utilizar dois arquivos), mas não consigo fazê-lo funcionar. O que faltaria nele para que funcione?

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> var width = $(window).width(); //This is ajax code which will send width to your php page in the screenWidth variable $.ajax({ url: "example.php", //this will be your php page data : {screenwidth:width} }).done(function() { $(this).addClass("done"); }); </script> //example.php code is here : <?php echo $width = $_REQUEST['screenwidth']; ?>

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

03-10-2016 22:27

Acho que entendi. Você precisa usar a resolução atual do navegador para trabalhar o número de resultados no PHP.

Eu acho que o mais lógico no seu caso seria você fazer uma requisição ajax para trazer toda a busca já com a chamada do arquivo.
Vou me basear no exemplo que você postou.

Faz o seguinte:

teste.php

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $() var width = $(window).width(); //This is ajax code which will send width to your php page in the screenWidth variable $.ajax({ url: "teste2.php", //this will be your php page data : {screenwidth:width} }).done(function(content) { $("#conteudo").html(content); }); </script> <div id="conteudo"></div>

teste2.php

<?php echo $width = $_REQUEST['screenwidth']; ?>

Nesse exemplo a largura da tela irá ser mostrada na div.

Então nesse arquivo teste2.php você joga sua consulta para exibir os resultados de acordo com a largura, ai é só fazer os cálculos.

Toda sua consulta vai ser mostrada na div mesmo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

03-10-2016 22:39

Mas como transmito o valor que está na div para a variável PHP que, creio, é usada no arquivo teste1.php?

Outra questão é que preciso do efeito resize, informando a variação do valor da largura conforme é ajustada a largura do navegador, por conta da alteração da orientação do celular. Pode ocorrer de, dependendo do tamanho do celular, ao se deixá-lo na orientação paisagem, serem exibidas duas colunas. Isso tem de ter o jQuery incluído, conforme o primeiro código que postei?

Testei códigos usando sessions e cookies, mas eles alteram a informação da janela somente se o navegador for atualizado. Mas se eu encolher e esticar a largura do navegador, a variação da largura não é informada automaticamente, como no caso do efeito resize do jQuery.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

03-10-2016 22:52

Cara, acho que consegui o que queria fazendo uma pequena alteração no seu exemplo.

No arquivo teste1.php, troquei a linha url: "teste2.php", //this will be your php page por url: "#", //this will be your php page, eliminando o arquivo teste2.php e colocando o seu conteúdo dentro da div no arquivo teste1.php. A exibição da largura está acompanhando a variação da largura da janela. Vou fazer mais uns testes e inserir no meu código e testar pelo celular e retorno. Se quiser testar a alteração aí ficarei ainda mais grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

04-10-2016 08:44

Boa. Eu imaginei que você tem que passar a variável PHP para mesma página, então minha ideia no código era esse código PHP que está na mesma página ficasse em outra, e você passasse para lá e retorna-se o conteúdo dessa página para a principal, na div.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

05-10-2016 07:07

Mas isso que tentei aparentemente deu certo somente nesse código isolado. Também me parece que o navegador começa a querer parar de responder (ou isso era problema do link com o AJAX). Mas tentando isso no meu código de desenvolvimento, não funcionou. O conteúdo de $width não é exibido, e em alguma parte do código, não permite o recebimento, através de GET, de valores que vêm do arquivo anterior, e que utilizo na consulta SQL. Eu gostei muito de ter trabalhado com o AJAX e me parece que oferece muitas possibilidades e quero conhecê-lo mais a fundo. Você pode me dar uma dica, complementando seu exemplo, de como posso realizar o que você imaginou?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

05-10-2016 09:44

Você disse que precisa saber a largura da tela para definir a quantidade de resultados que serão exibidos na consulta.

A minha ideia é que a página de sua consulta não fique no mesmo documento da paginação, e sim na página externa, que vai ser carregada via AJAX.

Eu montei esse outro exemplo, testa ai.

teste.php
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $(document).ready(function() { // função que envia a largura para o arquivo retornando o conteúdo function Largura() { var width = $(window).width(); $("#conteudo").load("teste2.php?screenwidth="+width); } // chamando a função no resize $(window).on("resize", function() { Largura(); }); /// chamando a função no carregamento Largura(); }); </script> <div id="conteudo"></div>

teste2.php

<?php echo $_GET['screenwidth']."<br />"; $l = $_GET['screenwidth']; if($l >= 0 && $l <= 500) { echo "até 500px"; } if($l > 500 && $l <= 1500) { echo "de 501px até 1500px"; } ?>

Como pode notar no teste a um if que retorna uma mensagem de acordo com a resolução recebida.
Você pode atribuir nesse if uma variável que vai alterar a estrutura da sua consulta ou a estrutura do resultado da sua consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

05-10-2016 11:08

Perfeito. É isso. Mas há o seguinte: eu preciso, conforme você citou, atribuir valor a uma variável (a que chamarei de $valor) conforme a variação do conteúdo de $l, mas entendo que isso tem de ser feito em teste1.php, onde está a div:

if($l == 300){ $valor = 1; } elseif($l == 600){ $valor = 2; } else{ if($l == 900){ $valor = 3; } }

Chutando, estou tentando capturar o conteúdo da div com o código abaixo, mas não dá certo (pois ele capturaria o que está escrito entre as tags de abertura e fechamento):

<script type="text/javascript"> var Valor = document.getElementById('conteudo').innerHTML; </script> <?php $exibe_largura = "<script>document.write(Valor)</script>"; echo $exibe_largura; echo "&nbsp;-&nbsp;"; echo "variável exibe_largura"; echo "<br>"; ?>

0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

05-10-2016 11:14

Ou o código no arquivo teste1.php pode usar a variável $l no arquivo teste2.php?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

05-10-2016 11:22

Sim. Você deve capturar o conteúdo da div. Leia abaixo a resposta anterior.

Isso que você fez pode ser feito em teste2.php mas da seguinte forma:

$valor = ""; if($l == 300){ $valor = 1; } elseif($l == 600){ $valor = 2; } else{ if($l == 900){ $valor = 3; } }

Esse exemplo que falei foi imaginando que sua consulta vai ficar no teste2.php ai você usa a variável criada mais fácil.

Já quanto ao script você pode usar o ajax trocando essa linha:

$("#conteudo").load("teste2.php?screenwidth="+width);

por essa

$.ajax({ url: "teste2.php", //this will be your php page data : {screenwidth:width} }).done(function(content) { $("#conteudo").html(content); });

O conteúdo da div que deseja pegar é o que exatamente? E em qual condição precisa desse valor?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

05-10-2016 12:06

Eu preciso pegar a largura, mesmo. A condição é a mesma que é executada no arquivo teste2.php para a exibição do resultado. Mas a consulta sql está no arquivo teste1.php, onde serão exibidos os resultados. Creio que preciso que a variável que contém a largura capturada trabalhe nesse arquivo, então.

Andei dando uma lida sobre AJAX; li que pelo fato de a requisição ser assíncrona, pode-se trabalhar dentro de um arquivo somente, e sem atrapalhar outras partes do código desse arquivo (esse foi, mais ou menos, o meu entendimento). Nisso que estou pretendendo não há essa possibilidade?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

05-10-2016 12:36

Se me permitir, desejo fazer esta citação que está neste link http://www.pinceladasdaweb.com.br/blog/ ... hp-e-ajax/:

"Como funciona o Ajax

A Internet funciona em um modelo de requisição resposta. Em sites, esse protocolo apresenta-se ineficiente. Isso porque é necessário carregar uma página completa a cada requisição e ainda é preciso esperar seu carregamento antes de liberar o usuário para a tomada de qualquer outra ação na página em questão.

O que a tecnologia Ajax permite é uma comunicação assíncrona, dessa forma uma página principal é carregada, e quando um usuário interage em determinada seção doa site uma nova requisição é feita de forma transparente (sem que o usuário precise esperar uma nova página ser carregada) interagindo somente com aquele trecho do site".

O texto ainda continua com ilustrações, dizendo isto, depois:

"Recomenda-se sua utilização em aplicações web que sofrem com o modelo requisição-resposta, tais como: aplicações com menus, com interatividade em tempo real, com modelos de aplicações gráficas (desktop) entre outros. Entretanto não é necessário sua utilização em casos que a informação desejada será carregada apenas uma vez e não terá alterações, como por exemplo: uma tabela de informações para impressão."

Eu acredito que a minha situação se enquadra nesta última citação, pois ao se mudar a orientação do celular, se trabalhará com uma e outra largura, e isso poderá ser feito diversas e seguidamente.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

05-10-2016 13:27

O que imaginei seria só se o documento sofrer um refresh.
Funciona assim:

Quando acessar o documento é feito um refresh passando o valor da largura da tela via GET para o mesmo documento.

Testa ai

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $(document).ready(function() { // função que envia a largura para o arquivo retornando o conteúdo function Largura() { var width = $(window).width(); if(document.location.hash=="") { location.href="teste.php?largura="+width+"#"; } } // chamando a função no resize $(window).on("resize", function() { Largura(); }); /// chamando a função no carregamento Largura(); }); </script> <?php echo $_GET['largura']; ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

05-10-2016 20:04

Bingo! É isso, mesmo. Testei isoladamente, e está perfeito. Mas tentando adaptar ao meu código, está havendo problema no carregamento da página ao receber, ela, da página anterior, valores enviados por GET, que estão sendo perdidos, não sendo exibidos no campo de endereço do navegador. Creio que eu deva fazer referência a esses valores recebidos por GET nesta linha: location.href="teste.php?largura="+width+"#". É isso? Se for, como o faço?

Esses valores recebidos por GET do arquivo anterior são usados na consulta SQL.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Passar valores de jQuery para PHP

05-10-2016 21:04

Isso vai depender da quantidade de valores que você passa, por exemplo:

location.href="teste.php?largura="+width+"<?php echo isset($_GET['tamanho']) ? "&tamanho=".$_GET['tamanho']."" : ""; ?>#";

Caso entre normal na página vai carregar o endereço:

http://localhost/teste.php?largura=..#

Agora caso você passe a variável tamanho o link deve ser assim

http://localhost/teste.php?largura=..&tamanho=10#

Você pode fazer quantos acréscimos necessários com base no modelo acima.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

06-10-2016 20:34

São outras variáveis, que não têm a ver com o tamanho.

Exemplo: $_GET[variavel_1] e $_GET[variavel_2].

Eu coloquei assim a linha, para teste:

location.href="teste.php?variavel_1=$_GET[variavel_1]&variavel_2=$_GET[variavel_1]&largura="+width+"#";

.
Na barra de endereços exibe isto (exibe a própria variável GET e não o seu valor): http://localhost/site/teste.php?variave ... rgura=1366#.

Dá este erro na consuta: Something is wrong in your syntax près de 'where variavel_1 = '$_GET[variavel_1]' and variavel_2 = '$_GET[variavel_2]' or' à la ligne 1.

E, tentado exibir o conteúdo das variáveis, também são exibidas elas próprias:

$_GET[variavel_1] - variável GET variavel_1
$_GET[variavel_2] - variável GET variavel_2
.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

06-10-2016 20:43

Cara, funcionou (eu havia me esquecido de inserir corretamente o PHP no JavaScript):

location.href="teste.php?variavel_1=<?php echo $_GET['variavel_1']; ?>&variavel_2=<?php echo $_GET['variavel_2']; ?>&largura="+width+"#"

Mas está correta a concatenação?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

06-10-2016 20:48

Então, mas se eu acesso o modo de exibição responsiva do Firefox, e vou subindo a página, ela volta para o topo, igual acontecia no celular. Eu não havia percebido essa ocorrência pelo computador por conta de não ter acessado o modo responsivo para testar. Por quê isso deve ocorrer? Não simulei mudança de orientação do dispositivo. A página não é atualizada somente se é alterada a largura? No caso, a impressão que dá é que a página está sendo atualizada por se alterar a altura, também, ao se usar o scroll.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Passar valores de jQuery para PHP

06-10-2016 20:59

Na verdade, se desço a página. Ou se desço nela.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado