XLAgenda
Un agenda en PHP pour votre site Web

 

Accueil | Présentation | Configuration nécessaire | Installation | Historique | FAQ | Forum | Utilisateurs | Démonstration


XLAgenda - Le Forum

Bienvenue ! Le forum de XLAgenda est à votre disposition depuis le 26 janvier 2007. N'hésitez pas à l'utiliser pour signaler des problèmes, suggérer des améliorations ou demander de l'aide.

Vous n'êtes pas identifié(e).

#1 16/03/2012 18:50:53

airoine
Membre
Lieu : La roche sur Yon
Inscription : 16/03/2012
Messages : 7
Site Web

Doublons dans les RDV quand rafraichissement de page

Bonjour

c'est juste pour signaler que lorsqu'un rdv est posté, si on rafraichit la page (F5), il est a nouveau posté. On se retrouve donc avec autant de doublons que de rafraichissement de page.
Je suis sous la version 4.2
Si cela n'a pas été encore corrigé, je me propose de faire le patch et de soumettre ici la correction.

Cdt

Erwan

Hors ligne

#2 17/03/2012 09:47:36

airoine
Membre
Lieu : La roche sur Yon
Inscription : 16/03/2012
Messages : 7
Site Web

Re : Doublons dans les RDV quand rafraichissement de page

Bonjour

voici le patch pour la 4.2 que je propose. Cela fonctionne sur mon environnement.
J'ai indenté un peu le code aussi (pour que cela soit plus lisible).
Le principe: Avant d'insérer une nouvelle demande, je vérifie qu'il n'en existe pas une identique (en tout point).

cordialement

--- admin/ajouter.php 
+++ admin/ajouter.php 
@@ -236,58 +236,70 @@
 {
 $description=nl2br($description);
 }
-$query="INSERT INTO $table_agenda (date_debut,date_fin,heure_debut,heure_fin,nom,description,categorie,lieu,contact,adresse,email,telephone,fax,lien,url,id_user,actif) VALUES ('$date_debut','$date_fin','$heure_debut','$heure_fin','$nom','$description','$categorie','$lieu','$contact','$adresse','$email','$telephone','$fax','$lien','$url','$the_id','$auth_actif')";
+$query="SELECT id FROM $table_agenda 
+                  WHERE date_debut = '$date_debut' AND date_fin = '$date_fin' AND heure_debut = '$heure_debut'
+                    AND heure_fin = '$heure_fin' AND nom = '$nom' AND description = '$description'
+                    AND categorie = '$categorie' AND lieu = '$lieu'    AND contact = '$contact'
+                    AND adresse = '$adresse' AND email = '$email' AND telephone = '$telephone'
+                    AND fax = '$fax' AND lien = '$lien' AND url = '$url'
+                    AND id_user = '$the_id' AND actif = '$auth_actif'";
 $result=mysql_query($query);
