Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    209

    Pulsate "Mi Piace" artigianale!!!

    Scusate il titolo ma non sapevo come scrivere!!
    Allora....spiego in breve!Mi hanno chiesto su un sito di mettere dei pulsanti MI PIACE come quelli che c'è su Facebook di modo che su ogni notizia scritta le persone possano cliccare se la news piace o meno!!!

    Non avendo mai studiato Ajax ho deciso di provare a farlo da me modificando uno script, in ajax, che preveda la compilazione di un form per inviare messsaggi su mail!!!

    Il tutto funziona..sono riuscito a fare in modo che cliccando sul pollice (come su facebook insomma) compaia la scritta: " A tot persone piace questo elemento" ,dove il tot aumenta ad ogni click!e il tutto con ajax quindi col risultato in tempo reale.

    Il problema però avviene nel momento in cui inserisco un ciclo di FOR che mi ripeta il "mi piace" per 10 volte!! Il primo pulsante funziona..mi fa la somma dei click!!gli altri 9 invece mi ricaricano la pagina!!!

    Dunque..vi posto allora i 3 file principili:
    index.php
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
    	<title>Send a mail with php and ajax using jquery</title>
    	<link rel="stylesheet" type="text/css" href="style.css" />
    	<script type="text/javascript" src="jquery.js"></script>
    
    </head>
    
    <body>
    
    <div id="wrap">
    
    	<div class="contenitore">
    			<table> 
    			<tr valign="top"> 
    			<td>
    		<form id="contenutoajax" action="" method ="post">
    
    			<input type="image"  src="../images/template/scarti/mipiace.jpg" value="send mail" id="sendmail" name="sendmail"  width="25" height="25" />
    
    			</form></td>
    			<td><div id="response">
    		
    		</div></td>
    		</tr></table>
    			<script type="text/javascript" src="ajax.js"></script>
    	</div>
    	
    	<div class="contenitore">
    			<table> 
    			<tr valign="top"> 
    			<td>
    		<form id="contenutoajax" action="" method ="post">
    
    			<input type="image"  src="../images/template/scarti/mipiace.jpg" value="send mail" id="sendmail" name="sendmail"  width="25" height="25" />
    
    			</form></td>
    			<td><div id="response">
    		
    		</div></td>
    		</tr></table>
    			<script type="text/javascript" src="ajax.js"></script>
    	</div>
    
    </div>
    
    </body>
    </html>
    ajax.js
    codice:
     $(document).ready(function(){
    	$("#sendmail").click(function(){
    		var valid = '';
    		var isr = 'Obbligatorio inserire';
    		var name = $("#name").val();
    		var mail = $("#mail").val();
    		var subject = $("#subject").val();
    		var text = $("#text").val();
    
    		if (valid!='') {
    			$("#response").fadeIn("slow");
    			$("#response").html("ATTENZIONE: 
    "+valid);
    		}
    		else {
    			var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&text=' + text;
    			$("#response").css("display", "block");
    			$("#response").html("");
    			$("#response").fadeIn("slow");
    			setTimeout("send('"+datastr+"')",0);
    		}
    		return false;
    	});
    });
    function send(datastr){
    	$.ajax({	
    		type: "POST",
    		url: "../mipiace/conta.php?conteggio=ok",
    		data: datastr,
    		cache: false,
    		success: function(html){
    		$("#response").fadeIn("slow");
    		$("#response").html(html);
    		setTimeout('$("#response").fadeOut("slow")',2 );
    	}
    	});
    }
    conta.php
    codice:
    <?php
    session_start();
    $n=0;
    if($_REQUEST['conteggio']==='ok') {
    	$_SESSION['n']=$_SESSION['n']+1;
    	$n=$n+1;
    	echo  "A ".$_SESSION['n']." piace questo elemento";
    }
    ?>

    spero di essere stato chiaro...e che riusciamo a trovare la soluzione!Grazie mille in anticipo

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    nella pagina chiamante hai duplicato contenitori, pulsanti, id, script... fai prima un pochino di pulizia e riprova
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Ma con quel conta.php che hai il conteggio lo tieni nella sessione dell'utente!
    Spero che sia solo una cosa temporanea, perché così ogni utente vedrà il suo conteggio "privato", ed il conteggio si resetta chiudendo il browser.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    209
    si si..chiaro che è temporaneo!!!ho già in mente come fare per sommare i "mi piace" di tutti gli utenti che cliccano e pure come fare per fare in modo che ogni utente clicchi una sola volta...solo che mi pareva inutile preparare già tutto se poi non funziona benissimo già così!!!

    br1..si mi sono accorto ora che l'index che ho scritto qui non ha il ciclo di for ma ho scritto semplicemente due volte il tasto mi piace!vabbè....non cambia molto perchè sia in questo modo che nell'altro non va!!

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non so cosa intendi per ciclo for comunque perché funzioni devi avere id univoci "sendmail_1", "sendmail_2", etc... idem per id del form e devi aggiungerli una classe 'sendmail' per associare il click all'immagine tramite jquery
    $(".sendmail").click
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    209
    sul fatto degli id univoci riguardo il SENDMAIL c'ero arrivato anche io ma i risultati non migliorano!! L'id del FORM invece lho sempre lasciato così come stava!..mi faresti un esempio per l'ultima cosa che hai scritto?non mi è chiaro quando dici "devi aggiungerli una classe 'sendmail' per associare il click all'immagine tramite jquery
    $(".sendmail").click"


    Riguado al ciclo for io intendevo fare in modo che il tastino mi piace si ripeta per 10 volte ad esempio..e quindi avendo nella index questo codice
    codice:
    <body>
    
    <div id="wrap">
    
    	<div class="contenitore">
    	<?php for($i=0; $i<10; $i++) { ?>
    			<table> 
    			<tr valign="top"> 
    			<td>
    		<form id="contenutoajax" action="" method ="post">
    
    			<input type="image"  src="../images/template/scarti/mipiace.jpg" value="send mail" id="sendmail" name="sendmail"  width="25" height="25" />
    
    			</form></td>
    			<td><div id="response">
    		
    		</div></td>
    		</tr></table>
    		<?php } ?>
    
    	</div>
    
    </div>
    
    </body>

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma ragiona, con quel ciclo for php cambiano gli id rendendoli univoci? (la risposta nel sorgente pagina) in oltre quel "mi piace" è legato a un singola news, articolo, messaggio, etc... o tutta la pagina
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    209
    Ma lo so che non cambiano gli id!!!
    il tasto "mi piace" deve andare ad ogni news..quindi nel dabatase ci saranno 8 news...alla fine di ogni news ci sarà un tasto mi piace.......però è cliccabile solo il primo..è quello il problema..e nn so come risolverlo!!! come faccio con il FOR a cambiare gli id!??!

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    nel ciclo while php devi recuperare id della news e associarlo all'immagine/e al form cosi oltre ad avere un id univo avrai l'id per aggiungere la preferenza nella tabella del db
    <input type="image" class="smail" src="../images/template/scarti/mipiace.jpg" value="send mail" id="sendmail_<?=$idNews?>" name="sendmail_<?=$idNews?>" width="25" height="25" />
    la classe servirà per jquery .click
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    209
    e nel file ajax.js non devo toccare nulla!?

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.