Visualizzazione risultati 1 fino 6 di 6

Discussione: Aggiungere Rimuovere Favoriti

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Exclamation Aggiungere Rimuovere Favoriti

    Salve a tutti

    ho trovato uno script in rete per aggiungere e rimuovere una icona per preferiti in Ajax

    il tutto e' stato adattato al mio codice e al database, ma per qualche strano errore (che non riesco a trovare non visualizzo l'icona per aggiungere e rimuovere)



    partiamo dal database, la tabeella favs e' collegata alla tabella actor e al campo actor_id

    Codice:
    CREATE TABLE `favs` (
      `favoriti_id` smallint(5) unsigned NOT NULL,
      PRIMARY KEY (`favoriti_id`),
      CONSTRAINT `favs_ibfk` FOREIGN KEY (`favoriti_id`) REFERENCES `actor` (`actor_id`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    codice index.php


    Codice PHP:
    <script src="jquery.min.js"></script>
    <script type="text/javascript">
    jQuery(document).ready(function($){
    $('.button').on('click', function(e){
    e.preventDefault();
    var actor_id = $(this).attr('actor_id'); // Get the parameter user_id from the button
    var favoriti_id = $(this).attr('favoriti_id'); // Get the parameter director_id from the button
    var method = $(this).attr('method'); // Get the parameter method from the button
    if (method == "Like") {
    $(this).attr('method', 'Unlike') // Change the div method attribute to Unlike
    $('#' + favoriti_id).replaceWith('<img class="favicon" id="' + favoriti_id + '" src="favon.jpg">') // Replace the image with the liked button
    } else {
    $(this).attr('method', 'Like')
    $('#' + favoriti_id).replaceWith('<img class="favicon" id="' + favoriti_id + '" src="favoff.png">')
    }
    $.ajax({
    url: 'favs.php', // Call favs.php to update the database
    type: 'GET',
    data: {actor_id: actor_id, favoriti_id: favoriti_id, method: method},
    cache: false,
    success: function(data){
    }
    });
    });
    });
    </script>



    <?php
    $servername
    = "localhost";
    $username = "xxx";
    $password = "xxx";
    $dbname = "xxx";
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
    die(
    "Connection failed: " . $conn->connect_error);
    }

    function
    checkFavorite($actor_id, $favoriti_id, $conn) {
    $result = $conn->query("SELECT * FROM favs WHERE actor_id = '". $actor_id."' AND favoriti_id = '". $favoriti_id."'");
    $numrows = $result->num_rows;
    if (
    $numrows == 0) {
    echo
    "<div class = 'button' method = 'Like' actor_id = ".$actor_id." favoriti_id = ".$favoriti_id."> <img id=".$favoriti_id." src='favoff.png'> </div>";
    }
    else {
    echo
    "<div class = 'button' method = 'Unlike' actor_id = ".$actor_id." favoriti_id = ".$favoriti_id."> <img id=".$favoriti_id." src='favon.jpg'> </div>";
    }
    }
    // Query to get the user_id
    $result = $conn->query("SELECT * FROM actor WHERE nome = 'Alex'");
    $row = $result->fetch_assoc();
    $actor_id = $row['actor_id'];

    // Query to Get the Director ID
    $result = $conn->query("SELECT * FROM actor WHERE nome = 'Alex'");
    $row = $result->fetch_assoc();
    $actor_id = $row['actor_id'];

    echo
    "<p>Actor: ".$row['nome']."</p> ";
    $fav_image = checkFavorite($actor_id, $favoriti_id, $conn);
    echo
    "Favorite? : ".$fav_image."";
    ?>
    secondo codice favs.php per inserire e rimuovere

    Codice PHP:

    <?php
    $servername
    = "localhost";
    $username = "xxx";
    $password = "xxx";
    $dbname = "xxx";
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
    die(
    "Connection failed: " . $conn->connect_error);
    }

    $method = $_GET['method'];
    //$user_id = $_GET['user_id'];
    $actor_id = $_GET['actor_id'];

    if (
    $method == "Like") {
    mysqli_query($conn,"INSERT INTO favs (favoriti_id) VALUES ('$actor_id')");
    }
    else {
    mysqli_query($conn,"DELETE FROM favs WHERE favoriti_id = '$actor_id'");
    }
    ?>
    grazie per la vostra attenzione
    Ultima modifica di blackskyisback : 23-08-2021 alle ore 17.55.17

  2. #2
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    aggiornamento, sono riuscito a visualizzare l'icona con qualche modifica al codice php
    il problema e' che quando aggiorno la pagina lo stato icona ritorna nullo anche se nel database sono salvati i valori

    prima



    dopo



    dopo refresh pagina




    Codice PHP:
    $actor_id = $_GET["id"];

    $favoriti_id = $actor_id;

    function
    checkFavorite($actor_id, $favoriti_id, $conn) {
    $result = $conn->query("SELECT * FROM favs WHERE actor_id = '". $actor_id."' AND favoriti_id = '". $favoriti_id."'");
    $numrows = $result->num_rows;
    if (
    $numrows == 0) {
    echo
    "<div class = 'button' method = 'Like' actor_id = ".$actor_id." favoriti_id = ".$favoriti_id."> <img id=".$favoriti_id." src='favoff.png'> </div>";
    }
    else {
    echo
    "<div class = 'button' method = 'Unlike' actor_id = ".$actor_id." favoriti_id = ".$favoriti_id."> <img id=".$favoriti_id." src='favon.jpg'> </div>";
    }
    }



    // Query to get the user_id
    //$result = $conn->query("SELECT * FROM actor WHERE actor_id = $actor_id");
    // $row = $result->fetch_assoc();
    // $actor_id = $row['actor_id'];

    // Query to Get the Director ID
    $result = $conn->query("SELECT * FROM actor WHERE actor_id =" .$actor_id);
    $row = $result->fetch_assoc();
    $actor_id = $row['actor_id'];

    // echo "<p>Actor: ".$row['nome']."</p> ";
    $fav_image = checkFavorite($actor_id, $favoriti_id, $conn);
    echo
    "Favorite? : ".$fav_image."";

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,298

    Predefinito

    Non ho controllato bene il codice, ma a occhio mi sembra che la parte interessata sia questa:
    Codice PHP:
    $result = $conn->query("SELECT * FROM favs WHERE actor_id = '". $actor_id."' AND favoriti_id = '". $favoriti_id."'");
    $numrows = $result->num_rows;
    if (
    $numrows == 0) {
    echo
    "<div class = 'button' method = 'Like' actor_id = ".$actor_id." favoriti_id = ".$favoriti_id."> <img id=".$favoriti_id." src='favoff.png'> </div>";
    }
    else {
    echo
    "<div class = 'button' method = 'Unlike' actor_id = ".$actor_id." favoriti_id = ".$favoriti_id."> <img id=".$favoriti_id." src='favon.jpg'> </div>";
    }
    Quindi, sei sicuro che se la query trova 0 risultati, method deve valere 'Like' altrimenti 'Unlike'?

    Al caricamento della pagina, appare 'Like'? Ovvero, il codice HTML generato da PHP è corretto? Hai modo di mostrarci una pagina (anche semplificata) che mostra il problema?

    Ciao!
    Ultima modifica di alemoppo : 23-08-2021 alle ore 20.14.23

  4. #4
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao alemoppo

    il codice html restituisce questo

    Codice HTML:
    	 <!-- FAVORITI TEST INIZIO -->
    	 
    	 <script src="jquery.min.js"></script>
        <script type="text/javascript">
        jQuery(document).ready(function($){
              $('.button').on('click', function(e){
                  e.preventDefault();
                  var actor_id = $(this).attr('actor_id'); // Get the parameter user_id from the button
                  var favoriti_id = $(this).attr('favoriti_id'); // Get the parameter director_id from the button
                  var method = $(this).attr('method');  // Get the parameter method from the button
                  if (method == "Like") {
                    $(this).attr('method', 'Unlike') // Change the div method attribute to Unlike
                    $('#' + favoriti_id).replaceWith('<img class="favicon" id="' + favoriti_id + '" src="favon.jpg">') // Replace the image with the liked button
                  } else {
                   $(this).attr('method', 'Like')
                   $('#' + favoriti_id).replaceWith('<img class="favicon" id="' + favoriti_id + '" src="favoff.png">')
                  }
                  $.ajax({
                      url: 'favs.php', // Call favs.php to update the database
                      type: 'GET',
                      data: {actor_id: actor_id, favoriti_id: favoriti_id, method: method},
                      cache: false,
                      success: function(data){
                      }
                  });
              });
          });
        </script>
    	
    <div class = 'button' method = 'Like'  actor_id = 40 favoriti_id = 40> <img id=40 src='favoff.png'> </div>Favorite? : 	 
    	 
    	 
    	 
    	 
    	 <!-- FAVORITI TEST FINE -->
    nel database il dato e'ancora presente



    Ultima modifica di blackskyisback : 23-08-2021 alle ore 20.26.13

  5. #5
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    risolto

  6. #6
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    il codice si trova qui, poi ognuno si applica le modifiche in base al suo script e al database

    https://github.com/FakeCast/favorite_button

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •