Aller au contenu

probleme incrementation php


Sujets conseillés

Posté

Bonjour à tous,

J'ai un problème d'incrementation php lors du traitement d'un formulaire, voici la fonction concernée :

if(isset($_POST['envoi'])) 
{
$sqlMax = "SELECT MAX(num_commande) FROM `matable` WHERE num_commande LIKE 'LEB01%' LIMIT 1";
$reqMax = mysql_query($sqlMax);
$maxNumCommande = 'LEB01000';
if($reqMax && mysql_num_rows($reqMax)>0)
$maxNumCommande = 'LEB01'.sprintf("%04s",(mysql_result($reqMax,0,'num_commande')+1));
$num_commande = $maxNumCommande;

Après j'enregistre $num_commande, qui est bien inséré dans la base mais à chaque enregistrement j'ai le même numéro.

Qu'est-ce qui ne va pas dans ma fonction?

Merci pr votre aide!

Posté

Plein de choses bizarres dans tout ça...

1. SELECT MAX(...) FROM ... LIMIT 1 c'est un peu redondant. Soit tu enlèves le LIMIT soit tu fais un SELECT num_commande ... ORDER BY num_commande DESC LIMIT 1.

2. tu essaies d'ajouter 1 à une chaîne. Ca donne évidemment un résultat bizarre, la chaîne est considérée comme valant 0, donc le résultat est toujours 1. Il faut que tu rajoutes un petit substr là-dedans

3. sprintf("%04s",nombre) c'est pas très net. Tu veux probablement dire sprintf("%04d",nombre). Et tu dois bien avoir 4 chiffres pour cette partie-là? La valeur "par défaut" que tu as juste avant n'en utilise que 3...

Jacques.

Posté

C'est en essayant qu'on apprend :-)

Mais bon... Solution pure SQL:

SELECT CONCAT('LEB01',LPAD(SUBSTR(MAX(num_commande),6)+1,4,'0')) FROM matable WHERE num_commande LIKE 'LEB01%'

Jacques.

Posté (modifié)

Ca ne marche pas, ca me retourne tout le temps 1. :-(

J'ai cherché mais pour ca je bloque, au début je fasais $num_commande = mysql_insert_id();

Et après pour l'envoi de mail je prenais le dernier enregistrement avec l'id mais en cas d'utilisations simultanées, ca aurait envoyé le mauvais mail à la mauvaise personne.

C'est pour ca que pour chaque enregistrement je dois avoir un numéro unique que je peux récupérer par la suite pour utiliser dans la requête sql avec un WHERE num_commande = $num_commande;

Modifié par william_dallas

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...