Récupérer valeur la plus grande

Eléphanteau du PHP | 18 Messages

16 janv. 2009, 01:21

Bonjour à tous, j'utilise des numéro de clients dans une base mysql sous la forme: jjmmaa-numéro.
J'essai d'automatiser la saisie de cette façon:
$select=mysql_query("SELECT num_client FROM archive ORDER BY num_client DESC LIMIT 1");
$row=mysql_fetch_array($select);
$num_client=htmlentities($row['num_client']);

if ($num_client="")
  { $dossier = 1; }
else
  { $dossier = $num_client + 1; }

$date = date("dmY");
$nd1 = substr("$date", 0, 4); 
$nd2 = substr("$date", -2); 
$num_client = $nd1 . $nd2 .'-'. $dossier;
Mon script ne fonctione pas: je n'arrive pas à récupérer le dernier numéro de client pour ajouter 1.
Avez-vous une solution?
Merci d'avance.

ViPHP
AB
ViPHP | 5818 Messages

16 janv. 2009, 01:48

Le plus simple serait que tu fasses une colonne pour la date et une autre distincte pour le numéro du client. Ainsi tu pourrais faire facilement des recherches et manipulations sur ces deux champs.

Eléphanteau du PHP | 18 Messages

16 janv. 2009, 10:29

Merci pour la réponse, judicieuse.
En suivant ton idée je pourrais avoir un champ avec la date et un champ avec id_client . Par contre est-ce que la façon d'aller chercher la valeur la plus grande est bonne:

Code : Tout sélectionner

$select=mysql_query("SELECT num_client FROM archive ORDER BY num_client DESC LIMIT 1");
Merci encore.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 janv. 2009, 11:59

Ca peut être une solution, mais je pense qu'utiliser la fonction MAX() de ta base de données serait plus explicite et plus facile à maintenir ;) (voire même peut être plus optimisée, mais j'avoue ne jamais avoir comparé les deux solutions)
$select = "SELECT MAX(num_client) AS le_dernier FROM archive";
$result = mysql_query($select);
Mais si tu distingues ta date de ton numéro de client séquentiel, tu as également tout intérêt à passer celui-ci en AUTO INCREMENT, de façon à ce que le numéro soit attribué automatiquement lors de l'insertion d'un nouveau client.
Le principal intérêt est d'éviter d'avoir une erreur ou un numéro client en double si deux personnes exécutent ton script en même temps pour créer un nouveau client (la base retournerait le même numéro client aux deux)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 18 Messages

16 janv. 2009, 15:58

Oui, c'est vrai je n'avais pas pensé au risque d'attribution du même numéro. Je vai garder la dernière solution (date et numéro en autoncrement).
Merci pour la réponse.