-->
< <(a=c)> // (f=iso-8859-1)
(B8=Custom3)(B9=Custom4)(BA=Notes)(BB=LastModifiedDate)(BC=RecordKey)
(BD=AddrCharSet)(BE=LastRecordKey)(BF=ns:addrbk:db:table:kind:pab)
(C0=ListName)(C1=ListNickName)(C2=ListDescription)
(C3=ListTotalAddresses)(C4=LowercaseListName)
(C5=ns:addrbk:db:table:kind:deleted)(C6=PalmRecId)
(80=ns:addrbk:db:row:scope:card:all)
(81=ns:addrbk:db:row:scope:list:all)
(82=ns:addrbk:db:row:scope:data:all)(83=FirstName)(84=LastName)
(85=PhoneticFirstName)(86=PhoneticLastName)(87=DisplayName)
(88=NickName)(89=PrimaryEmail)(8A=LowercasePrimaryEmail)
(8B=SecondEmail)(8C=DefaultEmail)(8D=CardType)(8E=PreferMailFormat)
(8F=PopularityIndex)(90=WorkPhone)(91=HomePhone)(92=FaxNumber)
(93=PagerNumber)(94=CellularNumber)(95=WorkPhoneType)(96=HomePhoneType)
(97=FaxNumberType)(98=PagerNumberType)(99=CellularNumberType)
(9A=HomeAddress)(9B=HomeAddress2)(9C=HomeCity)(9D=HomeState)
(9E=HomeZipCode)(9F=HomeCountry)(A0=WorkAddress)(A1=WorkAddress2)
(A2=WorkCity)(A3=WorkState)(A4=WorkZipCode)(A5=WorkCountry)
(A6=JobTitle)(A7=Department)(A8=Company)(A9=_AimScreenName)
(AA=AnniversaryYear)(AB=AnniversaryMonth)(AC=AnniversaryDay)
(AD=SpouseName)(AE=FamilyName)(AF=DefaultAddress)(B0=Category)
(B1=WebPage1)(B2=WebPage2)(B3=BirthYear)(B4=BirthMonth)(B5=BirthDay)
(B6=Custom1)(B7=Custom2)>\n");
// Le début des données est matérialisé par un "<"
$data="<";
// Les carnets générés par Thunderbird semble commencer la numérotation à 80
// Pourquoi ne pas faire pareil ? :)
$cpt=80;
$adresses=mysql_query("select * from adresses");
while($adresse=mysql_fetch_array($adresses))
{
// La colonne "^BE" demande un numéro d'enregistrement valide, prenons l'identifiant du premier enregistrement, par exemple
if($cpt==80)
$affect="{1:^80 {(k^BF:c)(s=9)}
[1:^82(^BE=".$adresse["id"].")]";
// Les données elles-mêmes
$data.="(".$cpt."=".$adresse["id"].")"; // L'identifiant
$data.="(".($cpt+1)."=".$adresse["prenom"].")"; // Le prénom
$data.="(".($cpt+2)."=".$adresse["nom"].")"; // Le nom
$data.="(".($cpt+3)."=".$adresse["nom"]." ".$adresse["prenom"].")"; // Le nom complet
$data.="(".($cpt+4)."=".strtolower($adresse["mail"]).")"; // L'adresse email en minuscule
$data.="(".($cpt+5)."=".$adresse["tel"].")"; // Le téléphone
// Affectation des cellules aux colonnes
$affect.="[".$adresse["id"]; // L'identifiant
$affect.="(^83^".($cpt+1).")"; // ^83 : FirstName
$affect.="(^84^".($cpt+2).")"; // ^84 : LastName
$affect.="(^87^".($cpt+3).")"; // ^87 : DisplayName
$affect.="(^89^".($cpt+4).")"; // ^89 : PrimaryEmail
$affect.="(^8A^".($cpt+4).")"; // ^8A : LowercasePrimaryEmail (!)
$affect.="(^90^".($cpt+5).")"; // ^90 : WorkPhone
$affect.="(^BC=".$adresse["id"].")"; // ^BC : RecordKey
$affect.="]";
// Comme je n'utilise que peu d'informations, je fais un incrément de 10 pour numéroter les cellules
// L'important est que deux cellules n'aient pas le même numéro...
$cpt+=10;
}
// Remplacement des caractères spéciaux dans la chaine des données
$speciaux1 = array('é','è','ç','à','â','ê','û','î','ô','ù','ë','ü');
$speciaux2 = array('$C3$A9','$C3$A8','$C3$A7','$C3$A0','$C3$A2','$C3$AA','$C3$BB','$C3$AE','$C3$B4','$C3$B9','$C3$AB','$C3$BC');
$data = str_replace($speciaux1, $speciaux2, $data);
// Fin des datas.
$data.=">";
// Fin des affectations
$affect.="}";
// On écrit tout ça dans le fichier, dans l'ordre
fputs($file,$data.$affect);
// Et on ferme le .MAB qui est maintenant utilisable par Thunderbird, si tout s'est bien passé...
fclose($file);
echo("Traitement terminé");
?>