• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmienna z JS do PHP

Object Storage Arubacloud
0 głosów
184 wizyt
pytanie zadane 11 lipca 2022 w PHP przez neo1020 Dyskutant (8,430 p.)

Cześć, mam takie pytanie bo nie wiem jak to zrobić i czy w ogóle jest to możliwe

var t1 = $(this).val();
console.log(t1);
var t2 = "<?php DBQ(t1);?>";
console.log(t2);

DBQ to funkcja w php, czy da się przekazać zmienną t1 do funkcji, która jest w php w zmiennej t2 ?

Z góry dziękuje 

Pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 11 lipca 2022 przez VBService Ekspert (253,400 p.)
wybrane 11 lipca 2022 przez neo1020
 
Najlepsza

 czy w ogóle jest to możliwe

w podanym przez Ciebie przypadku nie, ponieważ wartość dla zmiennej t1 jest "pobierana" z jakiegoś elementu na stronie

$(this).val();

więc najpierw musi się "wykonać" kod html a z nim kod javascript i dopiero ta wartość może zostać przekazana do skryptu php, czy to za pomocą formularza, czy linku, czy za pomocą ajax-a ( fetch )

 

w przypadku gdy zmienna t1 była np. tak zainicjowana

<?php
  function DBQ($val) { // przykładowa funkcja
    return strtolower($val);
  }
   
  $t1 = 'JaKaS_WaRtOsc';
?>
<script>
  var t1 = '<?php echo $t1; ?>'
  var t2 = '<?php echo DBQ($t1); ?>';
  console.log(t1, t2);
</script>

wtedy teoretycznie taki zapis jest możliwy, ale nie jest zalecany ("mieszanie" kodu js-a z php-em), IMHO lepiej jest do tego użyć ajax-a.

 

 

P.S.  How can Javascript client connect to PHp socket Server?

komentarz 11 lipca 2022 przez VBService Ekspert (253,400 p.)

przykład

index.html

<form action="t1_example.php" method="post">
  <label for="t1">t1:</label>
  <input type="text" id="t1" name="t1">
  <input type="submit" value="zapisz">
</form>

t1_example.php

<?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $t1 = trim($_POST['t1']) ?? null;

    if ($t1) {
      echo "<div>t1: {$t1}</div>"
         . '<div>DBQ: '.DBQ($t1).'</div>';
    } else {
      echo '<div>t1 nie zostało podane</div>';
    }
  }

  function DBQ($val) { // przykładowa funkcja
    return "<b>{$val}</b>";
  }
?>
<p>
  <a href="index.html">powrót</a>
</p>

 

komentarz 11 lipca 2022 przez VBService Ekspert (253,400 p.)
edycja 11 lipca 2022 przez VBService

index.html

<form action="t1_example.php" method="get">
  <label for="t1">t1:</label>
  <input type="text" id="t1" name="t1">
  <input type="submit" value="zapisz">
</form>

t1_example.php

<?php
  if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $t1 = trim($_GET['t1']) ?? null;

    if ($t1) {
      echo "<div>t1: {$t1}</div>"
         . '<div>DBQ: '.DBQ($t1).'</div>';

    } else {
      echo '<div>t1 nie zostało podane</div>';
    }
  }

  function DBQ($val) { // przykładowa funkcja
    return "<b>{$val}</b>";
  }
?>
<p>
  <a href="index.html">powrót</a>
</p>

 

komentarz 11 lipca 2022 przez VBService Ekspert (253,400 p.)

index.html

<form>
  <label for="t1">t1:</label>
  <input type="text" id="t1">
  <button type="button" id="save">zapisz</button>
</form>

<script>
  window.onload = load;

  function load() {
    const button_save = document.querySelector('#save');
    button_save.onclick = saveAsUrl;

    function saveAsUrl() {
      const t1 = document.querySelector('#t1').value || '';
      document.location.href = 't1_example.php?t1=' + encodeURIComponent(t1);
    }
  }
</script>

t1_example.php

<?php
  if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $t1 = trim($_GET['t1']) ?? null;

    if ($t1) {
      echo "<div>t1: {$t1}</div>"
         . '<div>DBQ: '.DBQ($t1).'</div>';

    } else {
      echo '<div>t1 nie zostało podane</div>';
    }
  }

  function DBQ($val) { // przykładowa funkcja
    return "<b>{$val}</b>";
  }
?>
<p>
  <a href="index.html">powrót</a>
</p>

 

komentarz 11 lipca 2022 przez VBService Ekspert (253,400 p.)

index.html

<style>
  .error {
    color: red;
  }
</style>

<form>
  <label for="t1">t1:</label>
  <input type="text" id="t1">
  <button type="button" id="save">zapisz</button>
