Problème pour creer code commande

Fermé
delavega470 Messages postés 298 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 - 9 août 2017 à 17:33
 Zé - 6 sept. 2017 à 15:36
Bonjour, je veux creer un code commande exemple com_annee_mois-001 ,com_annee_mois-002. le souci c'est que apres com_annee_mois-001 celui qui vient me donne com_annee_mois-00 ou lieu de com_annee_mois-002.
je peux avoir un coup de main svp ?
 <?php

function reference ($ref)
{ 
include 'codes/bdcon.php';
 $req = 'SELECT code_com from commande where id_cli='.$_SESSION['id_cli'].' ';
 $envoie = $bd->query($req);
 $ref = $envoie->fetch();
if($ref=="")
{
$ref='COM'.date('ym').'-'.'001';
}
else
{
$an1=substr($ref,2,4);
$num=substr($ref,7,3);
$an2=date('ym');
if($an1==$an2)
{
$num++;
}
if($num<10)
{
$num='00'.$num;
}

elseif($num<100)
{
$num='0'.$num;
}
$ref='COM'.$an2.'-'.$num;

}
return $ref;
}
?>
A voir également:

1 réponse

jordane45 Messages postés 36849 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 janvier 2023 4 462
9 août 2017 à 17:56
Bonjour,


Rien qu'en faisant des ECHO dans ton code.. tu aurais pu trouver le souci par toi même ...
    echo "<br>".$an1;
    echo "<br>".$an2;
    echo "<br>".$num;


Quoi qu'il en soit.. voici ton code corrigé et amélioré !
$id_cli = !empty($_SESSION['id_cli']) ? $_SESSION['id_cli'] : NULL;

function get_code_com_by_id_cli($id){
 require_once 'codes/bdcon.php';
 $req = "SELECT code_com from commande where id_cli='$id_cli'";
 // TOUJOURS mais alors.. TOUJOURS ... mettre tes requêtes (en PDO) dans des blocs TRY/CATCH !!!!!
 try{
   $envoie = $bd->query($req);
   $result = $envoie->fetch();
  }catch(Exception $e){
   echo "<br>Erreur ! " . $e->getMessage();
  }
 return $result; 
}

function reference ($id_cli){ 
  
  $ref = get_code_com_by_id_cli($id);
  $dateYM = date('ym');
  if($ref =="") {
    $ref='COM'.$dateYM.'-'.'001';
  } else{
    $an1=substr($ref,3,4);
    $num=substr($ref,8,3);
    $an2=$dateYM;
     
    if($an1==$an2) {
      $num++;
    }
    if($num<10)  {
       $num='00'.$num;
    } elseif($num<100) {
      $num='0'.$num;
    }
    $ref='COM'.$an2.'-'.$num;
  }
 return $ref;
}

echo "<br><hr>Reference = ".reference(1);


NB : On n'utilise pas les variables de SESSION, POST , GET dans des fonctions ! On les récupère PROPREMENT AVANT .. puis on les passe en paramètres de ces fonctions.

NB² : Tu envoyais en paramètre de ta fonction une variable $ref... alors que tu allais ensuite la récupérer via une requête... attention à te relire pour ne pas faire n'importe quoi.



0
Pour le compteur, utiliser http://php.net/manual/fr/function.str-pad.php serait judicieux...
0