Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2007, 16h09   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut [SQL] Séparer Nom Prénom placés dans une cellule unique

Bonjour,

Quelqu'un a une fonction qui permet de séparer dans une collonne MySQL un NOM et un Prénom ?

Je recherche la même chose ce expliquez sous ce post mais en PHP. (http://www.developpez.net/forums/sho...03&postcount=8)

Merci d'avance

Arnaud
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h14   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je ne vois pas de fonction spécifiques pour faire ca, mais tu peux choisir un caractère spécial pour cette séparation comme l'* ou le / qui n'existent pas dans un nom ou un prénom (enfin je ne crois pas ).
Et lors de l'insertion tu fais une concaténation a la lecture tu utilises split!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 18h31   #3
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
moué non, je ne peux pas rajouter de | ou / entre les nom et prénom car les données me sont impossé sous cette forme.

Dans le lien donné, la macro fonctionne parfaitement, voila pourquoi j'aurai bien aimé trouvé la même chose en PHP...

Merci encore pour ton aide !
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2007, 19h35   #4
Invité de passage
 
Inscription : décembre 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 11
Points : 3
Points : 3
salut! si j'ai bien compris tu veux séparer le nom et le prénom stockés dans une colone sql
tu peux tout simplement faire un split de l'espace entre le nom et le prenom

$liste=split(' ',$ta_colone_NOM_PRENOM);
$liste[0] contiendra le nom,
$liste[1] contiendra le prénom.

Citation:
Envoyé par arnaudperfect
moué non, je ne peux pas rajouter de | ou / entre les nom et prénom car les données me sont impossé sous cette forme.

Dans le lien donné, la macro fonctionne parfaitement, voila pourquoi j'aurai bien aimé trouvé la même chose en PHP...

Merci encore pour ton aide !
dimitri1233 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2007, 11h59   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
C'est plus un travail pour les expressions régulières. Voilà pour l'idée :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$noms = array(
    'DUPONT DUPOND Charles Henri',
    'DUPONT DUPOND Charles-Henri',
    'DUPONT-DUPOND Charles-Henri',
    'PIERROT Jean-Jaques',
    'NOËL Robet',
    'NOËL BAPTISTE Pierre',
    'NOËL-BAPTISTE Pierre',
);
 
function extraire_nom_prenom($string) {
    if (preg_match("#((?:\b[[:upper:]'\s-]+\b)+)\s+((?:\b[[:upper:]][[:lower:]'\s-]+\b)+)#", $string, $m)) {
        return array('nom' => $m[1], 'prenom' => $m[2]);
    }
    return FALSE;
}
 
header('Content-type: text/plain');
foreach ($noms as $n) {
    $res = extraire_nom_prenom($n);
    echo ($res ? print_r($res, TRUE) : 'KO') . PHP_EOL;
}
?>
Résultat :
Citation:
Array
(
[nom] => DUPONT DUPOND
[prenom] => Charles Henri
)

Array
(
[nom] => DUPONT DUPOND
[prenom] => Charles-Henri
)

Array
(
[nom] => DUPONT-DUPOND
[prenom] => Charles-Henri
)

Array
(
[nom] => PIERROT
[prenom] => Jean-Jaques
)

Array
(
[nom] => NOËL
[prenom] => Robet
)

Array
(
[nom] => NOËL BAPTISTE
[prenom] => Pierre
)

Array
(
[nom] => NOËL-BAPTISTE
[prenom] => Pierre
)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2007, 12h28   #6
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
la j'avoue julp, tres fort...
ce serais déplacé de te demander de nous expliquer tout ca ? a oui encore une fois, j'aime beaucoup, compact et complet, tres php5 (enfin je crois), mérite de s'y attarder.
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 13h16   #7
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
oui pas mal ! ca devrait être ajouter au source php... ezt avec une petite explication ca serai encore mieux... merci encore !
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 15h56   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par ascito
a oui encore une fois, j'aime beaucoup, compact et complet, tres php5 (enfin je crois), mérite de s'y attarder.
Ce n'est en rien spécifique à PHP 5. L'extension PCRE (fonctions preg_*) sont disponibles en PHP 4 comme en PHP 5.

Citation:
Envoyé par arnaudperfect
ca devrait être ajouter au source php... ezt avec une petite explication ca serai encore mieux...
Je ne ferais pas mieux que le tutoriel existant : Initiation aux expressions régulières en PHP et je n'ai fait que suivre grosso-modo l'idée de base (cf le lien donné en début de sujet).

C'est simple en fait on cherche deux parties dans la chaîne :
  1. Les noms, écrits entièrement en majuscules, partie : ((?:\b[[:upper:]'\s-]+\b)+)
    \b : délimiteur de mots (représente un changement d'état entre un caractère qu'on ne trouve pas dans un mot : un signe de ponctuation, un blanc, ... et l'inverse : tout ce qui est une lettre par exemple).
    [[:upper:]'\s-] : constitués de lettres majuscules ([:upper:]), d'apostrophes ('), d'espaces (\s) et de tirets (-)
    Le premier + indique qu'un nom est constitué d'au moins l'un des caractères précédents
    Le deuxième + dénote le fait que le nom peut être constitué de plusieurs mots en majuscules (au moins un).
  2. Les prénoms, commençant par une lettre majuscule (on peut rendre ce critère facultatif en ajoutant un ? derrière le deuxième [[:upper:]]) puis entièrement en minuscules : ((?:\b[[:upper:]][[:lower:]'\s-]+\b)+)
    Tout est strictement identique à la partie correspondant aux noms hormis le fait que [[:upper:]] dit que le prénom doit commencer par une majuscule et que [[:lower:]'\s-] fait en sorte que le restant du prénom soit constitué de minuscules, d'apostrophes, de blancs ou de tirets.
Pourquoi avoir autorisé les blancs (\s) dans le nom ou le prénom ? Tout simplement pour que les noms (ou prénoms) composés puissent être regroupés dans une seule et même capture.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h03.


 
 
 
 
Partenaires

Hébergement Web