Extraire date de désincription – Mailpoet (Créer un compte)

  • Statut : non résolu
  • Ce sujet contient 3 réponses, 2 participants et a été mis à jour pour la dernière fois par JohnPEWEB, le il y a 9 années.
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #557475
    JohnPEWEB
    Participant
    Chevalier WordPress
    125 contributions

    Bonjour !

    Je cherche à avoir une sortie (via page web ou fichier.csv par exemple) de toutes les dates de désinscription pour chaque newsletter pour le plugin Mailpoet.

    Aprés échange avec le support, c’est possible mais demande du développement spécifique (ce dont je me doutais), ces dates étant inscrites dans la BDD, je pense que cela est possible mais je cherche une début de réponse.

    Des gens l’on expérimenté ici ?

    Merci pour vos retours !

    #1032527
    JohnPEWEB
    Participant
    Chevalier WordPress
    125 contributions

    J’ai pu avancer sur mon problème,

    Les dates de désinscription sont stockées dans XX_wysija_user_list avec ces colonnes :

    list_id
    user_id
    sub_date
    unsub_date

    Il me reste à faire une sortie PHP des ces données par contre et la je nage complètement pour m’en sortir, il faut que je corise des données de tables différentes et que je transforme les dates en format UNIX vers un format classique.

    Mon code pour l’instant :




    <title>Ceci est un test</title>


    <?php
    // lancement de la requête (on impose aucune condition puisque l'on désire obtenir la liste complète des utilisateurs
    $sql = 'SELECT unsub_date, user_id FROM wp_wysija_user_list WHERE unsub_date!="0";
    ';

    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    $req = mysql_query($sql) or die('Erreur SQL !<br />‘.$sql.’<br />‘.mysql_error());

    // on va scanner tous les tuples un par un
    while ($data = mysql_fetch_array($req)) {
    // on affiche les résultats
    echo ‘Nom : ‘.$data[‘user_id’].’<br />‘;
    echo ‘Date de désincription : ‘.$data[‘unsub_date’].’<br /><br />‘;
    }
    mysql_free_result ($req);
    mysql_close ();
    ?>

    Ce qui me donne une sortie comme ceci :

    Nom : 1
    Date de désincription : 1446711923

    Nom : 7
    Date de désincription : 1429696268

    Nom : 147
    Date de désincription : 1434003094

    Je continue à avancer dessus, mais toute aide est la bienvenue !

    #1032528
    mathieu789
    Participant
    Maître WordPress
    1082 contributions

    Pour consulter la table, je te conseille d’utiliser WPDB ou bien même les classes incluses dans MailPoet. ça t’évitera des problème en cas de changement de structures
    essaye ça par exemple :

    $model_user_list = WYSIJA::get(‘user_list’, ‘model’);
    $query = ‘SELECT unsub_date, user_id
    FROM ‘ . ‘[wysija]’ . $model_user_list->table_name . ‘
    WHERE unsub_date != « 0 »‘;
    $result = $model_user_list->query(‘get_res’, $query);

    echo « <pre>";
    print_r($result);
    echo "</pre>« ;

    ensuite pour la date, si le format est bien un timestamp, tu peux l’utiliser comme ça :

    $timestamp = « 1434003094 »;
    echo date(« d/m/Y H:i:s », $timestamp); // affiche 11/06/2015 08:11:34

    je précise « si le format est bien un timestamp » parce que WordPress a une façon bizarre de gérer les dates et j’espère que MailPoet n’a pas suivi cette mauvais habitude

    #1032529
    JohnPEWEB
    Participant
    Chevalier WordPress
    125 contributions

    Je suis partie sur un peu plus lourd en code, il me retourne le mail, le nom de la liste d’abonné et la date de désinscription, le tout dans un tableau.
    Seul bémol j’ai des doublons qui ne parte pas avec SELECT DISTINCT ou un array unique. Après recherche ce ne sont pas vraiment des doublons car la différence se fait au niveau de la colonne campaign_id issu de la table wp_wysija_campaign



    <title>Abonnés désinscrits</title>


    <?php
    // lancement de la requête
    $sql = 'SELECT DISTINCT *
    FROM xx_wysija_user_list UL
    LEFT JOIN xx_wysija_user U ON U.user_id = UL.user_id
    LEFT JOIN xx_wysija_campaign_list C ON C.list_id = UL.list_id
    LEFT JOIN xx_wysija_list L ON L.list_id = UL.list_id
    WHERE unsub_date!="0"
    ORDER BY `UL`.`unsub_date` DESC;
    ';


    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    $req = mysql_query($sql) or die('Erreur SQL !<br />‘.$sql.’<br />‘.mysql_error());

    echo ‘<table bgcolor="#FFFFFF">‘. »n »;
    // première ligne on affiche les titres
    echo ‘<tr>‘;
    echo ‘<td bgcolor="#669999"><b>Email</b></td>‘;
    echo ‘<td bgcolor="#669999"><b>Nom de la liste</b></td>‘;
    echo ‘<td bgcolor="#669999"><b>Date de désinscription</b></td>‘;
    echo ‘</tr>‘. »n »;

    while($data = mysql_fetch_array($req)) {
    echo ‘<tr>‘;
    echo ‘<td bgcolor="#CCCCCC">‘.$data[’email’].’</td>‘;
    echo ‘<td bgcolor="#CCCCCC">‘.$data[‘name’].’</td>‘;
    echo ‘<td bgcolor="#CCCCCC">‘.date(‘d/m/Y’, $data[‘unsub_date’]).’</td>‘;
    //echo ‘<td bgcolor="#CCCCCC">‘.date(‘d/m/Y’, 1447856186).’</td>‘;
    echo ‘</tr>‘. »n »;
    }
    echo ‘</table>‘. »n »;
    // fin du tableau.
    mysql_free_result ($req);
    mysql_close ();
    ?>

    Je pense que tu auras ta réponse aussi concernant les dates ^^, de mon coté je planche toujours sur ces faux doublons que je souhaiterais masquer.

    Je vais essayer ton code histoire de jeter un œil, ça me mènera peut-être sur la piste !

    Merci !

4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.