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

Zmienna z JS do PHP

Cloud VPS
0 głosów
333 wizyt
pytanie zadane 11 lipca 2022 w PHP przez neo1020 Dyskutant (8,950 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 (256,600 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 (256,600 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 (256,600 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 (256,600 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 (256,600 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,950 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 (607,100 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,950 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 789 wizyt
pytanie zadane 7 lipca 2017 w PHP przez Maciejf Początkujący (470 p.)
0 głosów
2 odpowiedzi 2,695 wizyt
pytanie zadane 13 lipca 2015 w PHP przez Pan Kulomb Pasjonat (18,630 p.)
+1 głos
3 odpowiedzi 233 wizyt
pytanie zadane 3 października 2023 w JavaScript przez Cypika Początkujący (290 p.)

93,469 zapytań

142,404 odpowiedzi

322,716 komentarzy

62,852 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

Kursy INF.02 i INF.03
...