Bonsoir,
aujourd'hui je doit réaliser un systeme mais je ne sais pas comment procéder si quelqu'n peux m'aider sa serai cool, alors je vous explique au départ j'ai un champs [textarea] je doit mettre plusieurs email dedans et envoyé le formulaire, lorsque j'aurai envoyé j'aimerai filter les email par exemple si c'est GMAIL sa crée automatiquement un textarea avec les email de type GMAIL et ainsi de suite.

Merci d'avance.

12 réponses


Les expressions régulières te permetteront de faire le tri, parcontre tu veux créer dynamiquement un textarea par type d'adresse?

MehdiWEB
Auteur

Oui, c'est bien sa j'ai bien essayer mais j'y arrive pas, je sais pas dutout comment y procéder si tu peux m'aider avec du code sa serai cool

Bonjour bonjour, :)

Je peux "essayé" de t'aidé mais sans code... :-°

Récapitulatif

Tu as un textarea dans lequel tu as renseigne plusieurs e-mail. Puis tu souhaites créer un textarea avec chaque type (gmail, ootlook, laposte...)

Question

par exemple si c'est GMAIL sa crée automatiquement un textarea avec les email de type GMAIL et ainsi de suite.

Je comprend pas ce que tu veux dire...

Solution proposé (non tester)

Je vois la chose comme cela :

  • une classe / fonctions (tout dépend si tu es OO ou pas)
  • en paramètre, elle prend tes données sous forme de tableau (email envoyé via le formulaire)
  • tu boucles sur ton tableau de mail
  • a chaque tour de boucle, tu traites ton email, par exemple avec : strstr, puis avec un explode auquel tu combineras un str_replace Un exemple car je te sent perdu ^^
    
    <?php

//Si tu ne comprend pas comment ça fonctionne fais le test et débug avec un var_dump à chaque fois
$data = strstr($data, '@'); //$data une variable contenant une seul adresse E-Mail obtenu grâce à ta boucle
$data = explode('.', str_replace('@', '', $data));

* Une fois que tu as récuperer l'élément qui t'interesse, tu le stock dans un tableau ($retourn par exemple) 

<?php

//Après le traitement de tes mails $retourn, contiendras ceci par exemple :
$retourn = ['gmail', 'outlook', 'laposte', 'live']


* tu retourne le tableau $retourn (je rapelle que tu es dans une fonction/class.
* Une fois retourne, tu boucles sur le tableau retourné et tu créer ton textarea avec les info qui sont dans ton tableau.

Conclusion
---

On peeux amélioré ça en faisant une classe qui génererais automatiquement le code html, mais si tu arrive déjà a le faire comme cela ce seras déjà bien. :)

Cordialement.

PS : N'oublie pas de répondre à ma question. :) Je rappelle que **je n'ai pas tester**. ;)

Edit : Expression régulière, ce faire chier pour pas grand chose je trouve :-°

Bon, après avoir fais mon malin et donné une idée de comment le faire, je devais essayé de le faire ^^, c'est chose faites, cependant, il faut un moyen pour savoir quand s'arrette ta première adresse Mail et quand débute la deuxième.

Soit tu fais un tableau avec toutes les extention possible (.net, .com, .fr etc...) soit tu sépare tes adresse Email avec un caractère que ton adresse mail ne contient pas (';', ' '...)

Cordialement. :)

Le plus logique serait d'utiliser le caractère d'échappement (\n) , Pas très sécurisé, de par l'utilisation d'un textarea plutôt que de plusieurs inputs :/

Entièrement d'accord avec Bakar23 !

MehdiWEB
Auteur

J'ai trouvé un logiciel qui fait la même chose, mais sa serai cool de le faire en PHP histoire de voir comment sa marche et de s'améliorer

MehdiWEB
Auteur

@eloyasGithub pour ta question, au départ j'ai un seul textaera ou je doit mettre ma mail list et dedans y'a genre 2 emails (test@gmail.com,test@hotmail.fr) ba sa devra crée automatiquement deux textarea (GMAIL,HOTMAIL) avec les emails qui corresponde

Tu veux le faire en PHP ? Ok donc tu reprends mon long roman ci-dessus et tu y ajoute :

  • Des foreach
  • la fonction : strpbrk

    et voilà :)

Cordialement.

MehdiWEB
Auteur

C'est bien beau comme tu le dit, mais me faudra un sommaire ou une procédure à suivre

OUAH ! Je t'ai pas donné assez d'information ? Alors voici un pseudo-code basé sur mon code, qui lui est fonctionnel. Traduis le en PHP et tu auras ce que tu veux !

HTML

Pour l'html je pars de ceci (je te donne le code, c'est gentil x') ) :

<form method="post" action="index.php">around    
    <textarea name="mail"></textarea>around    
<button type="submit">Posté</button>around</form>
Pseudo code

On attaque le pseudo code. Tu remplis le textarea avec tes emails, et tu choisis un caractère pour les séparers (j'ai choisi le ';' pour l'exemple).

  • Tu "coupes" tes adresses E-Mail en prenant pour "repère" le caractère d'espacement (pour moi c'est le ';' ), tu récupereras donc un tableau avec tout tes mails séparer dans un index différent
  • Tu crées un tableau vide (je vais l'apeller $mail)
  • Tu boucles sur le tableau obtenu dans l'étape 1
  • Pour chaque tour de boucle, tu recupère tout ce qui ce trouve après le @ et tu le stocke dans un nouvelle index du tableau vide créé à l'étape 2. (A ce stade $mail pour chaque index : @gmail.com, @live.com...
  • Tu créer un nouveau tableau vide (je l'ai nommé $retourn)
  • Tu refais une boucle sur le tableau de l'étape 2 ($mail dans mon cas)
  • a chaque tour de boucle tu mets dans un nouvel index de $retourn, le "texte" que tu veux (gmail, ootlook...) en, virant le @ et en supprimant le point et tout ce qu'il ce trouve après
  • A cette étape, mon code m'affiche : $retourn[0] = 'gmail', $retourn[1] = 'laposte' etc...

Voici un screen avec le débuggage de mes variables pour te le montré : images

Voilà. :)

Cordialement.

PS : Ce n'est pas du "vrai" pseudo-code mais je voulais une mise en page correct ^^

Edit : Les fonctions données ci-dessus te serviront... Go la bible ...

Comme procédure, on commence toujours (normalement) par l'algorithmie, documente toi sur les méthodes citées ci dessus. Coté JS, tu auras besoin de créer un nouveau node pour chaque type de mail, après avoir fait la distinction sur ta liste avec prototype.unique par exemple.