Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 53 di 53

Discussione: Eseguire una query senza aggiornare la pagina [AJAX/PHP]

  1. #31
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    OK, ma io non ho ancora capito come devo modificare questa stringa per inserire i valori esatti...
    Codice:
    data: "id=...&pos=...&ok=...&thread=...",
    Grazie ancora .
    Ultima modifica di radiodelmomento : 01-10-2011 alle ore 13.27.07

  2. #32
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    OK, ma io non ho ancora capito come devo modificare questa stringa per inserire i valori esatti...
    Codice:
    data: "id=...&pos=...&ok=...&thread=...",
    Grazie ancora :wink.
    Cerca di farti capire:

    Nella tua pagina hai diversi pulsanti, uno per riga. Semplificando una situazione tipo:

    Canzone 1 | VOTA |
    Canzone 2 | VOTA |
    Canzone 3 | VOTA |
    ...
    Canzone n | VOTA |

    ora, facendo click su un pulsante VOTA vuoi che venga registrato la preferenza per la canzone corrispondente. Come fare? Potresti richiamare la funzione con un parametro, ad esempio. E quindi qualcosa tipo

    onclick="vota(1)" oppure onclick="vota(n)"

    e questo parametro lo metti poi nei dati passati (tipo id).
    Quanti, quali e di che tipo di parametri vuoi usare è solo a tua discrezione, in base a quello che ti serve.

  3. #33
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    OK, ma come faccio a fargli capire QUALI sono i parametri?
    Ad esempio come faccio a fargli capire che a vota(1) è associato l'id "1", la posizione "10", l'ok "ok" e il thread "sotto"?

  4. #34
    Guest

    Predefinito

    Canzone 1 | VOTA | ==> onclick="vota(1)"
    Canzone 2 | VOTA | ==> onclick="vota(2)"
    Canzone 3 | VOTA | ==> onclick="vota(3)"
    ...
    Canzone n | VOTA | ==> onclick="vota(n)"

    e poi

    Codice HTML:
    <script type="text/javascript">
    function vota(id_voto)
    {
    $.ajax({
       type: "POST",
       url: "ClassificaAJAX.php",
       data: "id=id_voto" // questi sono esempi, se non ti servono li togli --> &pos=&ok=&thread=",
    $(this).val('Attendere...').attr('disabled', 'disabled');
       success: function(msg){
    $(this).val('VOTA').attr('disabled', '');
         }
    });
    }
    </script>

  5. #35
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie, ma per gli altri valori come dovrei fare?
    Non si può creare una funzione che richiama altri elementi?
    Anche modificando il bottone: onclick="vota(n,pos,id ecc.)" ma come faccio a fargli capire che è un'array?
    Grazie 1000 ancora

  6. #36
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Grazie, ma per gli altri valori come dovrei fare?
    Non si può creare una funzione che richiama altri elementi?
    Anche modificando il bottone: onclick="vota(n,pos,id ecc.)" ma come faccio a fargli capire che è un'array?
    Grazie 1000 ancora
    non è un array, passi dei parametri separati

    Codice HTML:
    function nome_funzione(par1, par2, ... parn) {
      //mio codice, ad esempio
      id = par1;
      opt = par2;
      ...
      nome = parn;
    }
    e la funzione si richiama così

    Codice HTML:
    nome_funzione(1, add, ..., mario);

  7. #37
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy

    Grazie per la risposta, ti posto tutto il codice...
    Codice:
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script type="text/javascript">
    function vota(n, id, pos, ok, thread)
    {
    n = n;
    id = id;
    pos = pos;
    ok = ok;
    thread = thread;
    	$('#pulsante'+n).val('Attendere...').attr('disabled', true);	
    	$.ajax({
    		type: "POST",
    		url: "ClassificaAJAX.php",
    		data: "id=id&pos=pos&ok=ok&thread=thread",
    		success: function(msg){
    				$('#pulsante'+n).val('  VOTA  ');
    		},
    		error:function()
    		{
    			$('#pulsante'+n).val('  VOTA  ').attr('disabled', false);	
    		}
    	});
    }
    </script>
    È esatto?

    E questo?
    Codice PHP:
    echo "<td align=\"center\" bgcolor=\"#FFFF99\"><form id=\"form1\" name=\"form1\" method=\"post\">
    <input type=\"submit\" name=\"Submit\" value=\" VOTA \" id='pulsante
    $item' onClick=\"vota('$item, $pos, $ok, $thread'); return false;\" />
    </form></td>"
    ;
    Lo chiedo perché la pagina si aggiorna e la query non viene ancora eseguita... :-(
    Devo postare anche il codice PHP della pagina?

    Grazie 10.000 ancora!
    Ultima modifica di radiodelmomento : 01-10-2011 alle ore 15.58.01

  8. #38
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Grazie per la risposta, ti posto tutto il codice...
    Codice:
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script type="text/javascript">
    function vota(n, id, pos, ok, thread)
    {
    n = n;
    id = id;
    pos = pos;
    ok = ok;
    thread = thread;
    	$('#pulsante'+n).val('Attendere...').attr('disabled', true);	
    	$.ajax({
    		type: "POST",
    		url: "ClassificaAJAX.php",
    		data: "id=id&pos=pos&ok=ok&thread=thread",
    		success: function(msg){
    				$('#pulsante'+n).val('  VOTA  ');
    		},
    		error:function()
    		{
    			$('#pulsante'+n).val('  VOTA  ').attr('disabled', false);	
    		}
    	});
    }
    </script>
    È esatto?

    E questo?
    Codice PHP:
    echo "<td align=\"center\" bgcolor=\"#FFFF99\"><form id=\"form1\" name=\"form1\" method=\"post\">
    <input type=\"submit\" name=\"Submit\" value=\" VOTA \" id='pulsante
    $item' onClick=\"vota('$item, $pos, $ok, $thread'); return false;\" />
    </form></td>"
    ;
    Lo chiedo perché la pagina si aggiorna e la query non viene ancora eseguita... :-(
    Devo postare anche il codice PHP della pagina?

    Grazie 10.000 ancora!
    T non vedrai la query eseguita perchè la esegue una pagina richiamata in modo asincrono.

    La parte in rosso non ha senso, è solo una ripetizione le variabili sono già settate al momento delle definizioni.

  9. #39
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Scusami ma con me devi avere pazienza, molta pazienza... soprattutto in JavaScript!
    Ho eliminato la parte inutile, e adesso come faccio a fare eseguire il codice quando viene premuto il pulsante?

  10. #40
    Guest

    Predefinito

    Dovrebbe già eseguirlo.

    quando fai click sul pulsante (onclick) viene richiamata la funzione (vota) che a sua volta fa una richiesta ajax ad una pagina php che registra il voto.

  11. #41
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Purtroppo questo non accade...
    Può essere dovuto al fatto che, per eseguire la query, i valori li prendo tramite $_GET?
    Poi la pagina continua ad aggiornarsi quando viene premuto il bottone.
    Ecco la pagina: cosa c'è di errato?

  12. #42
    Guest

    Predefinito

    Scusa, ma la chiamata ajax la fai alla stessa pagina?
    Non mi pare abbia senso far processare al motore php anche la formattazione della pagina solo per eseguire una registrazione del voto.

    EDIT:

    stavo dando un'occhiata al sorgente della pagina linkata ma ci vedo un po' di cose che non vanno.

    - fai attenzione a </tr><tr>, mi pare manchino un po' di <tr>.
    - metti un form per ogni riga. Perchè? E poi un id è, per definizione, univoco. tu usi <form id="form1" per tutti. Così come name ...
    - una un solo form e gestisci quale pulsante è stato premuto in base ad altri parametri.
    Ultima modifica di simpleticket : 01-10-2011 alle ore 17.01.30

  13. #43
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    OK, quindi dovrei creare un'altra pagina per mettere soltanto il codice PHP, giusto?
    Ma anche se faccio così, ovviamente non funziona!

  14. #44
    Guest

    Predefinito

    Solo ora vedo una cosa

    Codice HTML:
    data: "id=id&pos=pos&ok=ok&thread=thread",
    semmai

    Codice HTML:
    data: "id=" + id + "&pos=" + pos + "&ok=" + ok + "&thread=" + thread",

    -------------------

    Non ho provato nulla, ma scritto di getto, MOOOOOOOOOOOOOLTO semplificando ...

    nella sezione head metti

    Codice HTML:
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script type="text/javascript">
    	function vota(n, id) {
    		$('#pulsante' + n).val('Attendere...').attr('disabled', true);
    		
    		$.ajax({
    			type: "POST",
    			url: "registravoto.php",
    			data: "id=" + id,
    			success: function(html){
    				esito = html.split("|"); //ipotizzando un messaggio di ritorno del tipo "esito|voti|perc" li converto la stringa in array
    				if(esito[0] == 'OK'){
    					$('#voto' + n).html(esito[1]); //cambio il numero di voti
    					$('#perc' + n).html(esito[2]); //aggiorno la percentuale
    					$('#pulsante' + n).val('VOTA');
    				}else{
    					alert('si è verificato un errore');
    					$('#pulsante' + n).val('VOTA').attr('disabled', false);
    				}
    			},
    			error:function(){
    				$('#pulsante' + n).val('VOTA').attr('disabled', false);
    			}
    		});
    	}
    </script>
    poi nel body ipotizzo una situazione volutamente semplificata tipo

    Codice HTML:
    <form name="votazione" action="" method="post">
    <table>
    	<tr>
    		<td>(ID=12)Jovanotti</td>
    		<td><input type="submit" name="Submit1" value="VOTA" id='pulsante1' onclick="vota(1, 12); return false;" /></td>
    		<td id="voti1">xxx voti</td>
    		<td id="perc1">xx%</td>
    	</tr>
    	<tr>
    		<td>(ID=34)Jennifer Lopez</td>
    		<td><input type="submit" name="Submit2" value="VOTA" id='pulsante2' onclick="vota(2, 34); return false;" /></td>
    		<td id="voti2">xxx voti</td>
    		<td id="perc2">xx%</td>
    	</tr>
    	<tr>
    		<td>(ID=132)Bruno Mars</td>
    		<td><input type="submit" name="Submit3" value="VOTA" id='pulsante3' onclick="vota(3, 132); return false;" /></td>
    		<td id="voti3">xxx voti</td>
    		<td id="perc3">xx%</td>
    	</tr>
    </table>
    </form>
    ed infine una pagina php del tipo

    Codice PHP:
    $con = TUA CONNESSIONE

    $sql
    = "UPDATE classifica SET voti = voti + 1 WHERE id_canzone =".$_POST['id'];
    $up = @mysql_query($sql, $con);

    if(
    mysql_errno($con) != 0) {
    //Eseguo l'estrazione del nuovo numero di voti e ricalcolo le percentuali
    //Rifaccio l'estrazione e non aggiungo solo +1 voto per considerare il caso in cui nel frattempo ci sia stata
    //un'altra votazione conclusasi in modo corretto
    //ricavo i voti e li metto in $voti e la percentuale in $perc

    echo "OK|".$voti." voti|".$perc." %";
    }else{
    echo
    "KO";
    }
    Facendo attenzione alle semplificazioni del caso ed ai problemi di sicurezza legato al controllo dei parametri qui sorvolati

    Una cosiderazione:

    per aumentare la dimensione del pulsante non mi sembra bello usare gli spazi - tipo " VOTA " - ma si può intervenire via css impostando il width.
    Ultima modifica di simpleticket : 01-10-2011 alle ore 17.38.31

  15. #45
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Thumbs up

    Grazie per il tempo che stai impiegando aiutandomi!
    Purtroppo però sono troppo ottuso e non riesco ancora a fare funzionare questo benedetto codice...
    Ho modificato i codici come mi hai detto tu, e la pagina per votare è Classifica_voto.php:
    Codice PHP:
    <?php
    ob_start
    ();

    function
    get_client_ip(){
    if (isset(
    $_SERVER["REMOTE_ADDR"])){
    return
    $_SERVER["REMOTE_ADDR"];
    }
    elseif (isset(
    $_SERVER["HTTP_X_FORWARDED_FOR"])){
    return
    $_SERVER["HTTP_X_FORWARDED_FOR"];
    }
    elseif (isset(
    $_SERVER["HTTP_CLIENT_IP"])){
    return
    $_SERVER["HTTP_CLIENT_IP"];
    }else{
    return
    FALSE;
    }
    }
    //fine function
    //anche se alex sa fare di meglio metto le verifiche come piace a me
    $ip=get_client_ip();


    $ok = $_GET['ok'];
    if(
    $ok=="ok"){
    }else{

    if(
    $ip==FALSE){//se non riesco a leggere l'ip
    ?>
    <script type="text/javascript">
    alert("Errore durante la ricezione del tuo indirizzo IP.")
    </script>
    <?php
    }else{
    //mi connetto al db
    require_once("templates/vot/connessione.php");
    //leggo l'id della canzone
    $id=trim(strip_tags($_GET['id']));//ripulisco l'id e lo riduco ad intero
    $id=(int)$id;//considerato che gli id delle canzoni partano da 1
    if($id < 1){//metto un codice così, tanto per complicare il tutto
    ?>
    <script type="text/javascript">
    alert("Codice errore: 401. Vi preghiamo di contattare info@radiolucus.tk per risolvere il problema. Grazie.")
    </script>
    <?php
    }else{
    //avendo eliminato tutti i vecchi devo verificare solo che non abbia
    //votato la canzone meno di 24 ore fa
    $query_v_ut="SELECT * FROM utenti WHERE id_c=$id AND ip='$ip'";
    $result_v_ut=mysql_query($query_v_ut);
    $ha_votato=mysql_num_rows($result_v_ut);
    if(
    $ha_votato > 0){//ha votato meno di 24 ore la canzone
    ?>
    <script type="text/javascript">
    alert("Il voto non &egrave; stato registrato perch&eacute; puoi votare solo una volta ogni 24 ore.")
    </script>
    <?php
    }
    if(
    $ok_ko==""){//va tutto bene
    $pos = $_GET['pos'];
    $thread = $_GET['thread'];
    //uppo i voti della canzone ed inserisco l'ip e il tempo/canzone dell'utente
    $query_up_c="UPDATE canzoni SET voti=voti+1, ultimaposizione=$pos, thread='$thread' WHERE id=$id";
    $result_up_c=mysql_query($query_up_c);
    //inserisco il blocco all'utente
    $query_in_u="INSERT INTO utenti(id_c,ip,data) VALUES($id,'$ip',$adesso)";
    $result_in_u=mysql_query($query_in_u);
    ?>
    <script type="text/javascript">
    alert("Grazie per aver votato.")
    </script>
    <?php
    }
    //visualizzo il messaggio

    }
    }
    }
    }
    else
    {
    echo
    "<br />";
    }
    ob_end_flush();
    ?>
    Per il testo vuoto nel bottone provvederò... grazie.
    Ciao e grazie 100.000 ancora!

  16. #46
    Guest

    Predefinito

    Ho cercato di sistemare il tuo codice, ho modificato i $_GET in $_POST e aggiunto un po' di commenti, leggili.

    Codice PHP:
    <?php
    ob_start
    ();

    function
    get_client_ip(){
    if (isset(
    $_SERVER["REMOTE_ADDR"])){
    return
    $_SERVER["REMOTE_ADDR"];
    }
    elseif (isset(
    $_SERVER["HTTP_X_FORWARDED_FOR"])){
    return
    $_SERVER["HTTP_X_FORWARDED_FOR"];
    }
    elseif (isset(
    $_SERVER["HTTP_CLIENT_IP"])){
    return
    $_SERVER["HTTP_CLIENT_IP"];
    }else{
    return
    FALSE;
    }
    }
    //fine function
    //anche se alex sa fare di meglio metto le verifiche come piace a me
    $ip=get_client_ip();


    $ok = $_POST['ok'];
    if(
    $ok=="ok"){
    }else{

    if(
    $ip==FALSE){//se non riesco a leggere l'ip
    exit("KO|Errore durante la ricezione del tuo indirizzo IP.");
    }else{
    //mi connetto al db
    require_once("templates/vot/connessione.php");
    //leggo l'id della canzone
    $id=trim(strip_tags($_POST['id']));//ripulisco l'id e lo riduco ad intero
    $id=(int)$id;//considerato che gli id delle canzoni partano da 1
    if($id < 1){//metto un codice così, tanto per complicare il tutto
    exit("KO|Codice errore: 401. Vi preghiamo di contattare info@radiolucus.tk per risolvere il problema. Grazie.");
    }else{
    //avendo eliminato tutti i vecchi devo verificare solo che non abbia
    //votato la canzone meno di 24 ore fa
    $query_v_ut="SELECT * FROM utenti WHERE id_c=$id AND ip='$ip'";
    $result_v_ut=mysql_query($query_v_ut);
    $ha_votato=mysql_num_rows($result_v_ut);
    if(
    $ha_votato > 0){//ha votato meno di 24 ore la canzone
    exit("KO|Il voto non &egrave; stato registrato perch&eacute; puoi votare solo una volta ogni 24 ore.");
    }

    //Questo qua sotto non l'ho capito
    //$ok_ko non avrà mai un valore
    //lo stai dichiarando solo ora
    //quindi cosa ci sta va fare la condizione (if)?

    if($ok_ko==""){//va tutto bene
    $pos = $_POST['pos'];
    $thread = $_POST['thread'];
    //uppo i voti della canzone ed inserisco l'ip e il tempo/canzone dell'utente
    $query_up_c="UPDATE canzoni SET voti=voti+1, ultimaposizione=$pos, thread='$thread' WHERE id=$id";
    $result_up_c=mysql_query($query_up_c);
    //inserisco il blocco all'utente
    $query_in_u="INSERT INTO utenti(id_c,ip,data) VALUES($id,'$ip',$adesso)";
    $result_in_u=mysql_query($query_in_u);


    //adesso recupero i voti aggiornati e la percentuale
    $voti = //Codice per recuperare i voti attuali
    $perc = //Codice per recuperare la percentuale

    exit("OK|".$voti." voti|".$perc." %");

    }
    //visualizzo il messaggio
    }
    }
    }

    // Tutto quello che segue lo commento
    // E' un else senza if

    //}
    //else
    //{
    //echo "<br />";
    //}

    ob_end_flush();
    ?>
    in base a questo il codice JS diventerà

    Codice HTML:
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script type="text/javascript">
    	function vota(n, id, pos, thread) {
    		$('#pulsante' + n).val('Attendere...').attr('disabled', true);
    		
    		$.ajax({
    			type: "POST",
    			url: "registravoto.php",
    			data: ({
    				id: id,
    				ok: 'ok',
    				pos: pos,
    				thread: thread
    			}),
    			success: function(html){
    				esito = html.split("|"); //ipotizzando un messaggio di ritorno del tipo "esito|voti|perc" li converto la stringa in array
    				if(esito[0] == 'OK'){
    					$('#voto' + n).html(esito[1]); //cambio il numero di voti
    					$('#perc' + n).html(esito[2]); //aggiorno la percentuale
    					alert('Grazie per aver votato!');
    					$('#pulsante' + n).val('VOTA');
    				}else{
    					alert(esito[1]);
    					$('#pulsante' + n).val('VOTA').attr('disabled', false);
    				}
    			},
    			error:function(){
    				$('#pulsante' + n).val('VOTA').attr('disabled', false);
    			}
    		});
    	}
    </script>
    e nel body sistema le chiamate di funzione (sostituisci --pos-- e --thread-- con gli oppportuni valori).

    Codice HTML:
    <form name="votazione" action="" method="post">
    <table>
    	<tr>
    		<td>(ID=12)Jovanotti</td>
    		<td><input type="submit" name="Submit1" value="VOTA" id='pulsante1' onclick="vota(1, 12, --pos--, --thread--); return false;" /></td>
    		<td id="voti1">xxx voti</td>
    		<td id="perc1">xx%</td>
    	</tr>
    	<tr>
    		<td>(ID=34)Jennifer Lopez</td>
    		<td><input type="submit" name="Submit2" value="VOTA" id='pulsante2' onclick="vota(2, 34, --pos--, --thread--); return false;" /></td>
    		<td id="voti2">xxx voti</td>
    		<td id="perc2">xx%</td>
    	</tr>
    	<tr>
    		<td>(ID=132)Bruno Mars</td>
    		<td><input type="submit" name="Submit3" value="VOTA" id='pulsante3' onclick="vota(3, 132, --pos--, --thread--); return false;" /></td>
    		<td id="voti3">xxx voti</td>
    		<td id="perc3">xx%</td>
    	</tr>
    </table>
    </form>
    Ti ricordo di fare gli aggiustamenti del caso e che quello che ti ho scritto è una bozza di codice non provato e volutamente semplificato.

  17. #47
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy

    Grazie 1.000.000 (ogni volta aggiungo uno 0! ).
    Ho aggiustato i codici come mi hai detto tu modificando $voti ed $perc ma non ho ottenuto niente.
    Può essere per quell'$ok_ko?
    Come dovrei modificarlo?
    Codice PHP:
    if($ha_votato > 0){//ha votato meno di 24 ore la canzone
    exit("KO|Il voto non &egrave; stato registrato perch&eacute; puoi votare solo una volta ogni 24 ore.");
    } if(
    $ok_ko==""){//va tutto bene
    $pos = $_POST['pos'];
    Diventerebbe...
    Codice PHP:
    if($ha_votato > 0){//ha votato meno di 24 ore la canzone
    exit("KO|Il voto non &egrave; stato registrato perch&eacute; puoi votare solo una volta ogni 24 ore.");
    }else{
    //va tutto bene
    $pos = $_POST['pos'];
    Anche se eseguo il cambiamento, non funziona!
    Poi la percentuale non posso calcolarla in quella pagina, perché devo avere la somma di tutti i voti. Comunque questa è l'ultima cosa a cui pensare!
    Ciao!


    --- EDIT ---
    Ho capito perché si aggiornava la pagina quando premevo il bottone...
    Ho modificato
    Codice PHP:
    onclick=\"vota($item, $id, $pos, $thread); return false;\"
    in
    Codice PHP:
    onclick=\"return false; vota($item, $id, $pos, $thread);\"
    E adesso la pagina non si aggiorna appena premo il bottone, ma continua a non succedere niente con la quey!
    Ultima modifica di radiodelmomento : 02-10-2011 alle ore 16.31.29

  18. #48
    Guest

    Predefinito

    Prova a richamare la pagina .php direttamente (e visto che hai impostato POST come method) tramite una pagina di appoggio) passandogli i parametri e vedi cosa restituisce.

  19. #49
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ho tolto soltanto "return false;" e come action ho messo Classifica_voto.php, lasciando onclick="vota()".
    KO|Codice errore: 401. Vi preghiamo di contattare --- per risolvere il problema. Grazie.
    Sarebbe if($id < 1).
    Può essere che non prende l'id perché, come hai già detto, ripeti i valori?
    Codice:
    data: ({
    				id: id,
    				ok: 'ok',
    				pos: pos,
    				thread: thread
    }),
    Oppure con data è tutt'altra cosa?
    Grazie.

  20. #50
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Ho tolto soltanto "return false;" e come action ho messo Classifica_voto.php, lasciando onclick="vota()".

    Sarebbe if($id < 1).
    Può essere che non prende l'id perché, come hai già detto, ripeti i valori?
    Codice:
    data: ({
    				id: id,
    				ok: 'ok',
    				pos: pos,
    				thread: thread
    }),
    Oppure con data è tutt'altra cosa?
    Grazie.
    Quello che tu credi sia un ripetere i valori è solo una "illusione ottica" perchè chiami allo stesso modo le variabili, solo che la parte a sinistra di (:) è il nome del parametro che passi alla chiamata, mentre la parte a destra è il relativo valore.

    Quando richiami la funzione quella parte diventa qualcosa del tipo

    data: id=123, ok='ok', pos=9, thread='ciao mamma' ...

    per vedere che la registrazione del voto funzioni, come ti suggerivo prima

    creati una pagina in cui metti un form con 3 campi (id, pos e thread), come action metti Classifica_voto.php, la esegui, inserisci i valori e premi invia.
    E vedi che cosa ti ritorna la pagina php.

    Se tutto è ok e il voto viene registrato vuol dire che l'inghippo è da un'altra parte, mentre se hai degli errori o il comportamento non è quello voluto, il problema è li.

    Ora permettimi una considerazione:
    Tu dici "non posso calcolare la percentuale perchè mi servono tutti i dati"...
    Queste sono cose che devi considerare, non basta solo fare due modifiche ad un elemento dell apagina per far le cose per bene con ajax.
    E poi ancora, devi considerare che il tutto deve funzionare anche nel caso in cui il client abbia JS disattivato, ecc...

    Come vedi son tutte cose che non si possono improvvisare.
    Ecco perchè bisogna prima studiare e analizzare quello che si vuole fare, le tecnologie da usare e poi provare a farlo. Non il contraio.

  21. #51
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ho creato la pagina.
    Codice HTML:
    <form method="POST" action="Classifica_voto.php">
    <input type="text" value="1" name="n" />
    <input type="text" name="id" value="134" />
    <input type="text" name="pos" value="12" />
    <input type="text" name="thread" value="uguale" />
    <input type="text" value="ok" name="ok" />
    <input type="submit" value="vota"/>
    </form>
    IL CODICE FUNZIONA!!!

    Rivedendo il codice di Classifica_voto.php ho notato:
    Codice PHP:
    if($ok=="ok"){
    }else{
    //codice per eseguire la query
    Cosa significa?
    Per eseguire la query $ok dev'essere impostato su "ok", quindi ho modificato in:
    Codice PHP:
    if($ok=="ok"){
    //codice per eseguire la query
    Funziona.
    È quindi un errore del codice AJAX...

    Grazie 10.000.000... a quanti 0 arriveremo?

    -- EDIT --
    Per quanto riguarda la percenutale:
    i voti sono tantissimi, e con 1 voto in più la percentuale non si aggiorna.
    Per cui poi creo un altro codice per aggiornare periodicamente tutta la tabella ogni TOT.
    I browser che non supportano JS verranno reindirizzati automaticamente alla pagina che c'è per ora tramite un <noscript>.
    Grazie per i consigli.
    Ultima modifica di radiodelmomento : 02-10-2011 alle ore 17.35.11

  22. #52
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao, ho provato a modificare il codice JS in:
    Codice:
    <script type="text/javascript">
    	function vota(n, id, pos, thread) {
    alert("ciao");
    }
    </script>
    Quando premo il bottone però l'alert non viene richiamato!
    C'è qualcosa che non va nel richiamo della funzione...
    Oppure sbaglio io? O.o
    Ciao!

  23. #53
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Spero che questo messaggio non valga come "riesumazione vecchio topic"...
    Sono finalmente riuscito a fare funzionare la classifica!
    Non sapete quanto sono felice...
    Ho dovuto semplicemente eliminare questo:
    Codice:
    <script type="text/javascript">
    jQuery.noConflict();
    var _TEMPLATE_URL = '../../templates/bj_venus/index.html';
    var _TOPMOD_HOVER = false;
    </script>
    Se tolgo jQuery.noConflict(); è tutto perfetto, anche se lascio gli altri due valori.
    Vorrei soltanto sapere a che serve e se è importante.

    Grazie mille, come sempre è un errore mio.

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

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