Annonce

#1 Re : Aide technique » Inclure directement dans les tables mes propres données » 2006-09-12 15:42:25

Bonjour,

désolé de ne pas avoir suivi le post mais j'ai eu un crash d'ordi qui m'a durée 3 semaines  :x

Bref, tant mieux padaben si tu as réussi tout seul c'st comme ca que l'on progresse  wink

Et merci a bobe pour les petites améliorations du code, en effet mon serveur a deja les magic quotes par contre je ne connaissais pas la faille lié a LIKE.

Je suis quand mem content que ca ai pu en aider certain  smile

#2 Re : Aide technique » Problème d'envois en html sur 1&1 » 2006-06-22 15:04:54

Je ne sais pas si ca peux t'aider mais je suis aussi chez 1&1 et j'ai eu un probleme de mail mais général.
Le probleme venait qu'il y avait un conflit entre les mails créaient dans le panneau de config de 1&1 (mes mail était créé dans ce panneau) et l'outils de mail (Qmail) de PLESK. Il m'a donc suffit de désactiver l'outil de mail au niveau du domaine dans plesk et plus de probleme.
Je ne sais pas si cela a un rapport mais on ne sait jamais  smile

#3 Re : Aide technique » Inclure directement dans les tables mes propres données » 2006-06-20 23:30:40

Bon voila c'est fait et ca marche nickel  wink

Allez comme je suis gentil voici la fonction qui me permet ca, ca devrait etre adaptable facilement a vos besoin.

    /*
     * Génère le register_key pour l'inscription à la newsletter.
         * Code de wanewsletter
    */
    function generate_key($num_char = 32, $use_uniqid = true){
        if( $use_uniqid == true ){
            srand((double) microtime() * 1000000);
            $rand_str = md5(uniqid(rand()));
        }else{
            $rand_str = md5(microtime());
        }
        return ( $num_char >= 32 ) ? $rand_str : substr($rand_str, 0, $num_char);
    }
    
    /*
     * Gestion de l'utilisateur dans wanewsletter.
    */
    function setWaUser($pseudo, $mail, $format, $action){
        // Selon l'action on manage l'utilisateur ou on le supprime.
        if ( $action == "manage" ){
            // On vérifie si le mail est déja dans la base.
            // Au passage on en profite pour récupérer le abo_id qui sera utile pour l'update.
            $query_user = "SELECT abo_id FROM wa_abonnes WHERE abo_pseudo LIKE '".$pseudo."' AND abo_email LIKE '".$mail."'";
            $exe_query_user = mysql_query ( $query_user );
            $row_query_user = mysql_fetch_row ( $exe_query_user );
            if ( $row_query_user[0] > 0 ){
                // Si l'email existe on fait un update des valeurs dans la table wa_abo_liste.
                $query_up = "UPDATE wa_abo_liste SET format = ".$format.", register_date = ".time()." WHERE abo_id = ".$row_query_user[0]." LIMIT 1";
                $exe_query_up = mysql_query ( $query_up );
            }else{
                // L'email n'existe pas donc on cré l'utilisateur.
                // tout d'abord dans la table wa_abonnes.
                $query_abo = "INSERT INTO wa_abonnes (abo_pseudo, abo_email, abo_status) VALUES ('".$pseudo."', '".$mail."', 1)";
                $exe_query_abo = mysql_query ( $query_abo );
                // Comme le champ abo_id n'est pas auto_incrementé il faut lui attribué le même manuellement.
                $id_abo = mysql_insert_id ();
                // et ont insert dans la base wa_abo_liste.
                $query_liste = "INSERT INTO wa_abo_liste (abo_id, liste_id, format, register_key, register_date, confirmed) VALUES (".$id_abo.", 2, ".$format.", '".generate_key()."', ".time().", 1)";
                $exe_query_liste = mysql_query ( $query_liste );
            }
        }elseif ( $action == "delete" ){
            // L'utilisateur veut etre supprimer. On récupère sont abo_id.
            $query_user = "SELECT abo_id FROM wa_abonnes WHERE abo_pseudo LIKE '".$pseudo."' AND abo_email LIKE '".$mail."'";
            $exe_query_user = mysql_query ( $query_user );
            $row_query_user = mysql_fetch_row ( $exe_query_user );
            // On commence par la table wa_abo_liste.
            $query_del_list = "DELETE FROM wa_abo_liste WHERE abo_id = ".$row_query_user[0]." LIMIT 1";
            $exe_query_del_list = mysql_query ( $query_del_list );
            // Et on termine par la table wa_abonnes.
            $query_del_abo = "DELETE FROM wa_abonnes WHERE abo_id = ".$row_query_user[0]." LIMIT 1";
            $exe_query_del_abo = mysql_query ( $query_del_abo );
        }
    }

