Aller au contenu

Updater une tabe avec ThickBox 3.1


sparh

Sujets conseillés

Salut,

j'utilise le script ThickBox 3.1 qui est déjà pas mal utilisé sur le web.

C'est très bien mais lors du vote j'aimerai mettre à jour une autre table sql.

J'ai essayé de placer ma requête à divers endroit du script sans résultat!

Si quelqu'un l'utilise et peux m'aider.

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

A ma connaissance l'intérêt de Thickbox est surtout de charger des éléments. Si tu désires envoyer des données dans une table (pour ton vote), pourquoi ne pas simplement intégrer un script ajax via le framework jQuery (qu'utilise Thickbox). Dans ce cas, il suffit de donner l'adresse de ton script php pour envoyer les données (et de récupérer le résultat de l'envoi).

Maintenant je n'ai peut être pas saisit comment tu veux faire cela.

Eric.

Lien vers le commentaire
Partager sur d’autres sites

Bon je devais être à l'ouest hier soir car je me suis complètement planté!

En fait je parlais d'un script Ajax de vote:

Celui ci: Unobtrusive AJAX Star Rating Bar

Donc ce dont j'ai besoin, c'est mettre a jour une table externe quand quelqu'un vote.

Voilà le script qui envoi les requêtes (avec ma requête en plus):

CODE
<?php

/*

Page: rpc.php

Created: Aug 2006

Last Mod: Mar 18 2007

This page handles the 'AJAX' type response if the user

has Javascript enabled.

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

ryan masuga, masugadesign.com

ryan_AT_masugadesign.com

Licensed under a Creative Commons Attribution 3.0 License.

http://creativecommons.org/licenses/by/3.0/

See readme.txt for full credit details.

--------------------------------------------------------- */

header("Cache-Control: no-cache");

header("Pragma: nocache");

require('_config-rating.php'); // get the db connection info

//getting the values

$vote_sent = preg_replace("/[^0-9]/","",$_REQUEST['j']);

$id_sent = preg_replace("/[^0-9a-zA-Z]/","",$_REQUEST['q']);

$ip_num = preg_replace("/[^0-9\.]/","",$_REQUEST['t']);

$units = preg_replace("/[^0-9]/","",$_REQUEST['c']);

$ip = $_SERVER['REMOTE_ADDR'];

if ($vote_sent > $units) die("Sorry, vote appears to be invalid."); // kill the script because normal users will never see this.

//connecting to the database to get some information

$query = mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id_sent' ")or die(" Error: ".mysql_error());

$numbers = mysql_fetch_assoc($query);

$checkIP = unserialize($numbers['used_ips']);

$count = $numbers['total_votes']; //how many votes total

$current_rating = $numbers['total_value']; //total number of rating added together and stored

$sum = $vote_sent+$current_rating; // add together the current vote value and the total vote value

$tense = ($count==1) ? "vote" : "votes"; //plural form votes/vote

// checking to see if the first vote has been tallied

// or increment the current number of votes

($sum==0 ? $added=0 : $added=$count+1);

// if it is an array i.e. already has entries the push in another value

((is_array($checkIP)) ? array_push($checkIP,$ip_num) : $checkIP=array($ip_num));

$insertip=serialize($checkIP);

//IP check when voting

$voted=mysql_num_rows(mysql_query("SELECT used_ips FROM $rating_dbname.$rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='".$id_sent."' "));

if(!$voted) { //if the user hasn't yet voted, then vote normally...

if (($vote_sent >= 1 && $vote_sent <= $units) && ($ip == $ip_num)) { // keep votes within range, make sure IP matches - no monkey business!

$update = "UPDATE $rating_dbname.$rating_tableName SET total_votes='".$added."', total_value='".$sum."', used_ips='".$insertip."' WHERE id='$id_sent'";

$result = mysql_query($update);

//----------------------------------------------------------------------------------------------------------------------------

//------------------------------------------Ici c'est ma requete de mise a jour-----------------------------------

//--------------------------------------------------------------------------------------------------------------------------

$nouvelle_note = $sum/$added ;

$modif_vote = "UPDATE jeuxflas003.Jeux SET vote='".$nouvelle_note."' WHERE id='id_sent'";

mysql_query($modif_vote);

// $new_back is what gets 'drawn' on your page after a successful 'AJAX/Javascript' vote

}

} //end for the "if(!$voted)"

// these are new queries to get the new values!

$newtotals = mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id_sent' ")or die(" Error: ".mysql_error());

$numbers = mysql_fetch_assoc($newtotals);

$count = $numbers['total_votes'];//how many votes total

$current_rating = $numbers['total_value'];//total number of rating added together and stored

$tense = ($count==1) ? "vote" : "votes"; //plural form votes/vote

$new_back = array();

$new_back[] .= '<ul class="unit-rating" style="width:'.$units*$rating_unitwidth.'px;">';

$new_back[] .= '<li class="current-rating" style="width:'.@number_format($current_rating/$count,2)*$rating_unitwidth.'px;">Note actue:</li>';

