sparh Posté 31 Janvier 2008 Posté 31 Janvier 2008 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.
Eric (11) Posté 31 Janvier 2008 Posté 31 Janvier 2008 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.
sparh Posté 1 Février 2008 Auteur Posté 1 Février 2008 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant