IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Blocage à 2147483647


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut Blocage à 2147483647
    Bonjour à tous !!!!
    j'ai un petit soucis et je n'arrive pas à trouver la réponse ...
    voila voila dans mon projet je dois faire un menu regroupant plusieurs sous niveau de catégorie ...(niveau categorie + 5 sous niveau ascendant)
    Pour faciliter ensuite son affichage (puis par la suite l affichage du contenu des catégories) j'ai décidé de mettre dans ma table mysql ce systeme d'identifiant
    id catégorie à 2 chiffres (ex 45)
    sous categorie 4 chiffres (4510)
    sous-sous categorie 6 chiffres (451015)
    sous-sous-sous categorie 8 chiffres (45101520)
    sous-sous-sous-sous categorie 10 chiffres (4510152030)
    sous-sous-sous-sous-sous categorie 12 chiffres (451015203035)

    Je sais on si perd !!!!!
    j 'en viens donc à mon soucis quand j'essaye de faire une comparaison avec mysql ça marche jusqu'a
    2147483647 !!!!!!!!!!!!!!!!!
    puis ça bloque !!!!
    j'avais eu au début de mon projet ce soucis , mais j'ai pu le contourner en modifiant dans ma table le int de mon identifiant en varchar ...
    Et comme vous le devinez .. je ne sais désormais plus comment faire
    j'espere que vous pourrez m'aiguiller dans mon ignorance !!!! Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 408
    Points : 15 777
    Points
    15 777
    Par défaut
    tu trouveras une méthode de stockage d'une arborescence très intéressante là :
    http://sqlpro.developpez.com/cours/arborescence/

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Comme indiqué dans le manuel de la fonction intval :
    http://www.php.net/manual/fr/function.intval.php

    2147483647 est l'entier max pour les systèmes 32bits

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Merci pour ses infos.
    Je débute en développement. On m'avait parlé récemment de cette représentation(utilisé notamment pour les forums ... ), mais malheureusement trop tard car j'avais déja bien commencé le projet. Aujourd'hui il l'est plus encore et je me retrouve légèrement en galère puisqu'en modifiant la "chose" je risque de perdre un temps de dingue !!!
    Savait vous si il existe une possibilité de résoudre mon soucis en interne sur phpmyadmin, ou en rajoutant une extension, ou des anotations particulières ?
    Quoi qu'il en soit , merci de m'avoir répondu !!!!
    à bientôt j'espere !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Cliquer sur la table, cliquer sur l'onglet "structure" en haut, pour la colonne à changer cliquer sur le petit crayon à droite, et changer le type en varchar

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    j'ai essayé en varchar puis en bigint mais malheureusement cela me retourne la même erreur !!!
    je n'ai qu'une chose à dire saperlipopette !!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Et en float ? et en double ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    j'essaye et je te dis !!!!
    merci

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Pareil même soucis !!! il bloque sa recherche au 2147483647 et me retourne qu'il y a rien tout en faisant une erreur sql (unable to jump to row 0)

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Heu t'es sur d'avoir modifié la bonne colonne ??

    Limite des int:
    (2^(32-1))-1 = 2147483647
    Limite des bigint:
    (2^(64-1))-1 = 9223372036854775807
    Limite des float:
    (2^(128-1))-1= 3,4028e+38
    Limite des double:
    (2^(1024-1))-1=1,797e+308

    Là ça vient vraiment de toi, il ne devrait y avoir de problèmes ni avec bigint, ni avec float, ni avec double.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Je sais c'est bizarre au vu des limites des bigint ... normalement il n ya pas d'erreur dans mon code puisque c'est quelque chose de redondant(je l'utilise la fonction 4 fois au dessus et ça marche puis à la cinquieme sa bloque sur ce chiffre)
    voici un bout de ce code en sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query('SELECT id_categorie FROM categorie WHERE id_categorie > 99999999 AND id_categorie< 10000000000 AND id_categorie LIKE "'.$variable.__.'"')
    après je fais un mysql num_rows puis dans une boucle un result ...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     LIKE "'.$variable.__.'"')

    C'est quoi? Une constante qui s'appelle __ ?

    Pourrions nous avoir un peu plus de code ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Le code précédent fait parti d'une fonction dans ma classe BDD (j'essaye de développer en objet) et cette variable n'est pas une constante,elle représente en gros la categorie mére , elle provient de mon controleur (je sais c'est le bordel !!) quand au 2 tiret c'est recupérer les catégories filles (les 2 tirets équivalents au like "'.$variable.'%")

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    voici un peu plus de code:
    voici une partie de mon controleur foireux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php
    ...
    foreach($tabc as $l => $valueC )
                   {
                       $nombreC=intval($valueC);
                       $retour_categorie.='<div id="menuC'.$nombreC.'" class="sousmenuC" onmouseover="afficheMenu(this,'.$valeurC.')">';
                       $identiteCategorieC=$categorie->recuperationIdentiteCategorieC($nombreC);
                       $retour_categorie.='<a href="index.php?module=boutique&amp;action=categorie_recherche&amp;number='.$nombreC.'&amp;page=1">'.$identiteCategorieC.'</a>';
                       $retour_categorie.='</div>';
                       $retour_categorie.='<div id="sousmenuC'.$nombreC.'" style="display:none" onmouseout="affiche(this,'.$valeurC.')">';
                       $tabd=$categorie->recuperationSousCategorieD($nombreC);
                       $valeurD=count($tabd);
     
                       foreach($tabd as $m => $valueD )
                       {
                           $nombreD=intval($valueD);
                           $retour_categorie.='<div id="menuC'.$nombreD.'" class="sousmenuC" onmouseover="afficheMenu(this,'.$valeurD.')">';
                           $identiteCategorieD=$categorie->recuperationIdentiteCategorieD($nombreD);
                           $retour_categorie.='<a href="index.php?module=boutique&amp;action=categorie_recherche&amp;number='.$nombreD.'&amp;page=1">'.$identiteCategorieD.'</a>';
                           $retour_categorie.='</div>';
                           $retour_categorie.='<div id="sousmenuC'.$nombreD.'" style="display:none" onmouseout="affiche(this,'.$valeurD.')">';
                           $tabe=$categorie->recuperationSousCategorieE($nombreD);
                           $valeurE=count($tabe);
     
                           foreach($tabe as $n => $valueE )
                           {
                               $nombreE=intval($valueE);
                               $retour_categorie.='<div class="sousmenuC">';
                               $identiteCategorieE=$categorie->recuperationIdentiteCategorieE($nombreE);
                               $retour_categorie.='<a href="index.php?module=boutique&amp;action=categorie_recherche&amp;number='.$nombreE.'&amp;page=1">'.$identiteCategorieE.'</a>';
                               $retour_categorie.='</div>';
                           }
                           $retour_categorie.='</div>';
                       }
                       $retour_categorie.='</div>';
                   }
                   $retour_categorie.='</div>';
     
               }
    ...
    ?>
    et ça les fonctions du modèles en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public function recuperationSousCategorieD($rscd)
        {
           $recuperation=mysql_query("SELECT id_categorie FROM categorie_article WHERE id_categorie > 99999999 AND id_categorie < 10000000000 AND id_categorie LIKE '".$rscd.__."'") or die("Vous etes victime d'une erreur sql au niveau de l'identification du mot de passe: ".mysql_error());
           $nb = mysql_num_rows($recuperation);
           $tableau=array();
           for($i=0 ; $i < $nb ; $i++)
           {
               $beta= mysql_result($recuperation,$i);
               $tableau[$i]=$beta;
           }
           return $tableau;
        }
    public function recuperationIdentiteCategorieD($idscd)
        {
     
            $identite=mysql_query('SELECT sous_categorie4 FROM categorie_article WHERE id_categorie="'.$idscd.'"');
            $idend=mysql_result($identite,0);
            return $idend;
        }
    En fait mon menu categories comprend 5 sous niveaux
    tout est imbrique dans des boucles ...
    bonne chance pour essayer de comprendre

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    La nuit porte conseil !!!!!!!!!!!!!!!!!!!

    le soucis venait d'une part de la colonne ID qu'il fallait mettre en double , float, ...
    Mais aussi de son application dans le prog ...ne pas utiliser un intval() quand on veut manier un grand chiffre !!!!!!!!!!

    Merci à tous et désolé pour ce dérangement !!!!!!!!!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Blocage Machine Complet Mandrake 9.2
    Par DaiKo dans le forum Administration système
    Réponses: 8
    Dernier message: 04/03/2004, 08h19
  2. [WIN2000][JAVA]blocage de l'application
    Par narmataru dans le forum InterBase
    Réponses: 9
    Dernier message: 09/12/2003, 13h07
  3. [CVS] "blocage" de ressource ?
    Par xa1 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/10/2003, 16h26
  4. Blocage à 60 images par seconde
    Par houssa dans le forum OpenGL
    Réponses: 5
    Dernier message: 24/06/2003, 08h52
  5. [Kylix] Blocage Kylix 3
    Par DevX dans le forum EDI
    Réponses: 2
    Dernier message: 13/11/2002, 20h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo