IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fichier .txt, ne pas entrer la variable si elle y est deja?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut Fichier .txt, ne pas entrer la variable si elle y est deja?
    Bonjour,

    Mon site dispose d'un formulaire d'envoi de devis par email.
    A l'issue de l'envoi du mail, je fait enregistrer l'email dans un fichier .txt afin de contituer un listing des email pour pouvoir, eventuellement, plus tard, envoyer un email d'information.
    L'ecriture de l'email dans le fichier txt fonctionne bien.
    Mais ce que je voudrais faire c'est que dans le cas ou une adresse email est deja presente, je voudrais qu'elle ne s'inscrive pas plusieur fois ...
    J'ai deja une piste mais sa n'a pas l'aire de fonctionner...

    Si vous avez une idée, j'en serais ravi .
    Merci d'avance


    Voici le script pour la sauvegarde de l'email:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //listing
     
    $user= fopen('mailing.txt', 'a+');
     
    if (in_array"$email") 
    Header("Location: http://#/contenu/confirm.php");
    else fputs($user, "$email\n" );
     
    fclose($user);
     
    Header("Location: http://#/contenu/confirm.php");

    Voici l'action du formulaire d'envoi complet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?php
     
    $msg = "Type:\t$type\n";
    $msg .= "Nom:\t$lastname\n";
    $msg .= "Prenom:\t$firstname\n";
    $msg .= "Fonction:\t$fonction\n";
    $msg .= "Societe:\t$societe\n";
    $msg .= "Adresse:\t$address\n";
    $msg .= "Code postal:\t$zipcode\n";
    $msg .= "Ville:\t$city\n";
    $msg .= "Pays:\t$country\n";
    $msg .= "Telephone:\t$phone\n";
    $msg .= "E-Mail:\t$email\n";
    $msg .= "Fax:\t$fax\n";
    $msg .= "Produit:\t$product\n";
    $msg .= "Dimensions:\t$dim\n";
    $msg .= "Quantité:\t$quantity\n";
    $msg .= "Message:\t$message\n\n";
     
    $recipient = "#@#.com";
    $subject = "Devis $type - $societe du $date à $heure";
     
    $mailheaders = "From: AES - Devis<#@#.com> \n";
    $mailheaders .= "Reply-To: $email\n\n";
     
    mail($recipient, $subject, $msg, $mailheaders);
     
    //listing
     
    $user= fopen('mailing.txt', 'a+');
     
    if (in_array"$email") 
    Header("Location: http://#/contenu/confirm.php");
    else fputs($user, "$email\n" );
     
    fclose($user);
     
    Header("Location: http://#/contenu/confirm.php");

  2. #2
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    c'est bien joli ton in_array mais tu ne lui dit pas dans quel tableau chercher ^^
    Tu devrais lire tout ton fichier ligne par ligne et ajoutant dans un tableau chaque ligne une à une. Puisque chaque ligne doit contenir une adresse email si j'ai bien compris.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    en fait, à ce stade, je me contente de rentrer la adresse des personnes qui demande un devis dans un txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Listing mail
    $user= fopen('mailing.txt', 'a');
    fputs($user, "$email;\n" );
    fclose($user);
    Et je voudrais que par exemple, si la meme personne me redemande un devis depuis le meme email, cette derniere ne s'ajoute pas à la liste, ce qui me crérai des doublons inutiles...

  4. #4
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    Ouioui j'ai vu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $user= fopen('mailing.txt', 'a+');
     
    if (in_array"$email") 
    Header("Location: http://#/contenu/confirm.php");
    else fputs($user, "$email\n" );
    Maintenant je te dit le truc qui ne va pas c'est ça :
    in_array à besoin de l'élement à trouver ET du tableau dans lequel chercher

    Perso je te conseillerai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $file = 'mailing.txt';
     
    $listEmail = file($file);
     
    if (in_array($email, $listEmail)) 
        Header("Location: http://#/contenu/confirm.php");
    else {
       $handle = fopen($file, 'a+');
        fputs($handle, "$email\n" );
        fclose($handle);
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    ok, merci à toi

    Par contre il m'indique une erreure à la ligne de la balise de fermeture ?>

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Ha oui, c'est bon.

    L'enregistrement de l'email fonctionne à nouveau mais il n'a pas l'aire de prendre en compte le in_array ... il me liste quand meme deux email identique

  7. #7
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    fait un print_r($listEmail); et un var_export($email);

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Désolé si je suis lourd mais je ne maitrise que quelque notions de php,
    esque tu pourrais m'expliquer comment je dois m'y prendre s'il te plait ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Je me suis renseigné sur ces deux fonctions mais je n'arrive pas à trouver comment les utiliser dans ce script ...

  10. #10
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut


    Voila j'ai résolu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $file = 'mailing.txt'; 
     
    $handle = fopen($file, 'r+');
     
    $listEmail = array();
    while(!feof($handle)) {
    	$ligne = fgets($handle);
    	$listEmail[] = trim($ligne);
    }
     
    if (in_array($email, $listEmail)) 
    	header("Location: http://#/contenu/confirm.php");
    else {
    	fputs($handle, $email.chr(10));
    }
     
    fclose($handle);
    Par contre http://#/ ça existe pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 20/06/2007, 10h21
  2. [FLASH MX] Variables depuis un fichier txt
    Par mascagne dans le forum Flash
    Réponses: 4
    Dernier message: 01/03/2006, 17h57
  3. Réponses: 5
    Dernier message: 21/10/2005, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo