Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX][PHP] Tabela z Danymi z BAzy MySQL - reakcja na kliknięcie jQuery
Forum PHP.pl > Forum > Przedszkole
scorpion10
Pobrane z Bazy dane trafiają do Tabeli umieszczonej w Div a na każdy wiersz tabeli <TR> ustawiona jest reakcja na klikniecie i obsługa tego klliknięcia w jQuery/Ajax która ma wyświetlić dane z klikniętego wiersza tabeli w <DIV> obok.
I niby to działa ale tylko na pierwszy wiersz tabeli i jeden rekord, zawsze pierwszy pobrany w pętli w PHP. Jak zrobić by jQuery / Ajax przekazywał dane po kliknięciu w każdy wiersz tabeli a nie tylko pierwszy ? żeby jakoś zapamiętał ID pobranych rekordów z bazy, z góry dziękuje za pomoc.

Do obsługi tego użyłem trzech plików ::


Pobranie danych z bazy do formularza


Kod
<div class="przekazanie_sr">

    <?php

    $pracownicy = "SELECT P.nazwisko,P.imie,L.pokoj,S.stanowisko,U.miejscowosc,P.ID_pracownik
                    FROM tb_workers P
                    INNER JOIN sl_lokalizacja L ON P.ID_lokalizacja = L.ID_lokalizacja
                    INNER JOIN sl_stanowisko S ON P.ID_stanowisko = S.ID_stanowisko
                    LEFT JOIN sl_urzad U ON U.ID_urzad = L.ID_urzad ORDER BY 2";

    $wynikprac = $db->query($pracownicy);

    ?>

        <table id='przekazanie'>

        <form method="POST">
    
    <?php

  

    while($row=mysqli_fetch_array($wynikprac)){
  
        $im = $row['imie'];
        $naz = $row['nazwisko'];
        $idd = $row['ID_pracownik'];
        $rekord = $row['idprac'];

echo "<tr id='osobnik'>";

if($row['nazwisko']){

echo "<td><font size='2'>".$row['nazwisko']."</font></td>";
}  

else
{  
echo "<td><font size='1' color='red'><i>Brak Kategorii !</i></font></td>";
}
echo "<td><font size='3'>".$row['imie']."</font></td>";
    echo "<td><font size='2'>".$row['pokoj']."</font></td>";
        echo "<td><font size='2'>".$row['miejscowosc']."</font></td>";
            echo "<td><font size='2'>".$row['stanowisko']."</font></td> ";
  
            echo '<script src="scripts/osoba.js"></script>';

?>

            <input type="hidden" id="name" value=<?php echo $im ?>>
            <input type="hidden" id="surname" value=<?php echo $naz ?>>
            <input type="hidden" id="idf" value=<?php echo $idd ?>>
      
<?php

}

?>


</form>

  </table>

  </div>




obsługa w jQuery/Ajax


Kod
$(document).ready(function(){
    $("#osobnik").click(function(){
var imiee = $('#name').val()
var nazwiskoo = $('#surname').val()
var ido = $('#idf').val();

var ajax = $.ajax ({
url:'ajax.php',
type:'POST',
data:{imie:imiee,nazwisko:nazwiskoo,idx:ido}

});

ajax.done(function(msg){
$('#komu').html(msg);
console.log("SUCESS exclamation.gif!");
console.log(imiee);
console.log(nazwiskoo);
console.log(ido);
});

ajax.fail(function(){
console.log('BŁĄD  !!!!');
});

ajax.always(function(){
console.log('ZAMYKAM POŁACZENIE');
});

});
});


Odebranie danych z Ajax przez PHP


Kod
<?php
$a = ($_POST['imie']);
$b = ($_POST['nazwisko']);
$c = ($_POST['idx']);
echo $a;
echo $b;
echo $c;
?>

<div id="Dane" style="border:solid 1px black"></div>
nospor
var imiee = $('#name').val()
var nazwiskoo = $('#surname').val()
var ido = $('#idf').val();

Tutaj zawsze pobierasz dane z tego samego ID. Jak wszystkie pola maja to samo ID to zawsze ci zwroci z pierwszego znalezionego. Na klikniecie masz pobeirac dane z wiersza na ktorym kliknieta a nie z ogolnego ID.
scorpion10
Mógł byś podać jakiś przykład, jak to zmienić w jQuery by odbierał z każdego wiersza <TR> ? Bo w samej źródłowej tabeli z danymi są oczywiscie ID, inne dla każdego rekordu, ale nie mogę ogarnąć jak w JQuery rozpoznać to ID po kliknięciu w wiersz tabeli ? A może w samym pliku PHP należało by coś zmienić ?
nospor
Masz uzywac KLAS a nie ID

Nie
echo "<tr id='osobnik'>";

a:
echo "<tr classs='osobnik'>";



Nie
$("#osobnik").click(function(){

a:
$(".osobnik").click(function(){


nie
<input type="hidden" id="name" value=<?php echo $im ?>>
a:
<input type="hidden" class="name" value=<?php echo $im ?>>
inne pola tak samo


Nie
var imiee = $('#name').val()
a:
trObj = jQuery(this);
var imiee = trObj.find(".name").val();
inne pola tak samo
scorpion10
Wielkie, wielkie dzięki za pomoc :-) Działa już OK !

Chciałbym jeszce wrócić do Tematu, po sprawdzeniu, mam jeszcze jeden mały problem. Jeżeli w polu rekordu w bazie mam zapis kilku wyrazowy, rozdzielonych spacją np. "Spółka Prawna", to zmienna
np. var nazwa = trObj.find('.nazwa').val() przyjmuje wartość tylko pierwszego wyrazu z pola rekordu i ma wartość w tym przykładzie "Spółka", co należało by zmienić by przyjeła wartość całego pola bo niestety ale z jQuery dopiero zaczynam przygodę
nospor
No bo nie
value=<?php echo $im ?>

a
value="<?php echo $im ?>"
scorpion10
ehhh , no tak przecież to String i powinien być w " " Dzięki kolejny raz @nospor :-)
nospor
string nie string, nie wazne. Symantyka jest taka, ze zawsze maja byc tam cudzyslowia i tyle
Tak jak pisales
id="name"

a nie
id=name

Jak value bedzie 5 to tez ma byc
value="5"
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.