</form>
<pre id="response"></pre>

<script>
  window.onload = load;

  function load() {
    const button_save = document.querySelector('#save'),
          tag_response = document.querySelector('#response');

    button_save.onclick = save;

    function save(e) {
      e.preventDefault();

      const t1 = document.querySelector('#t1').value || '';
      button_save.disabled = true;

      const form_data = new FormData();
      form_data.append('t1', t1);

      postData(form_data); 
    }

    async function postData(form_data) {
      try {
        const response = await fetch('t1_example.php', {
          method: 'POST',
          body: form_data
        });

        const data = await response.text();
        if (data) {
          tag_response.innerHTML = data;
        } else {
          throw 'Brak danych z serwera';
        }
      } catch(err) {
        console.warn('postData:\n' + err);
        tag_response.innerHTML = `<span class="error">${err}</span>`;
      } finally {
        setTimeout(() => {
          button_save.disabled = false;
        }, 500);
      }
    }
  }
</script>

t1_example.php

<?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $t1 = trim($_POST['t1']) ?? null;
 
    if ($t1) {
      echo "t1: {$t1}".PHP_EOL
         . 'DBQ: '.DBQ($t1);
 
    } else {
      echo '<span class="error">t1 nie zostało podane</span>';
    }
  }
 
  function DBQ($val) { // przykładowa funkcja
    return strtoupper("<b>{$val}</b>");
  }
?>

 

1
komentarz 11 lipca 2022 przez neo1020 Dyskutant (8,430 p.)

@VBService, Dziękuję za wyczerpującą odpowiedź, i wiedzę. Rozwiązałem to tak że dodałem atrybuty do button i pobieram dane do wyświetlenia w oknie potwierdzenia

var t1 = $(this).val();
var tt = $(this).attr("data-value");
var tt1 = $(this).attr("data-ilosc");

żeby nie wykonywać znowu połączenia do bazy tylko po nazwę i ilość, ale mało tego gdy rozwiązałem ten problem to drugi rozwiązał się sam gdzie na stronie głównej index.php nie mogłem rozwinąć menu a na każdej innej stronie już tak, mimo tego że kod rozwijania js był w require ('footer.php') :| => :)

1
komentarz 11 lipca 2022 przez ScriptyChris Mędrzec (190,190 p.)

@VBService, fajnie że pomagasz w taki szczegółowy sposób, ale duża prośba, abyś nie podawał gotowców, bo nie do tego służy forum. Autor tematu wstawił raptem kilka linijek kodu, a Ty pokazujesz różne warianty pełnych rozwiązań. Wspomniałeś o Ajax - spoko. To niech autor spróbuje go użyć. Jeśli będzie miał problem, to może opisze go w komentarzu (albo założy nowy temat) i wtedy Ty, czy ktoś inny, spróbuje udzielić dalszej pomocy. A może autorowi uda się samodzielnie wdrożyć Ajaxa i wtedy nauczy się bez pokazywania mu gotowego kodu. :)

1
komentarz 12 lipca 2022 przez Comandeer Guru (601,590 p.)

@VBService, zwracaliśmy Ci już wcześniej uwagę na wrzucanie gotowców. Potraktuj to jako ostatnie ostrzeżenie ze strony administracji.

1
komentarz 12 lipca 2022 przez neo1020 Dyskutant (8,430 p.)
edycja 12 lipca 2022 przez neo1020

@ScriptyChris @Comandeer Panowie spokojnie :) Powinniście być dumni że macie takiego pomocnego fachowca, muszę stanąć w jego obronie żeby nie było, to tylko przykłady a nie gotowe rozwiązania

Kolega naprawdę dał ciekawe linki do tematów których nie udało mi się namierzyć 

Co prawda oczekiwałem odpowiedzi w stylu "nie da się bo..." lub "tak da się np. w taki sposób..." ale z jego pomocą rozwiązałem jeden problem więcej z rozwijaniem menu który na jednej stronie działał a na drugiej nie, mimo tego że skrypt był w stopce, co spowodowało że nie musiałem założyć nowego tematu, zaśmiecać forum, zawracać głowy i nie wiem jak to zrobiłem ale teraz działa. Pozdrawiam

Podobne pytania

0 głosów
2 odpowiedzi 675 wizyt
pytanie zadane 7 lipca 2017 w PHP przez Maciejf Początkujący (470 p.)
0 głosów
2 odpowiedzi 2,466 wizyt
pytanie zadane 13 lipca 2015 w PHP przez Pan Kulomb Pasjonat (18,630 p.)
+1 głos
3 odpowiedzi 152 wizyt
pytanie zadane 3 października 2023 w JavaScript przez Cypika Początkujący (290 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...