Mam trochę pętli za pomocą danych z SQLite DB, a następnie pokazuję wszystkie te dane za pomocą BOOTStrap UL / Li i danych z bazy danych.

Kod to coś takiego (bez otwarcia i zamykania znaczników PHP):

$results = $db->query("SELECT * FROM igre WHERE cat = 'slot'");
<div class="container-fluid">
<div class="row">
while($row=$results->fetchArray(SQLITE3_ASSOC)){
$game= $row['kod'];

<div class="gallery_product col-xs-6 col-sm-4 col-md-2 col-lg-2">
<span onclick="spremi()">

<i class="fas fa-star fav-icon"></i></span><a href="#" class="tranzicija zacrni"><img src="sample.jpeg"></a>

</div>

 } 

</div>
    </div>

Zdefiniowałem zmienną jak $ Game = $ rzędu ['kod']; I działa dobrze w tej pętli, ale problem polega na tym, kiedy próbuję użyć tej wartości zmiennej w funkcji jQuery, której używam do przechowywania danych.

Funkcja, której używam do przechowywania danych OnClick (Spremi) tylko wartość z ostatniego rekordu, a nie z rekordu, kliknął:

<script>
function spremi(){
    $korisnik = "<?php echo $uid;?>";
    $kod = "<?php echo $game;?>";
    $.ajax({
        url: "prihvati.php",
        data: {korisnik : $korisnik, igra : $kod},
        type: "GET",
        dataType: "json",
        //on success
        success: function(data){
        },
        error: function(){
        }
    });
}

Potrzebuję tej funkcji, aby działać dobrze na każdy rekord, na przykład, jeśli gra jest "ABC", aby przeczytać, że od $ gry zmiennej lub drugiej gry jest "Trz", aby ocalić, i tak dalej ...

0
Adel 27 luty 2019, 01:00

2 odpowiedzi

Najlepsza odpowiedź

Pass Game Zmienna do funkcji JavaScript:

...
<span onclick="spremi('<?=$game?>')">
...

A następnie użyj go w spremi funkcji.

function spremi(game){
    $.ajax({
        url: "prihvati.php",
        data: {korisnik : "<?=$uid?>", igra : game},
        type: "GET",
        dataType: "json",
        //on success
        success: function(data){
        },
        error: function(){
        }
    });
}
2
Sky 26 luty 2019, 22:10

Problem polega na tym, że kod JavaScript jest poza pętlą while. Więc piszesz po prostu ostatnią wartość, którą te zmienne miały, gdy zostanie zakończona pętla.

Możesz to naprawić, pozwalając funkcji JavaScript zaakceptować te wartości jako parametry wejściowe i dokonanie połączenia do funkcji (która tworzona w pętli) przekazuje odpowiednie wartości w:

PHP / HTML.

$results = $db->query("SELECT * FROM igre WHERE cat = 'slot'");

<div class="container-fluid">
<div class="row">

while($row=$results->fetchArray(SQLITE3_ASSOC)) {
  $game = $row['kod'];

  <div class="gallery_product col-xs-6 col-sm-4 col-md-2 col-lg-2">
  <span onclick="spremi('<?php echo $uid;?>', '<?php echo $game;?>')">

  <i class="fas fa-star fav-icon"></i></span><a href="#" class="tranzicija zacrni"><img src="sample.jpeg"></a>

</div>
} 
</div>
</div>

JavaScript:

function spremi(korisnik, kod) {
   $.ajax({
        url: "prihvati.php",
        data: { korisnik : korisnik, igra : kod},
        type: "GET",
        dataType: "json",
        //on success
        success: function(data){
        },
        error: function(){
        }
    });
}

N.B. W oryginalnym kodzie PHP nie uwzględniłeś żadnego odniesienia do $uid, więc założyłem, że jest wypełniona gdzieś, zanim go użyłem powyżej.

1
ADyson 26 luty 2019, 22:39