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

PHP & Base de données Discussion :

problème sur la limite du nombre d'enregistrement [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut problème sur la limite du nombre d'enregistrement
    Bonjour,

    en fait j'aimerais limiter le nombre d'enregistrement dans ma base à 10000 pour exact.

    et ça fonctionne a moitié.

    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
    43
    44
    45
    46
    47
    48
     
     
    //On récupère le dernier Num
    $requeteCompteEnregistrement = mysql_query("select Num from intervenant ORDER BY Num DESC LIMIT 0,1 ");
    $nbEnregistrement = mysql_result($requeteCompteEnregistrement,0);
     
     
    echo "on va rentrer <br /> ";
     
    if($nbEnregistrement <= 9999)
    {
     if ($verif==0)
         {
     
    		$nouveauCode = 1;
    		 for($compteur=1; $compteur < $result+1; $compteur++)
    		 {
    		$requeteAjout = mysql_query("insert into intervenant(CodeEntreprise,CodeIntervenant) values('$CodeEntre',$nouveauCode)");
    		 $nouveauCode++;
     
    		 }
    		echo "dans le 2 if <br />";
         }
     else
         {
     
     
    		$nouveauCode = $resultatRecupCode+1;
     
    		for($compteur=1; $compteur < $result+1; $compteur++)
    		 {
     
    		$requeteAjout = mysql_query("insert into intervenant(CodeEntreprise,CodeIntervenant) values('$CodeEntre',$nouveauCode)");
    		 $nouveauCode++;
     
    		}
     
    		echo "dans le else </br>";
     
    }	
    }
    else
    {
    echo "on est en dehors </br> ";
    }			
    echo "nombre enregistrement : $nbEnregistrement <br />";
     
    ?>

    Le but est d'ajouter des intervenant dans ma base sachant que le nombre d'intervenant est différent selon l'entreprise. ça peut être 1000, 100, 3, ,5 etc ...

    le problème c'est que lorsque j'arrive a 9999 intervenants, le programme ne s'arrete pas.

    donc des fois j'ai 100001 intervenants 100003 etc ...

    si vous avez une idée.

    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu veux limiter le nombre d'enregistrement ... il faut compter le nombre d'enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requeteCompteEnregistrement = mysql_query("select COUNT(*) from intervenant");
    La valeur de l'index n'est pas censé refleter le nombre de lignes.

    Sinon d'ou vient ton $result ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut
    Bonjour,

    même en faisant un count (*) ça ne fonctionne pas
    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
    43
     
    $requeteCompteEnregistrement = mysql_query("select count(*) from intervenant ");
    $nbEnregistrement = mysql_result($requeteCompteEnregistrement,0);
     
    echo "$nbEnregistrement";
     
    if($nbEnregistrement < 10000)
    {
     if ($verif==0)
         {
     
    		$nouveauCode = 1;
    		 for($compteur=1; $compteur < $result+1; $compteur++)
    		 {
    		$requeteAjout = mysql_query("insert into intervenant(CodeEntreprise,CodeIntervenant) values('$CodeEntre',$nouveauCode)");
    		 $nouveauCode++;
     
    		 }
     
         }
     else
         {
     
    		$nouveauCode = $resultatRecupCode+1;
     
    		for($compteur=1; $compteur < $result+1; $compteur++)
    		 {
     
    		$requeteAjout = mysql_query("insert into intervenant(CodeEntreprise,CodeIntervenant) values('$CodeEntre',$nouveauCode)");
    		 $nouveauCode++;
     
         }
     
    	}	
     
    }
     
    else 
    {
    }
     
     
    ?>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et la réponse à la question ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut
    ah oui, vraiment désolé,

    $result c'est le nombre de salarié autorisé pour chaque entreprise

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu as déjà 999 enregistrements dans la base et qu'une entreprise à la droit à 100 enregistrements il doit se passer quoi ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut
    le programme doit s'arreter et ne pas prendre en compte la demande d'avoir 100 numero (100 salarié autorisés) pour ses salariés

  8. #8
    Membre éclairé Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Par défaut
    pourquoi ne pas faire un mysql_num_rows sur le résultat de ta requete pour voir combie nde ligne (donc d'enregistrement) elle renvoye ?

  9. #9
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut
    je l'ai fais avec mysql_result.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requeteCompteEnregistrement = mysql_query("select count(*) from intervenant ");
    $nbEnregistrement = mysql_result($requeteCompteEnregistrement,0);
    echo " nb enregistrement : $nbEnregistrement <br />";
    mais j'ai testé avec num_rows sa me renvoi 1 a chaque fois

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu dois donc enregistrer au maximum 1000 - $nbEnregistrement lignes.
    Au passage, les requêtes dans les deux conditions étant les mêmes tu n'as pas à les ecrire deux fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $requeteCompteEnregistrement = mysql_query("select count(*) from intervenant ");
    $nbEnregistrement = mysql_result($requeteCompteEnregistrement,0);
     
    $nouveauCode = ($verif==0) ? $nouveauCode = 1 : $resultatRecupCode+1;
     
    for($compteur=1; $compteur <= min(1000 - $nbEnregistrement; $result)) {
    $requeteAjout = mysql_query("insert into intervenant(CodeEntreprise,CodeIntervenant) values('$CodeEntre',$nouveauCode)");
    		 $nouveauCode++;
    }
    pourquoi ne pas faire un mysql_num_rows sur le résultat de ta requete
    Quel serait l'interêt par rapport à un COUNT() ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre éclairé Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Par défaut
    Aucun mais vu qu'il disait qu'il n'arrivait pas a faire le count....apres ce sont des habitudes de code

  12. #12
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut
    Merci, a vous deux ça fonctionne j'ai ce que je veux et j'ai utilisé num_rows plustot que de faire un count (*)

    merci encore

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'insiste mais num_rows est beaucoup moins interessant que count()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut
    tu peux m'expliquer l'avantage ? stp

  15. #15
    Membre éclairé Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Par défaut
    [MODE CULTURE PERSO = ON]

    Pourquoi ?

    [MODE CULTURE PERSO = OFF]

  16. #16
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 292
    Par défaut
    Ce qui est le plus lent, c'est de rapatrier les lignes de MySQL vers PHP. Avec COUNT, tu ne rapatries qu'une seule ligne. Avec num_rows, tu les renvoies toutes et tu les compte, c'est donc bcp moins performant.

    EDIT : sabotage, t'es grillé !

  17. #17
    Membre éclairé Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Par défaut
    Ah oui j'était dans l'optique ou de toute facon il avais besoin de rapatrier pour les afficher mais non, autant pour moi...

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Avec num_rows, tu demandes a mysql de lire toutes les lignes et après tu lui demandes de compter ce qu'il a recuperé.
    Avec count() sur une table MyIsam, mysql lit juste la valeur qu'il a déjà stocké.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Limiter le nombre d'enregistrements sur un état
    Par nicolas2603 dans le forum IHM
    Réponses: 4
    Dernier message: 06/05/2008, 12h02
  2. [CR 9.0]Comment limiter le nombre d'enregistrements sur une page
    Par popol666 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 06/11/2006, 15h27
  3. limitation du nombre d'enregistrement sur une jointure
    Par coredump dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/06/2005, 16h13
  4. Limiter le nombre d'enregistrement
    Par BXDSPORT dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/04/2004, 16h26
  5. [débutant] Limitation du nombre d'enregistrement renvoyé
    Par tmcgrady dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/11/2003, 09h41

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