Il suffit d'appeler la fonction avec vos parametres et avec une condition cela peu meme servir a la mise a jour sur votre site.

if ( $inscription == "ok" ){
     setWaUser ( "Pseudo", "monmail@fai.com", 1, "manage" );
}else{
     setWaUser ( "Pseudo", "monmail@fai.com", 1, "delete" );
}

N'oubliez pas de mettre votre numéro de liste (le mien c'est 2)
Bien sur l'appelle se fait en plus de l'enregistrement de votre formulaire a vous, et vous pouvez évidemment changer les variable en fonction de vos besoins.

N'hesitez pas a faire des commentaires ou a poser des questions


8)

#4 Re : Aide technique » Inclure directement dans les tables mes propres données » 2006-06-20 18:18:42

Ah super, (désolé de répondre maintenant j'ai pas eu la notification ??)
Bref
Merci de ta confirmation Bobe  smile
Si tu pouvais juste m'eclairer sur 2 petites choses, a savoir
Pour abo_lang quelle sont les valeur possible? Ce qui m'etonne c'est que je viens d'importer une tres grosse base et qu'aucune adresse n'a ce champ rempli.
Et pour send idem quel sont les valeurs et pourquoi alors que j'ai fais un envoi elle sont toujours a zéro?

En tout cas vraiment un trés bel outil  :love2:

#5 Re : Aide technique » Inclure directement dans les tables mes propres données » 2006-06-14 17:57:12

Bonjour,  smile

Tout d'abord félicitation pour ce superbe script (moi j'appellerais meme ca "logiciel" wink )

J'ai pour un site un formulaire d'inscription déja existant.
Je voudrais donc lié mes fonctions directement sur les tables de wanewsletter.
J'ai la version 2.3, serveur linux 1&1, PHP 5.02, MySql 4.1.16 sous PHPMYADMIN 2.6.4, SMTP non, 1 mail par abonné

Je voudrais donc savoir s'il n'y a pas de contre indication et savoir si ma methode sera bonne.

Donc, la table "wa_abonnes" recupere:
- abo_pseudo -> le pseudo
- abo_pwd-> le pass, qui ne sera pas dans cette table donc vide
- abo_email -> le mail, qui bien évidement ne pourra etre vérifié avec cette méthode, mais pour ce site aucune importance.
- abo_lang -> la langue, en FR
- abo_status -> pour la confirmation. Je n'en demande pas donc a 1

Et la table "wa_abo_liste" recupere:
- liste_id -> Identifiant de la liste de diffusion, ici 2
- format -> format de la newsletter 1=txt 2=html
- send -> ca je sais pas a quoi ca sert?????? Mais aprés test a 0 ca marche... :???:
- register_key -> Je pense qu'il s'agit d'une clé d'identification unique pour les liens de désinscription. Elle est générer par la fonction generate_key()
- register_date -> date d'enregistrement avec time()
-confirmed -> idem que abo_status

Voila, donc est ce que si je rempli ces champs directement avec mes propres fonctions je n'aurais pas de probleme?
Y a t il d'autre table lié a l'utilisateur?

A vrai dire, j'ai beaucoup chercher des réponses avant de posté sans rien trouvé et ca me parait tellement simple que je pense que c'est trop beau pour etre vrai :grin2:

Merci d'avance

Pied de page des forums

Propulsé par FluxBB