$new_back[] .= '<li class="r1-unit">1</li>';

$new_back[] .= '<li class="r2-unit">2</li>';

$new_back[] .= '<li class="r3-unit">3</li>';

$new_back[] .= '<li class="r4-unit">4</li>';

$new_back[] .= '<li class="r5-unit">5</li>';

$new_back[] .= '<li class="r6-unit">6</li>';

$new_back[] .= '<li class="r7-unit">7</li>';

$new_back[] .= '<li class="r8-unit">8</li>';

$new_back[] .= '<li class="r9-unit">9</li>';

$new_back[] .= '<li class="r10-unit">10</li>';

$new_back[] .= '</ul>';

$new_back[] .= '<p class="voted">Note: <strong>'.@number_format($sum/$added,1).'</strong>/'.$units.' ('.$count.' '.$tense.' ) ';

$new_back[] .= '<span class="thanks">Merci d\'avoir voté ;)</span></p>';

$allnewback = join("\n", $new_back);

// ========================

//name of the div id to be updated | the html that needs to be changed

$output = "unit_long$id_sent|$allnewback";

echo $output;

?>

et voilà (je crois) le script js qui execute les requêtes

CODE

/*

Page: rating.js

Created: Aug 2006

Last Mod: Mar 11 2007

Handles actions and requests for rating bars.

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

ryan masuga, masugadesign.com

ryan_AT_masugadesign.com

Licensed under a Creative Commons Attribution 3.0 License.

http://creativecommons.org/licenses/by/3.0/

See readme.txt for full credit details.

--------------------------------------------------------- */

var xmlhttp

/*@cc_on @*/

/*@if (@_jscript_version >= 5)

try {

xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")

} catch (e) {

try {

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

} catch (E) {

xmlhttp=false

}

}

_AT_else

xmlhttp=false

_AT_end @*/

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {

try {

xmlhttp = new XMLHttpRequest();

} catch (e) {

xmlhttp=false

}

}

function myXMLHttpRequest() {

var xmlhttplocal;

try {

xmlhttplocal= new ActiveXObject("Msxml2.XMLHTTP")

} catch (e) {

try {

xmlhttplocal= new ActiveXObject("Microsoft.XMLHTTP")

} catch (E) {

xmlhttplocal=false;

}

}

if (!xmlhttplocal && typeof XMLHttpRequest!='undefined') {

try {

var xmlhttplocal = new XMLHttpRequest();

} catch (e) {

var xmlhttplocal=false;

alert('couldn\'t create xmlhttp object');

}

}

return(xmlhttplocal);

}

function sndReq(vote,id_num,ip_num,units) {

var theUL = document.getElementById('unit_ul'+id_num); // the UL

// switch UL with a loading div

theUL.innerHTML = '<div class="loading"></div>';

xmlhttp.open('get', 'rpc.php?j='+vote+'&q='+id_num+'&t='+ip_num+'&c='+units);

xmlhttp.onreadystatechange = handleResponse;

xmlhttp.send(null);

}

function handleResponse() {

if(xmlhttp.readyState == 4){

if (xmlhttp.status == 200){

var response = xmlhttp.responseText;

var update = new Array();

if(response.indexOf('|') != -1) {

update = response.split('|');

changeText(update[0], update[1]);

}

}

}

}

function changeText( div2show, text ) {

// Detect Browser

var IE = (document.all) ? 1 : 0;

var DOM = 0;

if (parseInt(navigator.appVersion) >=5) {DOM=1};

// Grab the content from the requested "div" and show it in the "container"

if (DOM) {

var viewer = document.getElementById(div2show);

viewer.innerHTML = text;

} else if(IE) {

document.all[div2show].innerHTML = text;

}

}

/* =============================================================== */

var ratingAction = {

'a.rater' : function(element){

element.onclick = function(){

var parameterString = this.href.replace(/.*\?(.*)/, "$1"); // onclick="sndReq('j=1&q=2&t=127.0.0.1&c=5');

var parameterTokens = parameterString.split("&"); // onclick="sndReq('j=1,q=2,t=127.0.0.1,c=5');

var parameterList = new Array();

for (j = 0; j < parameterTokens.length; j++) {

var parameterName = parameterTokens[j].replace(/(.*)=.*/, "$1"); // j

var parameterValue = parameterTokens[j].replace(/.*=(.*)/, "$1"); // 1

parameterList[parameterName] = parameterValue;

}

var theratingID = parameterList['q'];

var theVote = parameterList['j'];

var theuserIP = parameterList['t'];

var theunits = parameterList['c'];

//for testing alert('sndReq('+theVote+','+theratingID+','+theuserIP+','+theunits+')'); return false;

sndReq(theVote,theratingID,theuserIP,theunits); return false;

}

}

};

Behaviour.register(ratingAction);

Voilà, je cherche et je tente des trucs mais rien, pas d'erreur, pas de mise à jour de ma table Jeux, bref rien!

Si quelqu'un pouvait m'aider ce serai génial.

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...