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 :

Développement de fonction


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut Développement de fonction
    Bonjour,

    Je voudrais bien formater une suite de 11 chiffres issus d'une BDD come ceci 123456-123-12.

    J'ai essayé d'écrire une fonction en me basant sur une fonction existante de mon formulaire mais ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function nissFR($niss) {
       list($aaaaaa,$bbb,$cc)=explode("-",$niss);
       if(is_numeric($aaaaaa) && is_numeric($bbb) && is_numeric($cc)) {
       return "$aaaaaa/$bbb/$cc";
       }
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function nissFR($niss){
    return (implode('/',array_reverse (explode('-',$niss))));
    }

  3. #3
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    A la lecture du problème,
    j'ai pensé à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $string='123456-123-12';
    if (preg_match('/^[0-9]{6}-[0-9]{3}-[0-9]{2}$/',$string)) {
    	$string = str_replace('-','/',$string);
    	echo $string;
    } else {
    	echo "Le format de $string est incorrect.";
    }
    Mais, est-ce que j'ai bien compris ton souci ?
    Fred

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function nissFR($niss){
    return (implode('/',array_reverse (explode('-',$niss))));
    }
    Ca ne marche pas

    Pour info je récupère la chaîne à formater dans un tableau :

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce serait sans doute une bonne idée de préciser le format de départ et le format d'arrivée. Parce que là...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Le format de départ est une chaîne de 11 caractères (uniquement des chiffres) et le format de sortie doit être xxxxxx-xxx-xx.

  7. #7
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Citation Envoyé par Zarvox Voir le message
    Le format de départ est une chaîne de 11 caractères (uniquement des chiffres) et le format de sortie doit être xxxxxx-xxx-xx.
    Alors peut-être que cela fera l'affaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $string='12345612312';
    if (preg_match('/^[0-9]{11}$/',$string)) {
    	$string = preg_replace('/([0-9]{6})([0-9]{3})([0-9]{2})/','$1-$2-$3',$string);
    	echo $string;
    } else {
    	echo "Le format de $string est incorrect.";
    }
    Fred

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    J'utilise cette fonction pour afficher la date retournée par MySQL au format français.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function dateFR($daten) {
        list($yyyy,$mm,$dd)=explode("-",$daten);
        if (is_numeric($yyyy) && is_numeric($mm) && is_numeric($dd)) {
        return "$dd/$mm/$yyyy";
        }
    }
    Ne serait-il pas possible pour l'adapter à ce que je veux faire.

    A savoir : Je récupére la valeur de $row['niss'] dans un tableau crée par mysql_array_assoc.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par micetf Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $string='12345612312';
    if (preg_match('/^[0-9]{11}$/',$string)) {
    	$string = preg_replace('/([0-9]{6})([0-9]{3})([0-9]{2})/','$1-$2-$3',$string);
    	echo $string;
    } else {
    	echo "Le format de $string est incorrect.";
    }
    Ce code fonctionne mais je ne peux l'adapter à mon code.

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le dernier post de micetf fait exactement ce que tu nous as demandé : ça prend une chaine de 11 chiffres type 11111122233 et ça la transforme en 3blocs type 111111-222-33.

    Donc si tu ne peux pas l'appliquer, deux possibilités : soit ce que tu nous as demandé n'est pas ce dont tu as besoin (auquel cas, il faut que tu réexpliques), soit tu ne l'intègres pas au bon endroit (auquel cas il faudrait nous donner le code dans lequel tu veux le mettre)

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par Celira Voir le message
    Le dernier post de micetf fait exactement ce que tu nous as demandé : ça prend une chaine de 11 chiffres type 11111122233 et ça la transforme en 3blocs type 111111-222-33.
    Milles excuses monsieur le modérateur.

    Effectivement son code fonctionnait et je lui ai dit mais j'avais des soucis d'intégration que j'ai en partie résolu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function nissF($niss) {
       if (preg_match('/^[0-9]{11}$/',$niss)) {
       $niss = preg_replace('/([0-9]{6})([0-9]{3})([0-9]{2})/','$1-$2-$3',$niss);
       	echo $niss;
    	} else {
           		echo "Le format de $string est incorrect.";
    	}
    }
    Le soucis c'est que l'appel à cette fonction :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
                  <?php  include("lib/connexion.inc.php");
     
                  // Déclaration des variables
     
                   $nom = addslashes($_GET['nom']);
                   $prenom = $_GET['prenom'];
     
                  // Requête et affichage
     
                   if(isset($nom, $prenom)) {
                   $result = mysql_query("SELECT *, ROUND(DATEDIFF(CURDATE(),`datenaiss`)/365) AS 'age' FROM fiche AS f
                                                       INNER JOIN datpro AS d ON f.`num_registre` = d.`num_registre`
                                                       WHERE f.`nom` LIKE '%$nom%' AND f.`prenom` LIKE '%$prenom%'");
     
                   echo "<table border='1' cellpadding='0' cellspacing='0' width='600'>";               
                   while ( $row = mysql_fetch_assoc($result)){
                   echo "<tr>
                            	<td align='right' width='155'>Numéro :</td>
                            	<td width='130'><input size='8' name='num' value='".$row['num_registre']."'></td>
                            	<td align='right' width='70'>Entreprise :</td>
                   				<td width='235'><input size='18' name='entreprise' value='".$row['entreprise']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Nom :</td>
                   				<td width='130'><input size='12' name='nom' value='".htmlentities($row['nom'], ENT_QUOTES)."''></td>
                   				<td align='right' width='70'>Prénom :</td>
                   				<td width='235'><input size='12' name='prenom' value='".$row['prenom']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Rue :</td>
                   				<td colspan='3'><input size='30' name='prenom' value='".$row['rue']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Code postal :</td>
                   				<td width='130'><input size='6' name='cp' value='".$row['code_postal']."'></td>
                   				<td align='right' width='70'>Ville :</td>
                   				<td width='235'><input size='12' name='prenom' value='".$row['ville']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Date de naissance :</td>
                   				<td width='130'><input size='8' name='daten' value='".dateFR($row['datenaiss'])."'></td>
                   				<td align='right' width='70'>Age :</td>
                   				<td width='235'><input size='2' name='prenom' value='".$row['age']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Lieu de naissance :</td>
                   				<td width='130'><input size='10' name='villen' value='".$row['villenaiss']."'></td>
                   				<td align='right' width='70'>NISS :</td>
                   				<td width='235'><input size='10' name='niss' value='".nissF($row['niss'])."'></td>
                   			</tr>
                   			<tr>
                   				<td rowspan='2' align='right' >Téléphone :</td>
                   				<td><input size='9' name='tel' value='".telbe($row['tel'])."'></td>
                   				<td rowspan='2' align='right'>GSM :</td>
                   				<td><input size='10' name='tel2' value='".telbe($row['gsm'])."'></td>
                   			</tr>
                   			<tr>
                   				<td><input size='9' name='gsm' value='".$row['tel2']."'></td>
                   				<td><input size='10' name='gsm2' value='".$row['gsm2']."'></td>
                   			</tr>
                   			<tr>
                   				<td align='right' width='155'>Date d'entrée :</td>
                   				<td width='130'><input size='8' name='entre' value='".dateFR($row['date_entree'])."'></td>
                   				<td align='right' width='70'>Date de sortie :</td>
                   				<td width='235'><input size='8' name='sortie' value='".dateFR($row['date_sortie'])."'></td>               				
                   			<tr>
                   				<td colspan='4' height='10' align='center'>-------------------------------------------------</td>
                   			</tr>";
                   } 
                   echo "</table>";
                   }
     
                  // Déconnexion de la base de données
     
                   mysql_close();
                  ?>
    Formate bien la chaîne niss mais ne l'affiche pas au bon endroit, elle apparaît avant le tableau d'affichage du résultat.

    EDIT : soucis résolu en modifiant la fonction comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function nissF($niss) {
       if (preg_match('/^[0-9]{11}$/',$niss)) {
       $niss = preg_replace('/([0-9]{6})([0-9]{3})([0-9]{2})/','$1-$2-$3',$niss);
       	return "$niss";
    	} else {
           		echo "Le format de $string est incorrect.";
    	}
    }

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

Discussions similaires

  1. [Drupal] Développement module, fonction non fonctionnelle
    Par Holzhammer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 31/12/2014, 15h57
  2. Développer la fonction getenv()
    Par didiworld dans le forum C
    Réponses: 5
    Dernier message: 19/07/2012, 12h01
  3. Développer des fonctions scalaires (UDF) avec PLpgSQL
    Par SQLpro dans le forum Débuter
    Réponses: 1
    Dernier message: 20/06/2011, 10h09
  4. Développer des fonctions supplémentaires
    Par lvr dans le forum Visio
    Réponses: 6
    Dernier message: 06/08/2007, 20h01

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