Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 28/01/2010, 16h51   #1
Membre du Club
 
Avatar de florianjoy54
 
Date d'inscription: octobre 2009
Messages: 83
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 :
 
 
//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
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/01/2010, 19h46   #2
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 090
Par défaut

Si tu veux limiter le nombre d'enregistrement ... il faut compter le nombre d'enregistrement :
Code :
$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 ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 09h29   #3
Membre du Club
 
Avatar de florianjoy54
 
Date d'inscription: octobre 2009
Messages: 83
Par défaut

Bonjour,

même en faisant un count (*) ça ne fonctionne pas
Code :
 
$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 
{
}
			
 
?>
 
 
 
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 09h46   #4
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 090
Par défaut

Et la réponse à la question ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 09h50   #5
Membre du Club
 
Avatar de florianjoy54
 
Date d'inscription: octobre 2009
Messages: 83
Par défaut

ah oui, vraiment désolé,

$result c'est le nombre de salarié autorisé pour chaque entreprise
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 10h10   #6
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 090
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 ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 10h19   #7
Membre du Club
 
Avatar de florianjoy54
 
Date d'inscription: octobre 2009
Messages: 83
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
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 10h21   #8
Membre éprouvé
 
Avatar de BenoitDenis
 
Date d'inscription: avril 2005
Localisation: Le Mans
Âge: 24
Messages: 474
Envoyer un message via MSN à BenoitDenis
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 ?
__________________
Le contenu est roi, optimisé il est empereur...

Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 10h27   #9
Membre du Club
 
Avatar de florianjoy54
 
Date d'inscription: octobre 2009
Messages: 83
Par défaut

je l'ai fais avec mysql_result.

Code :
 
$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
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 10h42   #10
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 090
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 :
$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++;
}
 
Citation:
pourquoi ne pas faire un mysql_num_rows sur le résultat de ta requete
Quel serait l'interêt par rapport à un COUNT() ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h00   #11
Membre éprouvé
 
Avatar de BenoitDenis
 
Date d'inscription: avril 2005
Localisation: Le Mans
Âge: 24
Messages: 474
Envoyer un message via MSN à BenoitDenis
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
__________________
Le contenu est roi, optimisé il est empereur...

Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h07   #12
Membre du Club
 
Avatar de florianjoy54
 
Date d'inscription: octobre 2009
Messages: 83
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
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h30   #13
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 090
Par défaut

J'insiste mais num_rows est beaucoup moins interessant que count()
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h33   #14
Membre du Club
 
Avatar de florianjoy54
 
Date d'inscription: octobre 2009
Messages: 83
Par défaut

tu peux m'expliquer l'avantage ? stp
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h33   #15
Membre éprouvé
 
Avatar de BenoitDenis
 
Date d'inscription: avril 2005
Localisation: Le Mans
Âge: 24
Messages: 474
Envoyer un message via MSN à BenoitDenis
Par défaut

[MODE CULTURE PERSO = ON]

Pourquoi ?

[MODE CULTURE PERSO = OFF]
__________________
Le contenu est roi, optimisé il est empereur...

Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h52   #16
Rédacteur/Modérateur
 
Avatar de Antoun
 
Nom : Antoine Dinimant
Date d'inscription: octobre 2006
Localisation: Paris
Âge: 39
Messages: 5 218
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é !

Dernière modification par Antoun ; 29/01/2010 à 13h44.
Antoun est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h53   #17
Membre éprouvé
 
Avatar de BenoitDenis
 
Date d'inscription: avril 2005
Localisation: Le Mans
Âge: 24
Messages: 474
Envoyer un message via MSN à BenoitDenis
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...
__________________
Le contenu est roi, optimisé il est empereur...

Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h55   #18
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 090
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é.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 05h04.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.