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 :

insérer ligne Textarea dans BDD [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut insérer ligne Textarea dans BDD
    Bonjour,

    J'ai un Textarea et pour chaqu'une des lignes qui s'y trouvent je voudrais la rajouter dans une ligne dans la table correspondante.

    J'ai donc commencé par récupérer la valeur du Textarea ($email).

    Ensuite j'utilise la fonction Explode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $email = explode("\n", $email);
    Ensuite j'aimerais compter le nombre de ligne dans le Textarea ... mais je ne trouve pas de fonction en php qui le permette ...

    D'avance merci pour vos réponses.

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    La fonction explode est utilisé correctement mais que font les deux points avant le signe égal. Surement, un petit mélange de langage

    Pierre

  3. #3
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par pierre
    La fonction explode est utilisé correctement mais que font les deux points avant le signe égal. Surement, un petit mélange de langage
    Oui merci, mais je m'en suis rendu compte juste après avoir posté ... je me suis trompé de langage de programmation pour le "égal" ...

    Merci pour cette remarque Pierre.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Explode te retourne un tableau, tu peux utiliser count($email) pour connaitre le nombre d'élément de ton tableau.

  5. #5
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Merci pour votre aide, ça m'a déjà permis de bien avancer ...

    Lorsque j'écris le code qui suit ça fonctionne correctement, il introduit toutes les adresses e-mails dans la table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $email = explode("\n", $email);
    $nombre=0;
    $nombre_emails = count($email);
    while ($nombre < $nombre_emails)
    {
    	if (mysql_query("INSERT INTO liste_email VALUES('', '" . $id_admin . "', '". $email[$nombre] ."','". $langue ."', '" . $pays . "', '" . $source . "', NOW(), '')"))
    	{
    		echo ($email[$nombre]);
    	}
    $nombre ++;
    }
    Cependant lorsque je rajoute une condition, pour être sûr que l'information est bien une adresse e-mail, il introduit uniquement la dernière adresse e-mail de la liste ...

    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
    $email = explode("\n", $email);
    $nombre=0;
    $nombre_emails = count($email);
    while ($nombre < $nombre_emails)
    {
    	//Si l'adresse e-mail est valide ...
    	if (preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{1,}\.[a-z]{2,6}$#', $email[$nombre]))
    	{
    		if (mysql_query("INSERT INTO liste_email VALUES('', '" . $id_admin . "', '". $email[$nombre] ."','". $langue ."', '" . $pays . "', '" . $source . "', NOW(), '')"))
    		{
    			echo ($email[$nombre]);
    		}
    	}
    $nombre ++;
    }
    Je ne comprends pas pourquoi il introduit uniquement la dernière adresse e-mail de la liste ... Car toutes les e-mails introduitent correspondent bien au Regex que j'ai rajouté dans le code !

  6. #6
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Il doit surement y avoir un problème avec la regex. Le mieux est de faire quelques echos dans le if preg_match pour voir s'il rentre bien dedans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    //Si l'adresse e-mail est valide ...
    	if (preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{1,}\.[a-z]{2,6}$#', $email[$nombre]))
    	{
     
    echo 'Email '.$email[$nombre].' : OK <br>';
    ...
    Sinon, pour le parcours d'un tableau, une boucle for() est plus adapté

    Ou mieux encore la boucle foreach()

    Bonne continuation

  7. #7
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par FCYPBA
    mieux encore la boucle foreach()
    J'ai revu le code en mettant un Foreach :

    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
    $email = explode("\n", $email);
    Foreach ($email as $value)
    {
    	//Si l'adresse e-mail est valide ...
    	if (preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{1,}\.[a-z]{2,6}$#', $value))
    	{
    		if (mysql_query("INSERT INTO liste_email VALUES('', '" . $id_admin . "', '". $value ."','". $langue ."', '" . $pays . "', '" . $source . "', NOW(), '')"))
    		{
     
    		}
    	echo ('$' . $value . '$ OK <br />');
    	}
    	else
    	{
    	echo ('$' . $value . '$ PAS OK <br />');
    	}
    }
    Citation Envoyé par FCYPBA
    Il doit surement y avoir un problème avec la regex. Le mieux est de faire quelques echos dans le if preg_match pour voir s'il rentre bien dedans
    Comme tu as pu le remarquer, j'ai rajouté des echo ... ça m'a permis de comprendre que l'algorithme ne rajoute dans la table que la dernière adresse e-mail ... même si elles sont toutes correct et en accord avec le Regex.

    Parce qu'il rajoute un espace à la fin de chaque ligne en découpant les adresses en tableau.

    Un exemple sera surement plus clair. J'introduis les adresses e-mails suivantes :

    Et après l'exécution la page php écrit :

    $test1@gmail.com $ PAS OK
    $test2@gmail.com $ PAS OK
    $test3@gmail.com$ OK
    On remarque que pour toutes les lignes sauf la dernière, il rajoute un espace ... alors qu'il n'y en a pas au moment de l'introduction des e-mails ...

    Comment puis je faire pour supprimer cet espace ?

  8. #8
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    tu dois utiliser la fonction trim()

    Bonne continuation dans ton projet

  9. #9
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Un grand merci à vous, FCYPBA et Thi0123 pour votre aide !!!

    Tout fonctionne parfaitement !!!

    Bonne programmation à tous.

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

Discussions similaires

  1. retour ligne textarea dans csv
    Par devlm dans le forum Langage
    Réponses: 0
    Dernier message: 12/07/2012, 18h11
  2. [MySQL] Insérer ligne identique dans une <table>
    Par NoxWeed dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/04/2011, 16h47
  3. [MySQL] aide pour parcourir un array multi et insérer des info dans bdd
    Par kairi084 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/12/2010, 19h18
  4. [MySQL] la fonction PHP qui permet de recuperer la dernière ligne inserée dans bdd
    Par otari dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/06/2007, 20h05
  5. [MySQL] Recupérer textarea dans BDD
    Par YoM@N dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/09/2006, 04h01

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