Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    realizzazione bottone "Mi piace"

    ciao
    ho realizzato un semplice bottone (Mi piace) e fino a che ho usato un numero determinato di prodotti andava bene! tipo per 10 prodotti nella mia "genialità" creavo 10 piccoli database testuali dove registravo i mi piace! E funzionava benissimo!

    ora invece mi trovo di fronte alla necessità di utilizzare un modo per memorizzare prodotti leggermente più sofisticato (li inserisco da un form in un datatbase testuale).
    vorrei legare ad ogni oggeto un bottone "mi piace" e che premuto registri +1 nel database.

    questo è il codice che uso per leggere da database....

    Codice PHP:
    $my_database_txt 'prodottitxt';   
    if(!isset(
    $_GET['row'])){   
        
    header("location: letturadef3.php");   
        exit;   
        }   
    $array_righi file($my_database_txt );   
    if(!isset(
    $array_righi[$_GET['row']])){    
        }   
    list(
    $immagine,$immagine2,$immagine3,$descrizione$prezzo$data,$titolo,$voto) = explode("|"$array_righi[$_GET['row']]); 

  2. #2
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Questo bottone "Mi Piace" deve essere visualizzato solo da utenti autenticati oppure da tutti?

  3. #3

  4. #4
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    La soluzione più semplice per aggiungere i +1 al database testuale (sebbene i voti siano falsabili), è aggiungere un altro campo a ogni prodotto che contenga il valore attuale dei mi piace, maggiorarlo a 1 una volta premuto il tasto e riscrivere il file con il voto maggiorato. Esempio (senza nessun controllo):
    Codice PHP:
    <?php
    $my_database_txt 
    'prodottitxt';   
    if(!isset(
    $_GET['row'])){   
        
    header("location: letturadef3.php");   
        exit;   
        }   
    $array_righi file($my_database_txt );   
    if(!isset(
    $array_righi[$_GET['row']])){    
        }   
    list(
    $immagine,$immagine2,$immagine3,$descrizione$prezzo$data,$titolo,$voto,$like) = explode("|"$array_righi[$_GET['row']]);
    #incremento la variabile like di 1
    $like++;
    echo 
    $like#per il debug, puoi anche eliminarlo se non ti serve
    #riscrivo la stringa $array_righi[$_GET['row']], Ora $array_righi conterrà anche la stringa con l'incremento di 1
    $array_righi[$_GET['row']] = "$immagine|$immagine2|$immagine3|$descrizione|$prezzo|$data|$titolo|$voto|$like";
    #apro il file prodottitxt in sola scrittura, svuotandolo e riscrivendo tutto $array_righi
    $databaseTestuale fopen($my_database_txt'w');
    fwrite ($databaseTestualeimplode(''$array_righi));
    ?>
    Come ho già detto, i voti possono essere falsati: infatti io, da utente non registrato, con questo script posso mettere quanti mi piace voglio. Tuttavia, puoi sempre migliorarlo, magari inserendo una lista di tutti coloro che hanno messo Mi Piace, controllando opportunamente se si tratta di un utente normale o di un utente registrato. Per qualsiasi problema, non esitare a domandare

    Edit: ovviamente, affinchè lo script funzioni devi ricordarti di aggiungere il campo dei like. Ad esempio da quello che ho capito tu al momento dovresti avere un file di questo tipo
    codice:
    immagine1notizia1|immagine2notizia1|immagine3notizia1|4|5|6|7|0
    immagine1notizia2|immagine2notizia2|immagine3notizia2|4|5|6|7|0
    devi modificare la struttura aggiungendo un |0 alla fine di ogni riga, quindi il file dovrebbe essere così(ti evidenzio in rosso la differenza tra le due versioni)
    codice:
    immagine1notizia1|immagine2notizia1|immagine3notizia1|4|5|6|7|0|0 
    immagine1notizia2|immagine2notizia2|immagine3notizia2|4|5|6|7|0|0

  5. #5
    ma usare un db "non testuale" no? Basterebbe anche una tabellina con id_prodotto, voti e una query del tipo update tabella set voti = voti +1...

    cmq prima di aggiornare i voti devi loccare il file altrimenti ti si sballano i mi piace (questa http://php.net/manual/en/function.flock.php dovrebbe fare al caso tuo)

    non ho capito molto il discorso di Enjix, soprattuto sul come il suo esempio porti ad evitare il "mi piace" illimitato da parte di utente non registrato (non ho manco capito se col suo esempio era intenzionato a limitare la cosa o meno), cmq puoi sempre pensare di settare un cookie in chi vota per evitare che lo faccia due volte (pulitura dei cookies a parte)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    enjix grazie per la risposta!!
    l ho provato, ma non riesco a farlo funzionare!
    ho creato un link (piu avanti sarà un bottone) se si clikka si va su un file dove ho messo le istruzioni (il tuo codice) per aggiornare il contatore nel database.
    ho aggiunto nel form di inserimento descrizione prodotti un campo nascosco (voto) che va ad aggiungere il dato ($voto) al database.
    però non mi si aggiorna!

  7. #7
    Codice PHP:

    <?php 
    $my_database_txt 
    'prodottitxt';    
    if(!isset(
    $_GET['row'])){    
        
    header("location: letturadef3.php");    
        exit;    
        }    
    $array_righi file($my_database_txt );    
    if(!isset(
    $array_righi[$_GET['row']])){     
        }    
    list(
    $immagine,$immagine2,$immagine3,$descrizione$prezzo$data,$titolo,$voto,$like) = explode("|"$array_righi[$_GET['row']]);
     
    #incremento la variabile $voto di 1 
    $voto++; 

    #riscrivo la stringa $array_righi[$_GET['row']], Ora $array_righi conterrà anche la stringa con l'incremento di 1
     
    $array_righi[$_GET['row']] = "$immagine|$immagine2|$immagine3|$descrizione|$prezzo|$data|$titolo|$voto";
     
    #apro il file prodottitxt in sola scrittura, svuotandolo e riscrivendo tutto $array_righi
     
    $databaseTestuale fopen($my_database_txt'w'); 
    fwrite ($databaseTestualeimplode(''$array_righi)); 
    ?>
    allora la $voto è stata impostata nel database testuale con valore iniziale 0.
    con la funzione [$_GET['row']] considero il rigo del database (ad esempio 2) e me lo sono portato dietro dalla pagina riepilogativa dell'oggetto.
    Vado a leggre il databse dove dove memorizzo i dati dell'oggetto e i voti.
    incremento $voto di 1 facendo $voto++
    e vado a memorizzare !

    Non mi funziona! Dove sbaglio?
    Grazie!

  8. #8
    ciao!
    sono stato tutto il giorno a controllarmi questa cosa! niente!
    solo pochi minuti fa ha funzionato! per un paio di minuti!!
    spiego!
    non ho cambianto nulla nel codice..
    ad un certo momento ho cambiato a mano il valore nel database da 0 a 55 ed ha cominciato a funzionare!
    allora per prova ho cancellato i vari prodotti memorizzati e ho ricaricato un paio di prodotti per prova..
    uno funzionava e uno no!
    ora nuovamente non funziona nulla!
    eppure mi sembra una cosa molto semplice!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.