AJAX actualizează baza de date MYSQL folosind funcția apelată din HTML generat din PHP (Programare, Javascript, Php, Mysql, Sql, Ajax)

user3070866 a intrebat.

Am o pagină php care generează și afișează un tabel. pentru ultimul rând din tabel vreau să afișez o imagine cu o funcție ‘onclick’ atașată. aceasta va trimite numele de utilizator pentru rândul selectat la un script care va folosi AJAX pentru a actualiza o bază de date. Tabelul se afișează bine, dar AJAX-ul nu funcționează. php-ul meu pentru a afișa imaginea este:

echo "<td> <img id='tblimg' 
    onclick='like('" . $row['Username'] . "')' 
    src='like.jpg' alt='like/dislike image' 
    width='80px' height='30px'></td>";

Funcția javascript este:

<script type="text/javascript" >

        function like(user) 
        {

            $.ajax(
                url: "update.php",
                type: "POST",
                data: { 'username': user, 'liked': '1' },                   
                success: function()
                            {
                                alert("ok");                                    
                            }
            );
        }

</script>       

Și aici este update.php:

<?php

$con=mysqli_connect("","sam74","********","sam74");

// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$Username = $_POST['username'];
$Liked = $_POST['liked'];   

$sql = "UPDATE 'followers' SET 'Liked' = '$Liked' WHERE 'Username' = '$Username'";

if (!mysqli_query($con,$sql))
{
    die('Error: ' . mysqli_error($con));
}

mysqli_close($con);

?>

Comentarii

  • Puteți încerca Firebug și să vedeți ce răspuns primiți după ce ați apelat update.php. –  > Por LorenzoR.
2 răspunsuri
Danny22

Sunt câteva greșeli în acest cod, lasă-mă să te ajut linie cu linie.

echo "<td> <img id='tblimg' 
onclick='like('" . $row['Username'] . "');' 
src='like.jpg' alt='like/dislike image' 
width='80px' height='30px'></td>";

Funcția javascript este:

Scapă mai întâi de ghilimele pentru evenimentul onclick

    function like(user) 
    {

        $.ajax({
            url: "update.php",
            type: "POST",
            data: { 'username': user, 'liked': '1' },                   
            success: function()
                        {
                            alert("ok");                                    
                        }
        });
    }

adăugați { și } la apelul ajax

Îndepărtați ghilimelele din numele tabelului și din câmpuri

$sql = "UPDATE followers SET Liked = '$Liked' WHERE Username = '$Username'";

în succesul ajax și după începerea funcției, puteți tipări întotdeauna un mesaj pentru a vedea dacă funcția dvs. este apelată, iar dacă scriptul php returnează o eroare, utilizați o alertă pentru aceasta.

UPDATE

success: function(data){
   alert(data); // this will print you any php / mysql error as an alert                                    
}

UPDATE 2

Scrieți opțiunea onclick în felul următor.

echo "<img onclick="like('" . $row['Username']. "');" 
src='like.jpg' alt='like/dislike image' 
width='80px' height='30px' />";

Comentarii

  • Verificați codul adăugat după „UPDATE” în răspunsul meu, dacă v-a ajutat, anunțați-mă. –  > Por Danny22.
  • A ajutat foarte mult, mulțumesc. De asemenea, am instalat firebug și asta m-a ajutat cu faptul că am reușit să văd ce a fost postat în update.php. Acum am reușit să lucrez atunci când creez o copie a elementului img pe care încerc să îl afișez din ecoul php în altă parte pe pagină. Încă încerc să mă descurc cu ghilimelele din echo. Pentru ce sunt backslash-urile? ecoul pe care îl încerc în prezent este următorul: echo „<td> <img id=’tblimg’ src = ‘like.jpg’ alt = ‘pic’ width = ’80’ height = ’30’ onclick = ‘like(‘” . $row[‘Username’] . „‘)’ > </td>”; nu sunt sigur care este problema? –  > Por user3070866.
Anthony Grist

The jQuery.ajax() se așteaptă să fie trecut un obiect; trebuie să folosiți { și } pentru a începe și a termina literalul obiectului. Ceea ce aveți în prezent este o sintaxă JavaScript invalidă, dacă ați verifica instrumentele de dezvoltare ale browserului dvs. ați vedea o eroare care indică acest lucru. Așadar:

$.ajax(
    url: "update.php",
    type: "POST",
    data: {
        'username': user,
        'liked': '1'
    },
    success: function () {
        alert("ok");
    }
);

ar trebui să fie

$.ajax({ // added {
    url: "update.php",
    type: "POST",
    data: {
        'username': user,
        'liked': '1'
    },
    success: function () {
        alert("ok");
    }
}); // added }