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

PHP & Base de données Discussion :

Decoupage puis stockage


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut Decoupage puis stockage
    Bonjour,

    J'ai un problème assez particulier. J'arrive à faire certaines opérations mais sur certaines je suis bloqué. Je vous expose mon problème.

    J'ai une base de données contenant une colonne NOMPrenom où le nom et prénom des personnes sont de la forme :

    NOM Prénom

    Sachant que le NOM est toujours en majuscule et que le Prénom se présente toujours avec une majuscule.

    Ce que je voudrais faire, c'est : sélectionner la colonne NOMPrenom, puis effectuer un découpage de cette chaine pour toutes les lignes puis restocker le tout dans une base où le NOM et le prénom seront dans 2 colonnes distincts.

    J'arrive à sélectionner les élements de la colonne NOMPrenom et à faire un découpage du NOM et du Prénom, le problème c'est que ça me le fait uniquement que pour la première occurence pas pour les autres. Ensuite, comment puis je faire pour restocker le résultat du découpage dans 2 colonnes distincts ??

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql2 = "SELECT NOMPrenom FROM test ";
    $result = odbc_exec($cnx, $sql2);
     
    $pattern = '/^([A-Z ]*) ([a-z ]*)$/';
    while ($row = odbc_fetch_row($result)) {
    preg_match($pattern,odbc_result ($result,1),$matches);
    print_r($matches);
    }
    Je me suis arrêté là je suis bloqué . Est ce que quelqu'un aurait une idée ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par http://php.net/manual/fr/function.preg-match.php
    preg_match() retourne le nombre de fois où le masque pattern a été trouvé. Cela peut aller de 0 (pas de solution) à un 1 car preg_match() s'arrête dès qu'elle a trouvé une première solution. preg_match_all(), au contraire, va continuer jusqu'à la fin de la chaîne subject. preg_match() retourne FALSE si une erreur survient.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Salut,

    J'avais déjà essayé ta solution preg_match_all() mais ça ne marche pas. Ca s'arrête toujours à la première colonne, ça ne continue pas jusqu'à la fin de ma colonne.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    Salut,

    j'ai testé ton expression régulière et elle marchait pas chez moi.
    D'après ce que j'ai compris le champ que tu récupères (NOMPrenom) est attaché, donc comme tu as mis un espace dans l'expression régulière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '/^([A-Z ]*) ([a-z ]*)$/';
    le champ récupéré ne rentrait pas dans les solutions du preg_match.

    Ensuite pour récupérer les résultats :
    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
    <?php
    	//$sql2 = "SELECT NOMPrenom FROM test ";
    	//$result = odbc_exec($cnx, $sql2);
     
    	$pattern = '/^([A-Z ]*)([a-z ]*)$/';
    	$tab = Array(0 => "JEANRichard", 1 => "PERENoel", 2 => "ZIDANEZidedine");
    	//while ($row = odbc_fetch_row($result))
     
    	for($i=0; $i<count($tab); $i++)
    	{
    		//preg_match($pattern,odbc_result ($result,1),$matches);
    		preg_match($pattern,$tab[$i],$matches);
    		print_r($matches[1]); //=> NOMP
    		echo "--";
    		print_r($matches[2]); //=> rénom
    		echo "<br/>";
    	}
    ?>

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Salut yakiniku,

    Merci beaucoup pour ta réponse. En fait, Le nom de ma colonne s'intitule NOMPrenom et dans cette colonne j'ai la chose suivante :

    NOM Prenom

    Sachant que je peux avoir des occurences du genre nom composé du style :

    WHITE TAKER Paul
    ZIDANE Zinedine
    DESCHAMPS Didier

    etc...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    Dans ce cas, on aura :

    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
    <?php
    	//$sql2 = "SELECT NOMPrenom FROM test ";
    	//$result = odbc_exec($cnx, $sql2);
     
    	$pattern = '/^([A-Z ]*) ([A-Z]{1}[a-z ]*)$/';
    	$tab = Array(0 => "JEAN Richard", 1 => "PERE Noel", 2 => "ZIDANE Zidedine");
    	//while ($row = odbc_fetch_row($result))
     
    	for($i=0; $i<count($tab); $i++)
    	{
    		//preg_match($pattern,odbc_result ($result,1),$matches);
    		preg_match($pattern,$tab[$i],$matches);
    		print_r($matches[1]); //=> NOM
    		echo "--";
    		print_r($matches[2]); //=> Prénom
    		echo "<br/>";
    	}
    ?>

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Salut,

    Merci pour ton aide. Du coup il me reste plus qu'à adapter le tout en faisant une requete sql pour découper la chaine de caractère puis restocker dans la BDD.

Discussions similaires

  1. Stockage commande grep dans une variable puis affichage
    Par Isabella83 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 23/04/2015, 11h13
  2. Stockage d'information puis affichage
    Par guigui69 dans le forum Langage
    Réponses: 1
    Dernier message: 30/09/2009, 11h03
  3. Réponses: 4
    Dernier message: 22/04/2008, 18h29
  4. Lire ligne puis stockage dans tableau
    Par niko40 dans le forum C++
    Réponses: 9
    Dernier message: 03/04/2006, 23h01
  5. comment puis-je recupérer l'extesion du fichier?
    Par mirella dans le forum Langage
    Réponses: 7
    Dernier message: 14/08/2002, 15h56

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