-//ENVOI D'UN EMAIL A L'ADMINISTRATEUR
-if ($auth_actif == "0" AND $propositions_utilisateurs)
-{
-//ON VERIFIE SI AU MOINS UNE ADRESSE EMAIL EST DANS LA BASE DE DONNEES
-$query="SELECT email FROM $table_users WHERE email LIKE '%@%' AND gerer = '1'";
-$result=mysql_query($query);
-if($result)
-{
-$total=mysql_num_rows($result);
-if ($total)
-{
-//ON ENVOIE LE MAIL
-$nom=stripslashes($nom);
-$texte ="Un événement en attente posté par : $the_user\n\n";
-$texte .="Nom de l'événement : $nom\n\n";
-$texte .="Connectez vous à l'interface d'administration pour valider ou rejeter cet événement.\n\n";
-$texte .="http://$server/$path_agenda/admin";
-$tab=explode(".",$server);
-if (isset($tab[1]) AND isset($tab[2]))
-{
-$server=array("$tab[1]","$tab[2]");
-$server=implode(".",$server);
-$test_serveur=1;
-}
-$query="SELECT email FROM $table_users WHERE email LIKE '%@%' AND gerer = '1'";
-$result=mysql_query($query);
-while($ligne=mysql_fetch_array($result))
-{
-$adresse=$ligne['email'];
-if ($email_exp)
-{
-$headers = "From: $email_exp\n";
-$headers .= "MIME-Version: 1.0\n";
-$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
-}
-elseif ($test_serveur AND ($server != "free.fr"))
-{
-$headers = "From: [email protected]{$server}\n";
-$headers .= "MIME-Version: 1.0\n";
-$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
-}
-else
-{
-$headers .= "MIME-Version: 1.0\n";
-$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
-}
[email protected]("$adresse", "XLAgenda - Evénement en attente", $texte, $headers);
-}
-}
-}
+$verif_doublon=mysql_num_rows($result);
+if (!$verif_doublon){
+    $query="INSERT INTO $table_agenda (date_debut,date_fin,heure_debut,heure_fin,nom,description,categorie,lieu,contact,adresse,email,telephone,fax,lien,url,id_user,actif) 
+                    VALUES ('$date_debut','$date_fin','$heure_debut','$heure_fin','$nom','$description','$categorie','$lieu','$contact','$adresse','$email','$telephone','$fax','$lien','$url','$the_id','$auth_actif')";
+    $result=mysql_query($query);
+    //ENVOI D'UN EMAIL A L'ADMINISTRATEUR
+    if ($auth_actif == "0" AND $propositions_utilisateurs)
+    {
+        //ON VERIFIE SI AU MOINS UNE ADRESSE EMAIL EST DANS LA BASE DE DONNEES
+        $query="SELECT email FROM $table_users WHERE email LIKE '%@%' AND gerer = '1'";
+        $result=mysql_query($query);
+        if($result)
+        {
+        $total=mysql_num_rows($result);
+        if ($total)
+        {
+            //ON ENVOIE LE MAIL
+            $nom=stripslashes($nom);
+            $texte ="Un événement en attente posté par : $the_user\n\n";
+            $texte .="Nom de l'événement : $nom\n\n";
+            $texte .="Connectez vous à l'interface d'administration pour valider ou rejeter cet événement.\n\n";
+            $texte .="http://$server/$path_agenda/admin";
+            $tab=explode(".",$server);
+            if (isset($tab[1]) AND isset($tab[2]))
+            {
+                $server=array("$tab[1]","$tab[2]");
+                $server=implode(".",$server);
+                $test_serveur=1;
+            }
+            $query="SELECT email FROM $table_users WHERE email LIKE '%@%' AND gerer = '1'";
+            $result=mysql_query($query);
+            while($ligne=mysql_fetch_array($result))
+            {
+                $adresse=$ligne['email'];
+                if ($email_exp)
+                {
+                    $headers = "From: $email_exp\n";
+                    $headers .= "MIME-Version: 1.0\n";
+                    $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
+                }
+                elseif ($test_serveur AND ($server != "free.fr"))
+                {
+                    $headers = "From: [email protected]{$server}\n";
+                    $headers .= "MIME-Version: 1.0\n";
+                    $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
+                }
+                else
+                {
+                    $headers .= "MIME-Version: 1.0\n";
+                    $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
+                }
+                @mail("$adresse", "XLAgenda - Ev?nement en attente", $texte, $headers);
+            }
+        }
+    }
+    }
 }
 $nom = stripslashes($nom);
 echo "<p class=\"confirmation\">L'événement <b>$nom</b> a été ajouté.</p>\n";
@@ -299,19 +311,19 @@
 }
 if (!$auth_actif)
 {
-echo "<p><b>Votre événement sera ajouté à l'agenda après validation par un administrateur.</b></p>\n";
+    echo "<p><b>Votre événement sera ajouté à l'agenda après validation par un administrateur.</b></p>\n";
 }
 echo "<p>Les champs suivis d'un * sont obligatoires.</p>\n";
 if ($erreur)
 {
-$nom=stripslashes($nom);
-$description=stripslashes($description);
-$lieu=stripslashes($lieu);
-$contact=stripslashes($contact);
-$adresse=stripslashes($adresse);
-$telephone=stripslashes($telephone);
-$fax=stripslashes($fax);
-$lien=stripslashes($lien);
+    $nom=stripslashes($nom);
+    $description=stripslashes($description);
+    $lieu=stripslashes($lieu);
+    $contact=stripslashes($contact);
+    $adresse=stripslashes($adresse);
+    $telephone=stripslashes($telephone);
+    $fax=stripslashes($fax);
+    $lien=stripslashes($lien);
 }
 ?>
 <form name="chooseDateForm" id="chooseDateForm" action="ajouter.php" method="post" onSubmit="return verifierFormulaire(this)">

Hors ligne

Pied de page des forums