Bonjour,
en suivant les cours sur ce site, je me suis fait le bout de code suivant:

    $query = $DB->query('SELECT * FROM num_fact_client ORDER BY num_fact ASC');
    $query->setFetchMode(PDO::FETCH_OBJ);
    $factureClientNumero = array();
    foreach($query as $row) {
    $factureClientNumero[] = array('id_num' => $row->id_num, 'num_fact' => $row->num_fact, 'id_facture' => $row->id_facture, 'num_annee' => $row->num_annee, 'num_mois' => $row->num_mois);
    }

    $moisEnCours = date('m');
    $anneeEnCours = date('y');
    $numSuivant = $row->num_fact+1; 

Le but, chercher le dernier numéro de facture incéré dans la bdd. c'est ma variable: num_fact

Prendre ce num_fact, lui ajouter 1 et elle devient:
$numSuivant

Tout se passait bien jusqu'à 100. Pourquoi le +1 ne veut pas continuer au-delà de 100?

Merci pour votre aide.

Hexa

8 réponses


Huggy
Réponse acceptée

Ton champ est un varchar et tu le tries par ordre alphabétique, le plus grand c'est celui qui commence par 9 -> 99
du coup le suivant est toujours 100
dans ta requête, tu peux faire

...ORDER BY CAST (num_fact AS SIGNED) ASC

Le mieux est de passer le champ en Integer

As tu contrôlé la taille de ton champ ?

Hexa
Auteur

Oui, il est à 55 comme les autres. Bonne idée ta question! Pour info, le 100 c'est bien inscrit dans la bdd, donc, j'ai au moins 3 digits qui passent.

Hexa

Je ne pense pas que cela soit ton problème mais habitué au java cela me choque d'utiliser le $row en dehors de la boucle
En principe il y a Des soucis de portée. Php etant assez permitif cela doit passer.

Hexa
Auteur

C'est pas la première fois que j'utilise un $row en dehors d'une boucle. ça fonctionne bien alors je ne me pose pas plus de question que ça...
Mais comme tu le dis, je pense également que mon souci ne vient pas de là!
J'en suis donc toujours au même point. La dernière valeur est 100 et impossible de faire 100+1

Que puis-je faire?

Bonsoir,

Avez-vous essayer de mettre un numéro supérieur à 100 manuellement dans phpmyadmin ?

Hexa
Auteur

Oui Carouge, malgré avoir entré 101, 102 puis 103 à la main, je reste tout de même à 100 via sql.

Huggy, voilà une chose que je ne connais pas. Je vais essayer et te tiens au courant.
Merci à vous deux.

Hexa
Auteur

Huggy, merci beaucoup pour ton aide. J'ai mis mon champs en int 5 et tout est rentré dans l'odre! Par contre, la modif de requête sql que tu proposes ne fonctionne pas dans mon script.
Merci!
Hexa