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
 
Inscription : octobre 2009
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 153
Points : 55
Points : 55
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 :
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
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2010, 19h46   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 00
Vieux 29/01/2010, 09h29   #3
Membre du Club
 
Avatar de florianjoy54
 
Inscription : octobre 2009
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 153
Points : 55
Points : 55
Bonjour,

même en faisant un count (*) ça ne fonctionne pas
Code :
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 
{
}
 
 
?>
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 09h46   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Et la réponse à la question ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 09h50   #5
Membre du Club
 
Avatar de florianjoy54
 
Inscription : octobre 2009
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 153
Points : 55
Points : 55
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 00
Vieux 29/01/2010, 10h10   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 00
Vieux 29/01/2010, 10h19   #7
Membre du Club
 
Avatar de florianjoy54
 
Inscription : octobre 2009
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 153
Points : 55
Points : 55
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 00
Vieux 29/01/2010, 10h21   #8
Membre confirmé
 
Avatar de BenoitDenis
 
Inscription : avril 2005
Messages : 538
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : avril 2005
Messages : 538
Points : 219
Points : 219
Envoyer un message via MSN à BenoitDenis
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.

http://www.tethis-interactive.com
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 10h27   #9
Membre du Club
 
Avatar de florianjoy54
 
Inscription : octobre 2009
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 153
Points : 55
Points : 55
je l'ai fais avec mysql_result.

Code :
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
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 10h42   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 :
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++;
}
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 00
Vieux 29/01/2010, 11h00   #11
Membre confirmé
 
Avatar de BenoitDenis
 
Inscription : avril 2005
Messages : 538
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : avril 2005
Messages : 538
Points : 219
Points : 219
Envoyer un message via MSN à BenoitDenis
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.

http://www.tethis-interactive.com
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 11h07   #12
Membre du Club
 
Avatar de florianjoy54
 
Inscription : octobre 2009
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 153
Points : 55
Points : 55
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 00
Vieux 29/01/2010, 11h30   #13
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
J'insiste mais num_rows est beaucoup moins interessant que count()
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 11h33   #14
Membre du Club
 
Avatar de florianjoy54
 
Inscription : octobre 2009
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 153
Points : 55
Points : 55
tu peux m'expliquer l'avantage ? stp
florianjoy54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 11h33   #15
Membre confirmé
 
Avatar de BenoitDenis
 
Inscription : avril 2005
Messages : 538
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : avril 2005
Messages : 538
Points : 219
Points : 219
Envoyer un message via MSN à BenoitDenis
[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.

http://www.tethis-interactive.com
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 11h52   #16
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 832
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 41
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 832
Points : 9 482
Points : 9 482
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é !
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !

Dernière modification par Antoun ; 29/01/2010 à 13h44.
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 11h53   #17
Membre confirmé
 
Avatar de BenoitDenis
 
Inscription : avril 2005
Messages : 538
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : avril 2005
Messages : 538
Points : 219
Points : 219
Envoyer un message via MSN à BenoitDenis
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.

http://www.tethis-interactive.com
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2010, 11h55   #18
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 04h34.


 
 
 
 
Partenaires

Hébergement Web