dude00 Posté 26 Février 2009 Posté 26 Février 2009 (modifié) Bonjour, je travaille actuellement sur une plateforme d'envoi de sms. Losrque je j'envoi un sms j'insere dans la base les listes selectionnees a l'envoi et le nombre de sms envoyé a cette liste. Cependant j'ai un probleme chaque insertion se fait en double. Après des heures de debug je ne trouve pas le probleme. Voici la partie du code concerné: fichier sms_ajax.php function get_subscribers_single_list($sms_list_id, $msg, $users_list = null, $city_id, $user_id, $db){$sms_list = $db->get_sms_list_subscriber($sms_list_id);//print_r($sms_list);$sms_histo_list_id = $db->log_list_sms_new($msg, $user_id, $city_id, $sms_list_id,$db->get_nb_sms_subscriber_list($sms_list_id));if ($sms_list){$a = 0;foreach ($sms_list as $key=>$sms_user){if($sms_user!=null){$tab_infos=$db->recup_info_for_sms_send_param($sms_user);if(strcmp("33", substr($sms_user,0,2)))$sms_user= "%2b33".substr($sms_user,1);if ($users_list == null)$users_list = array();array_push($users_list, array("sms_sub_tel" => $sms_user, "sms_sub_name" => $tab_infos["contact_surname"], "sms_dest_id" => $tab_infos["contact_id"], "sms_histo_list_id" =>$sms_histo_list_id[$key]));}}}return $users_list;}$Users_index = 0;$users_list = array();if ($sms_list_id != -1){$users_list = get_subscribers_single_list($sms_list_id, $msg, null, $city_id, $user_id, $db);//echo "user_list=".$users_list;}[b]L'insertion se fait via la fonction log_list_sms_new appelé au debut de get_subsribers single list[/b]function log_list_sms_new($msg, $sms_sender_id, $sms_city_id, $sms_list_id, $nb_sms){for($i=0;$i<count($sms_list_id);$i++){// echo "test_get_sms_sms_list_id=".$sms_list_id[$i]."<br>";if ($sms_list_id[$i] != -1 && $sms_list_id[$i] != null){//if (!$nb_sms)//return;$result = $this->database->query("select list_name from list where list_id='".$sms_list_id[$i]."'");$list_name = $this->database->fetch_array($result);//print_r($list_name);$result = $this->database->query("select user_name from user where user_id='".$sms_sender_id."'");$sender_name = $this->database->fetch_array($result);//print_r($sender_name);$this->database->query("insert into sms_histo_list (sms_msg, sms_date_list, sms_sender_id, sms_sender_name, sms_list_id, sms_list_name, sms_city_id, nb_sms)values ('".addslashes($msg)."', '".time()."', '".$sms_sender_id."', '".addslashes($sender_name["user_name"])."', '".$sms_list_id[$i]."', '".addslashes($list_name["list_name"])."', '".$sms_city_id."', '".$nb_sms[$i]."')");echo "insert into sms_histo_list (sms_msg, sms_date_list, sms_sender_id, sms_sender_name, sms_list_id, sms_list_name, sms_city_id, nb_sms)values ('".addslashes($msg)."', '".time()."', '$sms_sender_id', '".addslashes($sender_name["user_name"])."', '$sms_list_id[$i]', '".addslashes($list_name["list_name"])."', '$sms_city_id', '$nb_sms[$i]')";$sms_histo_id[]=$this->database->get_last_id();echo"sms_histo_id=".print_r($sms_histo_id);}}print_r($sms_histo_id);return $sms_histo_id;} voila je ne trouve pas du tout, j'ai vu des histoires de double chargement de la page?Merci de votre aide Modifié 26 Février 2009 par Dadou Merci d'utiliser le gras avec parcimonie ainsi que la balise CODEBOX pour les codes longs comme celui-ci
dude00 Posté 26 Février 2009 Auteur Posté 26 Février 2009 D'autre par les deux champ on exactement le meme timestamp.
Xethorn Posté 26 Février 2009 Posté 26 Février 2009 (modifié) Salut, Tu pourrais nous donner la structure de ta base de données ? Normalement les doublons peuvent être facilement éviter (dans un premier temps) par l'utilisation de clés primaires uniques. Je cherche où peut provenir l'erreur mais je ne vois pas non plus ... xethorn ps. Le problème peut venir de Ajax (ça serait étrange, mais comme tu ne montres pas ton code js). Sinon le code php semble ok. Modifié 26 Février 2009 par Xethorn
dude00 Posté 26 Février 2009 Auteur Posté 26 Février 2009 ma clés primaire est en auto_increment donc c'est pas le souci je vous met ci dessous le code de la page en entier mais c'est un peu lourd. Désolé et merci pour ta reponse. <html><body bgcolor=#ffffff text=#333333 link="#000000" leftmargin=0 topmargin=0 vlink="336666" alink="#990000"><style>#a { background-color: orange; border: 1px solid black; width: 300px; }#b { background-color: darkblue; height: 30px; }#c { color: white; text-align: center; padding-top: 5px; }</style><br><br><table align="center" border="0" cellspacing="0"><tr> <td align="center"> <b><font color="#990000">Attention: Envoi en cours, veuillez ne pas fermer la fenêtre avant que l'envoi soit totalement effectué.</font></b> </td></tr><tr> <td align="center"> <div id="a" align="left"> <div id="b"> <div id="c"> </div> </div> </div> </td></tr></table><script LANGUAGE="javascript" SRC="scripts/md5.js"></SCRIPT><script LANGUAGE="Javascript">var Account = new Array();var Users = new Array();<?echo "\tvar CityId = ".$city_id.";\r\n";echo "\tvar Msg = '".$msg."';\r\n";$account = $db->get_city_sms_account($city_id);$a = 0;foreach ($account as $key => $value){ echo "\tAccount['$key']='$value';\r\n";}//print_r($sms_list_id);function get_subscribers_single_list($sms_list_id, $msg, $users_list = null, $city_id, $user_id, $db){ $sms_list = $db->get_sms_list_subscriber($sms_list_id); $nb_sms=count($sms_list); echo"nb_sms=".$nb_sms=count($sms_list); //print_r($sms_list); $sms_histo_list_id = $db->log_list_sms_new($msg, $user_id, $city_id, $sms_list_id,$nb_sms); if ($sms_list) { $a = 0; foreach ($sms_list as $key=>$sms_user) { if($sms_user!=null){ $tab_infos=$db->recup_info_for_sms_send_param($sms_user); if(strcmp("33", substr($sms_user,0,2))) $sms_user= "%2b33".substr($sms_user,1); if ($users_list == null) $users_list = array(); array_push($users_list, array("sms_sub_tel" => $sms_user, "sms_sub_name" => $tab_infos["contact_surname"], "sms_dest_id" => $tab_infos["contact_id"], "sms_histo_list_id" =>$sms_histo_list_id[$key])); } } } return $users_list;}$Users_index = 0;$users_list = array();if ($sms_list_id != -1){ $users_list = get_subscribers_single_list($sms_list_id, $msg, null, $city_id, $user_id, $db); //echo "user_list=".$users_list;}$a = 0;foreach ($users_list as $key => $value){ echo "\tUsers[$a] = new Array();\r\n"; foreach ($value as $key2 => $value2) echo "\tUsers[$a]['$key2']='$value2';\r\n"; $a++;}?>var sms_sended = 0;var progress = 0;var i = 0;var total_sms = Users.length;/*var Host = "sms.haysystems.com";var Method = "POST";var Port = "80";var Data = null;var Action = "sendtxt";var url = "./scripts/open_url.php";var url_req = "http://"+Host+":"+Port+"/"+Action+"/";*/var Host = "multilevel.mobyt.fr";var Method = "POST";var Port = "80";var Data = null;var Action = "sms/send.php";var url = "./scripts/open_url.php";//var url_req = "http://"+Host+"/"+Action+"";var url_req = "http://multilevel.mobyt.fr/sms/send.php";//for (var a = 0; a < Users.length;a++)//{//modif: fonction de test sur le tag emetteur -->yannick le 16/10/2008<?$tag=($_REQUEST["tag"]);$interdit=array(">", "<", ":", "*","\\", "/", "|", "?", "\"" );$tag=str_replace($interdit,"",$tag); if (isset($tag)){ if (is_numeric($tag)) { if(preg_match("#^06([-. ]?[0-9]{2}){4}$#",$tag)) $tag = "%2b33".substr($tag,1); elseif(preg_match("#^336([-. ]?[0-9]{2}){4}$#",$tag)) $tag = "%2b33".substr($tag,2); elseif(preg_match("#\+336([-. ]?[0-9]{2}){4}$#",$tag)) $tag=urlencode($tag); } elseif (is_string($tag)) { $tag = substr($tag,0,10); $tag = addslashes(strtr($tag,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn")); } }?>//fin de modif -->Yannick/*function send_sms(Account, Users, a){ //alert("envoi numero:"+a); var Params = new Array();/* Params["url"] = url_req Params["client_id"] = Account["sms_account_name"]; Params["text"] = Msg.replace("#nom", Users[a]["sms_sub_name"]); Params["destaddr"] = Users[a]["sms_sub_tel"]; Params["sms_dest_name"] = Users[a]["sms_sub_name"]; Params["sms_dest_id"] = Users[a]["sms_subscriber_id"]; Params["sms_histo_list_id"] = Users[a]["sms_histo_list_id"]; Params["srcaddr"] = 'test'; Params["key"] = MD5(Account["sms_account_password"]+Params["text"]+Params["destaddr"]);*/ Params["url"] = url_req ; Params["user"] = "F05271"; Params["pass"] = "210w4ah1"; Params["rcpt"] = Users[a]["sms_sub_tel"];// alert('tel = '+Users[a]["sms_sub_tel"]); alert('<?php echo $tag; ?>'); Params["sender"] = '<?php echo $tag;?>'; Params["data"] = Msg.replace("#nom", Users[a]["sms_sub_name"]); Params["qty"] = "n"; Params["client_id"] = Account["sms_account_name"]; Params["text"] = Msg.replace("#nom", Users[a]["sms_sub_name"]); Params["destaddr"] = Users[a]["sms_sub_tel"]; Params["sms_dest_name"] = Users[a]["sms_sub_name"]; Params["sms_dest_id"] = Users[a]["sms_subscriber_id"]; Params["sms_histo_list_id"] = Users[a]["sms_histo_list_id"]; Params["srcaddr"] = 'test'; Params["key"] = MD5(Account["sms_account_password"]+Params["text"]+Params["destaddr"]); var count = 0; var Key; var req = ""; for ( Key in Params) { //if (count++ == 0) // req += "?" //else if (count++ > 0) req += "&" req += Key+"="+Params[Key]; } //req = encodeURI(data);// alert(url);// alert(url_req);// alert('req= '+req); //var data = encodeURI("url='"+url_req+"'&req='"+req+"'"); var xhr_object = null; if(window.XMLHttpRequest) // Firefox { xhr_object = new XMLHttpRequest(); } else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); } xhr_object.open(Method, url, true); //if(Method == "GET") xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send(req);// alert('rep = '+req); xhr_object.onreadystatechange = function() { //alert('state='+xhr_object.readyState); if(xhr_object.readyState == 4) { alert("reponse received : "+xhr_object.responseText); sms_sended++; progress = (sms_sended / total_sms) * 100; i = progress * 3; if (i > 40) { document.getElementById("c").innerHTML=parseInt(progress)+"%"; } document.getElementById("b").style.width=i+"px"; if ( (a + 1) < Users.length) { send_sms(Account, Users, a + 1); } } }//} /*xhr_object.open(method, url, true); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4 && xhr_object.responseText.substr(0, 1) == "S") sms_sended++; progress = (sms_sended / total_sms) * 100; i = progress * 3; if (i > 40) { document.getElementById("c").innerHTML=parseInt(progress)+"%"; } document.getElementById("b").style.width=i+"px"; } if(method == "POST") xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send(req);*///}//alert("debut de l'envoi");send_sms(Account, Users, 0);</script></body></html><?}else echo "$erreur";
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant