Aller au contenu

Doublon lors d'un insert


dude00

Sujets conseillés

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é par Dadou
Merci d'utiliser le gras avec parcimonie ainsi que la balise CODEBOX pour les codes longs comme celui-ci
Lien vers le commentaire
Partager sur d’autres sites

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é par Xethorn
Lien vers le commentaire
Partager sur d’autres sites

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";

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...