Page 1 sur 1
Je dois nettoyer une base
Posté : 17 avr. 2007, 10:51
par Stinger
Je dois nettoyer une base , supprimer plusieurs milliers d’abonnée « périmés »
Suite à un mailing J’ai récupérer dans ma boite mail les retour des adresses mail obsolètes.
Avec un petit soft (email extractor ) j’ai pu extraire une liste de ces emails foireux que j’ai mis dans Excel
Est t’il possible d’automatiser dans une table la suppression d’ enregistrement en partant d’un listing Excel
merci
Posté : 17 avr. 2007, 12:52
par sadeq
oui, mais il faudrait savoir plus:
* le type de la base : mysql ou autre?
* la structure de la table : les champs, les céls?
* la structure de la feuille Excel
Il serait plus simple de l'écrire en VBS.
Posté : 17 avr. 2007, 15:07
par Shrell
ou via un export CSV, ce qui reste encore le plus simple à mon sens
mais en effet, sans données supplémentaires à propos de la base de données, difficile de t'aider plus que ça
Posté : 18 avr. 2007, 17:39
par Stinger
merci pour vos reponse
la base est MySQL 4.1.8-standard ( phpMyAdmin 2.6.2-pl1 )
la base a 18 table celle qui m'intéresse, la table des membres a 20 champs..
quant au fichier excel j'ai fait un export de la table avec tous les emails et donc même nombre de champs et un fichier excel avec la liste des emails obsolètes recuperés par "email extractor" ( 1 champ donc )
Posté : 19 avr. 2007, 09:10
par sadeq
Bon puisque tu n'es pas très explicite, je te file un exemple expliqué.
Mais au préalable, vaut mieux transformer ton fichier Excel en fichier texte.
Voici l'exemple:
<?php
/*
Dans cet exemple, le traitement consiste à supprimer de la base de données les emails obsolètes chargés depuis un fichier texte.
Le fichier texte contient dans chacune de ses lignes, une adresse Email de la forme : "[email protected]"
La mise à jour se fera dans une base de données nommée "maBase" dans une table nommée "maTable" ayant un champ nommé "email" qui est un varchar(255)
*/
//titre
echo "<h1>Suppression des email obsolètes</h1>";
//charger le fichier des emails obsolètes dans une liste
$emails_obsoletes = file("emails_obsoletes.txt");
//commencer le traitement si le fichier n'est pas vide
if ( $emails_obsoletes && is_array($emails_obsoletes) && count($emails_obsoletes)>0 ){
//ouvrir la base pour la mise à jour
$connexion = mysql_connect("localhost", "root", "") or die ("Arrêt: Le serveur ne répond pas!");
mysql_select_db("maBase") or die ("Arrêt: La base de données est inaccessible!");
//parcourir la liste pour traiter email/email
foreach($emails_obsoletes as $email){
//supprimer l'email en cours de la base
$email = trim($email);
if($email != "") {
$sql = "delete from maTable where email = '$email' ";
$result = @mysql_query($sql);
//vérifier si l'email est bien supprimé
if (mysql_affected_rows($connexion) > 0)
echo "<p>'$email' est supprimé";
else echo "<p>'$email' n'est pas supprimé";
}
}
}
else echo "<p>Le fichier des emails obsolètes est vide!";
?>
Posté : 19 avr. 2007, 11:03
par Stinger
merci pour ta réponse sadeq.
Le site a été construit à l'origine en asp, puis migré en php/mysql. Je ne suis pas le développeurs qui a créé le site et donc je dois me débrouiller, mais mes compétences en php/mysql sont assez limité.
ton script est remarquablement documenté , merci beaucoup. et les liens sur les instructions c'est très malin.
Posté : 19 avr. 2007, 11:59
par sadeq
Les liens sur les fonctions de PHP, c'est la super particularité du Forum.
Faut remercier, les gars des coulisses

Posté : 04 mai 2007, 16:32
par Stinger
merci beaucoup sadeq ton script marche impec ! bravo à toi