begin process at 2012 02 12 06:54:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Aide & documentation

 > 

Convertir un char en nombre


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Convertir un char en nombre

mardi 17 octobre 2006 à 18:24:46 | Convertir un char en nombre

rudddy

Salut à tous,

 

dans un programme j'ai un id qui est incrémenté de la façon suivante :

id_fact varchar(10)

dans ces 10 caractères, les 4 premiers correspondent à l'année, les 4 suivants au numéro de facture de l'année et les 2 derniers correspondent à FA (facture) ou AV(avoir)

 

J'ai le problème suiavnt :

 

quand je crée une facture, je veux incrémenter le id.

disons que le dernier id est 20060233FA, le suivant devrait être 20060234FA

Le problème est que quand je découpe la string et que j'incrémente, je me retrouve avec 2006234FA, le 0 ayant sauté !!!

 

 

voici mon code :


$id_fact_prev=... // récupération de mon dernier id ds la BD
 $annee_prev=substr($id_fact_prev,0,4);
 $num_prev=substr($id_fact_prev,4,4);
 
 $annee_encours=Date('Y');
 if($annee_encours==$annee_prev) {
  $num_next=$num_prev++;
  $id_fact_next=$annee_encours.$num_next;
 }
 else{
  $id_fact_next=$annee_encours.'0001';
 }

 

Merci à tous

mardi 17 octobre 2006 à 18:44:46 | Re : Convertir un char en nombre

FhX

huuuu j'ai peur ^^

Ta requète déja doit être plus optimisé que ca :
j'appèle ton champ "ID" :

<?php

$sql = 'SELECT CONVERT(SUBSTR(id, 0,4), UNSIGNED) as annee, CONVERT(SUBSTR(id,4,4), UNSIGNED) as id_facture, SUBSTR(id,8,2) as lettre FROM ta_table';
$query = mysql_query($sql);
$data = mysql_fetch_array($query);

$annee = date('Y');

$output = ( $annee === (int) $data['annee'] ) ? (int) $data['annee'].(int) $data['id_facture']++ : $annee.'0001';

echo $output;

// Ex:
// ID de sortie de ta requète : 20041234AF
// $data['annee'] == 2004; $data['id_facture'] == 1234;
// Si date('Y') == 2004
//      $output = 2004 . (1234+1) = 20041235;
// Sinon
//      $output = date('Y').'0001';
// FinSi

// Pas oublier de rajouter tes lettres :)
$finish = $ouput.$data['lettre'];

?>

Et voila :)

mardi 17 octobre 2006 à 22:13:14 | Re : Convertir un char en nombre

rudddy

Merci de ta réponse

mais quand tu écrit :
$output = 2004.(1234.1) = 20041235;

C'est bien si c'est 1234 mais is tu as 20040001, si tu fais 2004(0001.1) tu auras : 20042 et pas 20040002 !!!!

Donc la question reste posée.
mardi 17 octobre 2006 à 22:22:11 | Re : Convertir un char en nombre

rudddy

Réponse acceptée !
Bonsoir tout simplement j'ai fait :

$id_fact_prev=... // récupération de mon dernier id ds la BD
   
$annee_prev=substr($id_fact_prev,0,4
);
   
$num_prev=substr($id_fact_prev,4,4
);
   
   
$annee_encours=Date('Y'
);
   if(
$annee_encours==$annee_prev
) {
    
$num_next=$num_prev
+1;
 
$num_next=sprintf("%04d",$num_next
);
    
$id_fact_next=$annee_encours.$num_next
;
   }
   else{
    
$id_fact_next=$annee_encours.'0001'
;
   } 


Et ca marche
mercredi 18 octobre 2006 à 18:28:34 | Re : Convertir un char en nombre

FhX

ah ouais j'ai oublié le sprintf()...
au temps pour moi.


Cette discussion est classée dans : annee, id, num, fact, prev


Répondre à ce message

Sujets en rapport avec ce message

Jointure entre 2 tables mysql [ par dj-smoye ] Bonjour tlm,   Voilà j'ai un soucis avec la requête ci-dessous: SELECT    D1.id_users  AS User1_Id,    D1.num_obj   AS User1_ObjectId,   D2.id_u PHP : problèmes d'affichage en utilisant plusieurs requetes [ par vir76 ] Voici mon problème :Je dispose de 3 requêtes :la première me permet de visualiser les dotations pour chaque sousdirection$rq="SELECT T_ANNEE.ANNEE_ANN affichage d'une requête comportant de deux autres requêtes [ par vir76 ] Je dispose de 3 requêtes :la 1ère :$requête fournitures="SELECT T_ANNEE.ANNEE_ANNEE, T_SOUSDIRECTION.ID_SOUSDIRECTION, T_SOUSDIRECTION.SOUSDIRECTION_N problemme insert into urgent [ par nair17 ] bonjour,voila je dois realiser un site pour une entreprise mais quand je veux ajouter une question il m'envoie "erreur d'écriture" sa fait plusieur he Mysql_num_rows() [ par monoski ] Coucou tout le monde, bon je rencontre un petit problème qui m'énerve sérieusement : [code=php] $evolution = mysql_query("SELECT C_carac_id FROM visualisation d'une requête avec calcul [ par vir76 ] Salut tout le monde, voici mon problème, j'espère que mes explications vont être claires.Je dois afficher un tableau regroupant un nom de sousdirectio Encore un mystère de l'Ouest [ par mikito ] Bon mon pb est simple : voici ma requete: "SELECT * FROM `produit`, `produittempo` WHERE produit.id != produittempo.idd;"Explication du probleme :j'ai PROBLEME VARIABLE... [ par jeuneprog ] Bonjour à tous,J'ai un probleme tout betes mais j'espere que vous pourriez m'eclairer car sa fait trop longtemps que je cherche et là je commence a et AFFICHER UNE ID SVP :'( [ par jeuneprog ] Bonjour,Comment pourrais-je faire apparaitre l'id d'un message inserer dans mon forum avec une bdd svp?Merci à tous... nombre d'enregistrement a extraire [ par westsider ] bonjour,est ce ke je px extraire un nb precis d'enregistrement??par exemple les 5 derniers et les 5 premiers, sachant que les id sont pas en ordre, ca


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,404 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales