boucle qui bug à partir de 30 occurences

12 messages   •   Page 1 sur 1
Petit nouveau ! | 5 Messages

08 juin 2023, 18:29

Bonjour à tous,
J'ai mis en place une saisie de résultat de compétitions qui doit récupérer les nom des concurrents classé par catégorie et leur attribuer un nombre de point en fonction de leur classement . Le tout via Une base de donnée.
Le système fonctionne tant que je ne dépasse pas 29 concurrents au total, et ce quelque soit leur répartition dans les catégories.

J'ai une version en ligne et une version en local sous xamp, les 2 buguent à l'identique :( .

Le code est relativement complexe et long (ce n'est pas mon métier et je suis sur que l'on peut l'optimiser mais ce n'est pas le problème pour le moment), il m'est donc difficile de tout mettre dans ce message et d’expliquer précisément ce dernier :? .
est il possible que quelqu'un m’aide via un partage d'écran ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9686 Messages

09 juin 2023, 16:48

[Message déplacé dans le forum demande d'entraide]
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1490 Messages

09 juin 2023, 22:34

Tu peux mettre le bout de code ici s'il te plaît ?

Ça bug mais est ce qu'il y a un message d'erreur ? Colle le ici.

Petit nouveau ! | 5 Messages

10 juin 2023, 08:50

Le bug intervient sur la page qui écrit les résultats dans la base de donnée mais par précaution, je vous met tout le processus (Vous pouvez aller directement au texte écrit en rouge plus bas) ...
Pour comprendre, le mieux est que vous alliez voir la version en ligne. Ne pouvant mettre l'adresse normale, le forum me l’interdit, remplacez " -" par "." :
morata-archersdugirou-fr
elle se compose d'un jeux d'iframe:
  • Menu
    saisie
le code du menu :
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>menu</title>	
<link href="styles/morata.css" rel="stylesheet" type="text/css">
</script>
</head>
<body>
<h1>
Challenge Morata<br/>
Les résultats
</h1>
<p align="center">
<a href="info.htm" target="saisie"> Accueil </a>
<! chaque lien envoie le nom du club et la page qui doit etre affichée apres la varification--> 
<a href="module/verif_club.php?nom_club=Archers du Girou (St Marcel Paulel)&page_club=location:../girou/girou_nb.php" target="saisie"> Archer du girou </a>	
<a href="module/verif_club.php?nom_club=Compagnon de l arc (Castelginest)&page_club=location:../castelginest/castel_nb.php" target="saisie"> Castelginest </a>
<a href="module/verif_club.php?nom_club=Caujac&page_club=location:../caujac/caujac_nb.php" target="saisie"> Caujac </a>
<a href="module/verif_club.php?nom_club=Les archers Lafittois (Lafitte Vigordane)&page_club=location:../laffite/laffite_nb.php" target="saisie"> Lafitte Vigordane </a>
<a href="module/verif_club.php?nom_club=Arc club de Pechbonnieu&page_club=location:../pechbonnieu/pechbo_nb.php" target="saisie"> Pechbonnieu </a>
<a href="module/verif_club.php?nom_club=Les archers du Saves (Poucharamet)&page_club=location:../poucharamet/pouch_nb.php" target="saisie"> Poucharamet </a>
<a href="module/verif_club.php?nom_club=Les archers de la Garonne (Roquette)&page_club=location:../roquette/roquette_nb.php" target="saisie"> Roquettes </a>
<a href="module/verif_club.php?nom_club=Saint Médard&page_club=location:../saint-medard/medard_nb.php" target="saisie"> St Médard </a>
<a href="module/verif_club.php?nom_club=Touille&page_club=location:../touille/touille_nb.php" target="saisie"> Touille </a>
<a href="bdd/lecture_bdd.php" target="saisie"> Résultats </a>
</p>
</body>
</html>
Les liens pointent vers une page qui vérifie que les résultats n'ont pas déjà été saisis :
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>verifiaction club</title>
	<link href="../styles/morata.css" rel="stylesheet" type="text/css">
</head>

<body>
	<?php
	//-----------------conection à la BDD--------------------
	//inclusion du fichier 'connexion-bdd.php' qui évite de répéter ce code sur toutes les pages
	require('../module/connexion-bdd.php');
	
	//-------------fin de conection------------------------
	
	//--------------test pour vérification de double saisie d'un club------------------		
		
//recuperation du club qui envoi les résultats
	$nom_club=strip_tags($_GET['nom_club']);
	$page_club=strip_tags($_GET['page_club']);
//recuperation des clubs déjà passés
$challenge_ok=$morata->query('SELECT * FROM clubs');
	
	//boucle pour verifier tos les noms de la liste		
	while($verif_club=$challenge_ok->fetch()){
	// si le club est dans la liste
		if($nom_club==$verif_club['club']){
	//ecrire un texte pour le signaler
		echo("<h2 align='center'>Bonjour ".$verif_club['club'].", il semblerait que vous ayez déjà saisi vos résultats.</h2><h3 align='center'> si ce n'est pas le cas contactez Olivier Laplaze des Archers du Girou</h3>");
	// aller directement à la fin de la page pour interrompre le script et empêcher l’ajout du nom du club et des résultats 
		goto fin;
		}
	
	}
	header($page_club);
	
	$challenge_ok->closeCursor();	
	fin:
	?>
</body>
</html>
Une fois la vérification faite la page suivante est affiché, elle permet de donner le nombre d'inscription par catégorie en deux étape :
1 entrer un mot de passe
2 compléter le formulaire
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>girou nombre inscription</title>
<link href="../styles/morata.css" rel="stylesheet" type="text/css">
</head>

<body>
	<h2>Archers du Girou (Saint marcel Paulel)</h2>
	<form action="girou_nb.php" method="post">
		<p>Votre mot de passe : <input type="password" name="mot_de_passe" /></p>
        <p><input type="submit" value="Valider"/></p>
        </form>
	<?php
	//si la variable 'mot de passe' existe et si sa valeur est egale à 'coucou'
	if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==  "coucou"){ 
	//ecriture du début du formulaire avec la cible spécifique au club
		echo(
	'<form action="girou.php" method="post">
	<h3>Inscriptions par catégorie</h3>'
	);
		//inclusion du fichier 'form-nb-inscription.php' qui évite de répéter ce code sur toutes les pages
	require('../module/form-nb-inscription.php');
	}
	//Sinon
	elseif(isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] !=  "coucou"){
	//ecrire erreur de mot de passe !
		echo(
			'<p>erreur de mot de passe !</p>');
	}
	?>
</body>
</html>
Nouvelle page : les nom des concurrents suivant leur classement :
le bug intervient entre cette page et la suivante
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Girou</title>
<link href="../styles/morata.css" rel="stylesheet" type="text/css">
<?php
	//inclusion du fichier 'connexion-bdd.php' qui évite de répéter ce code sur toutes les pages
	require('../module/connexion-bdd.php');
	// fin connexion
	//-----------------------------------------
	//recuperation du nombre d'inscrits par cathégorie
	$nb_10an=$_POST['nb_10an'];
	$nb_13an=$_POST['nb_13an'];
	$nb_18an=$_POST['nb_18an'];
	$nb_debu=$_POST['nb_debu'];
	$nb_arc_nu=$_POST['nb_arc_nu'];
	$nb_confirm=$_POST['nb_confirm'];
	$nb_super_confirm=$_POST['nb_super_confirm'];
	$nb_ultra_confirm=$_POST['nb_ultra_confirm'];
	$nb_poulie_debu=$_POST['nb_poulie_debu'];
	$nb_poulie_confirm=$_POST['nb_poulie_confirm'];
	//------------------------------------------
	//inclusion du fichier 'recup-archer.php' qui évite de répéter ce code sur toutes les pages
	require('../module/recup-archer.php');
?>
</head>

<body>
	<h2>Archers du girou</h2>
		<hr>
	<h3>Choisir dans les listes ou ajouter un nouvel archer dans le champ "ajouter archer"</h3>
	<form action="../bdd/ecriture_bdd.php" method="post" id="girou">
		<!-- champ cacher contenat le nom du club-->
	<input name="nom_club" type="hidden" value="Archers du Girou (St Marcel Paulel)">	
	<h3>- Jeunes -</h3>
		<div id="jeune">		
	 	<div class="cath">
	 	<h3>Poussin - de 10 ans (10m)</h3>
		<?php
		//inclusion du fichier 'affichage-archer.php' qui évite de répéter ce code sur toutes les pages
		require('../module/affichage-archer.php')
		?>
		</div>
	</div>
		<p><input type="reset" class="espace"> <input type="submit" class="espace" value="Voir les résultats"></p>
	</form>
	</body>
</html>
Les fichiers appelés :
le fichier "recup-archer.php"
<?php
	//recupération des archers éyant déjà participés à un challenge et donc stoqués dans la BDD 'archersdpw001'
	//boucle qui permet de stoquer x fois les valeurs ($i)	
	for($i=1;$i<=$nb_10an;$i++){
		${'liste_10an_'.$i}=$morata->query('SELECT nom FROM dix_ans ORDER BY point DESC');
	}
	// meme chose avec la  table 13_ans	
	for($i=1;$i<=$nb_13an;$i++){
		${'liste_13an_'.$i}=$morata->query('SELECT nom FROM treize_ans ORDER BY point DESC');
	}
	// meme chose avec la  table 18_ans	
	for($i=1;$i<=$nb_18an;$i++){
		${'liste_18an_'.$i}=$morata->query('SELECT nom FROM dix_huit_ans ORDER BY point DESC');
	}
	// meme chose avec la  table debu	
	for($i=1;$i<=$nb_debu;$i++){
		${'liste_debu_'.$i}=$morata->query('SELECT nom FROM debu ORDER BY point DESC');
	}
	// meme chose avec la  table arc_nu	
	for($i=1;$i<=$nb_arc_nu;$i++){
		${'liste_arc_nu_'.$i}=$morata->query('SELECT nom FROM arc_nu ORDER BY point DESC');
	}
	// meme chose avec la table confirm	
	for($i=1;$i<=$nb_confirm;$i++){
		${'liste_confirm_'.$i}=$morata->query('SELECT nom FROM confirm ORDER BY point DESC');
	}
	// meme chose avec la table super_confirm	
	for($i=1;$i<=$nb_super_confirm;$i++){
		${'liste_super_confirm_'.$i}=$morata->query('SELECT nom FROM super_confirm ORDER BY point DESC');
	}
	// meme chose avec la table ultra_confirm	
	for($i=1;$i<=$nb_ultra_confirm;$i++){
		${'liste_ultra_confirm_'.$i}=$morata->query('SELECT nom FROM ultra_confirm ORDER BY point DESC');
	}
	// meme chose avec la table poulie_debu	
	for($i=1;$i<=$nb_poulie_debu;$i++){
		${'liste_poulie_debu_'.$i}=$morata->query('SELECT nom FROM poulie_debu ORDER BY point DESC');
	}
	// meme chose avec la table poulie_confirm	
	for($i=1;$i<=$nb_poulie_confirm;$i++){
		${'liste_poulie_confirm_'.$i}=$morata->query('SELECT nom FROM poulie_confirm ORDER BY point DESC');
	}

?>
Le fichier "affichage-archer.php"
<?php
		// création du formulaire de saisie pour la cathégorie 10_an
		
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_10an" type="hidden" value="'.$nb_10an.'">Nombre d\'inscriptions : '.$nb_10an.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_10an;$i++){
			echo ('<p>'.$i.' : <select name="10nom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_10an_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="10nom_ajout'.$i.'"></p>');
		}
		// fin de création 10_an
		?>
		</div>
		<div class="cath">
	  	<h3>Jeune débutant - de 13 ans (15m)</h3>
		<?php
		// création du formulaire de saisie pour la cathégorie 13_an
		
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_13an" type="hidden" value="'.$nb_13an.'">Nombre d\'inscriptions : '.$nb_13an.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_13an;$i++){
			echo ('<p>'.$i.' :<select name="13nom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_13an_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="13nom_ajout'.$i.'"></p>');
		}
		// fin de création 13_an
		?>
		</div>
		<div class="cath">
		<h3>Junior - de 18 ans (18m)</h3>
		<?php
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_18an" type="hidden" value="'.$nb_18an.'">Nombre d\'inscriptions : '.$nb_18an.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_18an;$i++){
			echo ('<p>'.$i.' : <select name="18nom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_18an_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="18nom_ajout'.$i.'"></p>');
		}
		?>
		</div>
	</div>
		<h3>- Adulte -</h3>
		<div id="classique">
		<div class="cath">
	  	<h3>Débutant adulte (18m)</h3>
		<?php
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_debu" type="hidden" value="'.$nb_debu.'">Nombre d\'inscriptions : '.$nb_debu.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_debu;$i++){
			echo ('<p>'.$i.' : <select name="debunom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_debu_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="debunom_ajout'.$i.'"></p>');
		}
		?>
		</div>
		<div class="cath">
	  	<h3>Arc nu (18m)</h3>
		<?php
		// création du formulaire de saisie pour la cathégorie arc_nu
		
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_arc_nu" type="hidden" value="'.$nb_arc_nu.'">Nombre d\'inscriptions : '.$nb_arc_nu.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_arc_nu;$i++){
			echo ('<p>'.$i.' : <select name="arc_nunom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_arc_nu_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="arc_nunom_ajout'.$i.'"></p>');
		}
		// fin de création arc_nu
		?>
		</div>
		<div class="cath">
	  <h3>Confirmé (30m)</h3>
		<?php
		// création du formulaire de saisie pour la cathégorie confirmé
		
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_confirm" type="hidden" value="'.$nb_confirm.'">Nombre d\'inscriptions : '.$nb_confirm.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_confirm;$i++){
			echo ('<p>'.$i.' : <select name="confirmnom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_confirm_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="confirmnom_ajout'.$i.'"></p>');
		}
		// fin de création confirmé
		?>
		</div>
		<div class="cath">
	  <h3>Super confirmé (50m)</h3>
		<?php
		// création du formulaire de saisie pour la cathégorie super confirmé
		
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_super_confirm" type="hidden" value="'.$nb_super_confirm.'">Nombre d\'inscriptions : '.$nb_super_confirm.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_super_confirm;$i++){
			echo ('<p>'.$i.' : <select name="super_confirmnom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_super_confirm_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="super_confirmnom_ajout'.$i.'"></p>');
		}
		// fin de création super_confirmé
		?>
		</div>
		<div class="cath">
	  <h3>Ultra confirmé (70m)</h3>
		<?php
		// création du formulaire de saisie pour la cathégorie super confirmé
		
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) pour transmition et l'affiche pour vérification
        echo('<p><input name="nb_ultra_confirm" type="hidden" value="'.$nb_ultra_confirm.'">Nombre d\'inscriptions : '.$nb_ultra_confirm.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_ultra_confirm;$i++){
			echo ('<p>'.$i.' : <select name="ultra_confirmnom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_ultra_confirm_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="ultra_confirmnom_ajout'.$i.'"></p>');
		}
		// fin de création ultra_confirmé
		?>
		</div>
	</div>
		<h3>- Poulie -</h3>
		<div id="poulie">
		<div class="cath">
	  	<h3>Débutant (30m)</h3>
		<?php
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_poulie_debu" type="hidden" value="'.$nb_poulie_debu.'">Nombre d\'inscriptions : '.$nb_poulie_debu.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_poulie_debu;$i++){
			echo ('<p>'.$i.' : <select name="poulie_debunom_'.$i.'">');
				// boucle pour ecrire chaque nom de la cathegorie dans les liste et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_poulie_debu_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="poulie_debunom_ajout'.$i.'"></p>');
		}
			// fin de création poulie débutant
		?>
		</div>
		<div class="cath">
	  	<h3>Confirmé (50-70m)</h3>
		<?php
		// récupere le nombre d'inscrit de la cathégorie dans un champ caché(hidden) et l'affiche pour vérification
        echo('<p><input name="nb_poulie_confirm" type="hidden" value="'.$nb_poulie_confirm.'">Nombre d\'inscriptions : '.$nb_poulie_confirm.'</p>');
		//boucle pour créer le nombre de champs 'liste' de formulaire pour les incris de la cathégorie '10_an'
		for($i=1;$i<=$nb_poulie_confirm;$i++){
			echo ('<p>'.$i.' : <select name="poulie_confirmnom_'.$i.'">');
				// boucle pour ecrire chaque nom de la catégorie dans les listes et un champ texte pour ajouter un nouveau nom
				 while($donnees=${'liste_poulie_confirm_'.$i}->fetch()){echo('<option>'.$donnees['nom'].'</option>');}
			echo ('</select><br><input type="text" class="espace" value="ajouter archer" required="required" name="poulie_confirmnom_ajout'.$i.'"></p>');
		}
			// fin de création poulie confirmé
		?>
La suivante ne saffiche pas, elle ecrit les résultat dans la base de donnée et apelle la page qui affiche le cumul des résultats :
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ecriture dans la base de donnée</title>
<link href="../styles/morata.css" rel="stylesheet" type="text/css">
	
<?php
	//-----------------conection à la BDD--------------------
	//inclusion du fichier 'connexion-bdd.php' qui évite de répéter ce code sur toutes les pages
	require('../module/connexion-bdd.php');
	
	//-------------fin de conection------------------------
	

//---------Récupération des valeurs du formulaire, "strip_tags()" suprime les balises (protection contre le piratage)-------
	
 // Nombre d'inscrit par cathégorie
	$nb_10an=strip_tags($_POST['nb_10an']);
	$nb_13an=strip_tags($_POST['nb_13an']);
	$nb_18an=strip_tags($_POST['nb_18an']);
	$nb_debu=strip_tags($_POST['nb_debu']);
	$nb_arc_nu=strip_tags($_POST['nb_arc_nu']);
	$nb_confirm=strip_tags($_POST['nb_confirm']);
	$nb_super_confirm=strip_tags($_POST['nb_super_confirm']);
	$nb_ultra_confirm=strip_tags($_POST['nb_ultra_confirm']);
	$nb_poulie_debu=strip_tags($_POST['nb_poulie_debu']);
	$nb_poulie_confirm=strip_tags($_POST['nb_poulie_confirm']);

//-------------------Saisie des noms par catégorie-------------------
	
//------------------ poussin moins de 10 an -----------------
for($i=1;$i<=$nb_10an;$i++){
	${'10_nom_'.$i}=strip_tags($_POST['10nom_'.$i]);
	${'10_nom_ajout_'.$i}=strip_tags($_POST['10nom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_10an=array();
	for($d=1;$d<=$nb_10an;$d++){
		if(${'10_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_10an[]=${'10_nom_'.$d};
		}
		else {
		$resultat_10an[]=${'10_nom_ajout_'.$d};
		}
	}
	$resultat_10an_unique=array_unique($resultat_10an);
	
	//------------------ jeune débutant moins de 13 an -----------------
for($i=1;$i<=$nb_13an;$i++){
	${'13_nom_'.$i}=strip_tags($_POST['13nom_'.$i]);
	${'13_nom_ajout_'.$i}=strip_tags($_POST['13nom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_13an=array();
	for($d=1;$d<=$nb_13an;$d++){
		if(${'13_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_13an[]=${'13_nom_'.$d};
		}
		else {
		$resultat_13an[]=${'13_nom_ajout_'.$d};
		}
	}
	$resultat_13an_unique=array_unique($resultat_13an);
	
	//------------------ junior moins de 18 an -----------------
for($i=1;$i<=$nb_18an;$i++){
	${'18_nom_'.$i}=strip_tags($_POST['18nom_'.$i]);
	${'18_nom_ajout_'.$i}=strip_tags($_POST['18nom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_18an=array();
	for($d=1;$d<=$nb_18an;$d++){
		if(${'18_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_18an[]=${'18_nom_'.$d};
		}
		else {
		$resultat_18an[]=${'18_nom_ajout_'.$d};
		}
	}
	$resultat_18an_unique=array_unique($resultat_18an);
	
	//------------------ débutants -----------------
for($i=1;$i<=$nb_debu;$i++){
	${'debu_nom_'.$i}=strip_tags($_POST['debunom_'.$i]);
	${'debu_nom_ajout_'.$i}=strip_tags($_POST['debunom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_debu=array();
	for($d=1;$d<=$nb_debu;$d++){
		if(${'debu_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_debu[]=${'debu_nom_'.$d};
		}
		else {
		$resultat_debu[]=${'debu_nom_ajout_'.$d};
		}
	}
	$resultat_debu_unique=array_unique($resultat_debu);
	
	
	//------------------ arc nu -----------------
for($i=1;$i<=$nb_arc_nu;$i++){
	${'arc_nu_nom_'.$i}=strip_tags($_POST['arc_nunom_'.$i]);
	${'arc_nu_nom_ajout_'.$i}=strip_tags($_POST['arc_nunom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_arc_nu=array();
	for($d=1;$d<=$nb_arc_nu;$d++){
		if(${'arc_nu_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_arc_nu[]=${'arc_nu_nom_'.$d};
		}
		else {
		$resultat_arc_nu[]=${'arc_nu_nom_ajout_'.$d};
		}
	}
	$resultat_arc_nu_unique=array_unique($resultat_arc_nu);
	
	
	//------------------ confirmé -----------------
for($i=1;$i<=$nb_confirm;$i++){
	${'confirm_nom_'.$i}=strip_tags($_POST['confirmnom_'.$i]);
	${'confirm_nom_ajout_'.$i}=strip_tags($_POST['confirmnom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_confirm=array();
	for($d=1;$d<=$nb_confirm;$d++){
		if(${'confirm_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_confirm[]=${'confirm_nom_'.$d};
		}
		else {
		$resultat_confirm[]=${'confirm_nom_ajout_'.$d};
		}
	}
	$resultat_confirm_unique=array_unique($resultat_confirm);
	
	//------------------ super confirmé -----------------
for($i=1;$i<=$nb_super_confirm;$i++){
	${'super_confirm_nom_'.$i}=strip_tags($_POST['super_confirmnom_'.$i]);
	${'super_confirm_nom_ajout_'.$i}=strip_tags($_POST['super_confirmnom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_super_confirm=array();
	for($d=1;$d<=$nb_super_confirm;$d++){
		if(${'super_confirm_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_super_confirm[]=${'super_confirm_nom_'.$d};
		}
		else {
		$resultat_super_confirm[]=${'super_confirm_nom_ajout_'.$d};
		}
	}
	$resultat_super_confirm_unique=array_unique($resultat_super_confirm);
	
		
	//------------------ ultra confirmé -----------------
for($i=1;$i<=$nb_ultra_confirm;$i++){
	${'ultra_confirm_nom_'.$i}=strip_tags($_POST['ultra_confirmnom_'.$i]);
	${'ultra_confirm_nom_ajout_'.$i}=strip_tags($_POST['ultra_confirmnom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_ultra_confirm=array();
	for($d=1;$d<=$nb_ultra_confirm;$d++){
		if(${'ultra_confirm_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_ultra_confirm[]=${'ultra_confirm_nom_'.$d};
		}
		else {
		$resultat_ultra_confirm[]=${'ultra_confirm_nom_ajout_'.$d};
		}
	}
	$resultat_ultra_confirm_unique=array_unique($resultat_ultra_confirm);
	
	
		//------------------ poule debutant -----------------
for($i=1;$i<=$nb_poulie_debu;$i++){
	${'poulie_debu_nom_'.$i}=strip_tags($_POST['poulie_debunom_'.$i]);
	${'poulie_debu_nom_ajout_'.$i}=strip_tags($_POST['poulie_debunom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_poulie_debu=array();
	for($d=1;$d<=$nb_poulie_debu;$d++){
		if(${'poulie_debu_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_poulie_debu[]=${'poulie_debu_nom_'.$d};
		}
		else {
		$resultat_poulie_debu[]=${'poulie_debu_nom_ajout_'.$d};
		}
	}
	$resultat_poulie_debu_unique=array_unique($resultat_poulie_debu);
	
	
		//------------------ poulie confirmé -----------------
for($i=1;$i<=$nb_poulie_confirm;$i++){
	${'poulie_confirm_nom_'.$i}=strip_tags($_POST['poulie_confirmnom_'.$i]);
	${'poulie_confirm_nom_ajout_'.$i}=strip_tags($_POST['poulie_confirmnom_ajout'.$i]);
}
	//--------- pour test de doublon (debut de <head>)

	$resultat_poulie_confirm=array();
	for($d=1;$d<=$nb_poulie_confirm;$d++){
		if(${'poulie_confirm_nom_ajout_'.$d}=='ajouter archer'){
		$resultat_poulie_confirm[]=${'poulie_confirm_nom_'.$d};
		}
		else {
		$resultat_poulie_confirm[]=${'poulie_confirm_nom_ajout_'.$d};
		}
	}
	$resultat_poulie_confirm_unique=array_unique($resultat_poulie_confirm);
	
	
//---------------fin de saisie des noms___________________
	
	
	
	
//------------------ points atribués au 5 premiers--------------------
	$_1=7;
	$_2=5;
	$_3=4;
	$_4=3;
	$_5=2;

?>

</head>

<body>
	<?php
	
	
	// -------------------verification des doublons---------------------------------
	
	
	/* liste des diférents resultats pour test (OK)
	echo('<p>10 an : '.count($resultat_10an).'<br/>'.count($resultat_10an_unique).'</p>
		 <p> 13 an : '.count($resultat_13an).'<br/>'.count($resultat_13an_unique).'</p>
		 <p> 18 an : '.count($resultat_18an).'<br/>'.count($resultat_18an_unique).'</p>
		 <p> debutant'.count($resultat_debu).'<br/>'.count($resultat_debu_unique).'</p>
		 <p> arc nu : '.count($resultat_arc_nu).'<br/>'.count($resultat_arc_nu_unique).'</p>
		 <p> confirmé : '.count($resultat_confirm).'<br/>'.count($resultat_confirm_unique).'</p>
		 <p> super confirmé : '.count($resultat_super_confirm).'<br/>'.count($resultat_super_confirm_unique).'</p>
		 <p> ultra confirmé : '.count($resultat_ultra_confirm).'<br/>'.count($resultat_ultra_confirm_unique).'</p>
		 <p> poulie debutant : '.count($resultat_poulie_debu).'<br/>'.count($resultat_poulie_debu_unique).'</p>
		 <p> poulie confirmé : '.count($resultat_poulie_confirm).'<br/>'.count($resultat_poulie_confirm_unique).'<p>');*/
		
	if(count($resultat_10an)-count($resultat_10an_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la cathégorie - de 10 an</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour 13_an
	elseif(count($resultat_13an)-count($resultat_13an_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie - de 13 an</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour 18_an
	elseif(count($resultat_18an)-count($resultat_18an_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie - de 18 an</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour debutan
	elseif(count($resultat_debu)-count($resultat_debu_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie debutant classique</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour arc_nu
	elseif(count($resultat_arc_nu)-count($resultat_arc_nu_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie arc nu</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour confirmé
	elseif(count($resultat_confirm)-count($resultat_confirm_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie classique confirmé</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour super_confirmé
	elseif(count($resultat_super_confirm)-count($resultat_super_confirm_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie classique super confirmé</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour ultra confirmé
	elseif(count($resultat_ultra_confirm)-count($resultat_ultra_confirm_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie classique ultra confirmé</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour poulie debutant
	elseif(count($resultat_poulie_debu)-count($resultat_poulie_debu_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie Poule débutant</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// meme chose pour poulie confirmé
	elseif(count($resultat_poulie_confirm)-count($resultat_poulie_confirm_unique)!=0){
	echo('	<h3>doublon !!</h3>
			<p>Vous avez des noms en double dans la catégorie poulie confirmé</p>
			<p><a href="javascript:history.go(-3)">retour</a></p><hr/>');
	}
	// ---------fin des verification de doublon------------------------
	
	
	//--------------------si aucun doublon, Calcul des points---------------------------
	else{
	//-------------------------10_an------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_10an<5){$nb_10an_petit=$nb_10an;}
		//si il y a  5 inscrits et plus tous les points sont atribués
	else{$nb_10an_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_10an_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'10_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE dix_ans SET point = point+${'_'.$i}  WHERE nom ='${'10_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO dix_ans VALUES('${'10_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_10an>5){
		for($i=6;$i<=$nb_10an;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'10_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE dix_ans SET point = point+1  WHERE nom ='${'10_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO dix_ans VALUES('${'10_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table 10_an
		
	//-------------------------13_an------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_13an<5){$nb_13an_petit=$nb_13an;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_13an_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_13an_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'13_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE treize_ans SET point = point+${'_'.$i}  WHERE nom ='${'13_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO treize_ans VALUES('${'13_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_13an>5){
		for($i=6;$i<=$nb_13an;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'13_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE treize_ans SET point = point+1  WHERE nom ='${'13_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO treize_ans VALUES('${'13_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table 13_an
		
	//-------------------------18_an------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_18an<5){$nb_18an_petit=$nb_18an;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_18an_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_18an_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'18_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE dix_huit_ans SET point = point+${'_'.$i}  WHERE nom ='${'18_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO dix_huit_ans VALUES('${'18_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_18an>5){
		for($i=6;$i<=$nb_18an;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'18_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE dix_hiut_ans SET point = point+1  WHERE nom ='${'18_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO dix_huit_ans VALUES('${'18_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table 18_an
		
	//-------------------------debutant------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_debu<5){$nb_debu_petit=$nb_debu;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_debu_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_debu_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'debu_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE debu SET point = point+${'_'.$i}  WHERE nom ='${'debu_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO debu VALUES('${'debu_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_debu>5){
		for($i=6;$i<=$nb_debu;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'debu_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE debu SET point = point+1  WHERE nom ='${'debu_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO debu VALUES('${'debu_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table débutant
		
	//-------------------------Arc nu------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_arc_nu<5){$nb_arc_nu_petit=$nb_arc_nu;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_arc_nu_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_arc_nu_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'arc_nu_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE arc_nu SET point = point+${'_'.$i}  WHERE nom ='${'arc_nu_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO arc_nu VALUES('${'arc_nu_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_arc_nu>5){
		for($i=6;$i<=$nb_arc_nu;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'arc_nu_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE arc_nu SET point = point+1  WHERE nom ='${'arc_nu_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO arc_nu VALUES('${'arc_nu_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table confirmé
		
	//-------------------------confirmé------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_confirm<5){$nb_confirm_petit=$nb_confirm;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_confirm_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_confirm_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'confirm_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE confirm SET point = point+${'_'.$i}  WHERE nom ='${'confirm_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO confirm VALUES('${'confirm_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_confirm>5){
		for($i=6;$i<=$nb_confirm;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'confirm_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE confirm SET point = point+1  WHERE nom ='${'confirm_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO confirm VALUES('${'confirm_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table confirmé
		
	//-------------------------Super confirmé------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_super_confirm<5){$nb_super_confirm_petit=$nb_super_confirm;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_super_confirm_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_super_confirm_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'super_confirm_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE super_confirm SET point = point+${'_'.$i}  WHERE nom ='${'super_confirm_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO super_confirm VALUES('${'super_confirm_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_super_confirm>5){
		for($i=6;$i<=$nb_super_confirm;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'super_confirm_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE super_confirm SET point = point+1  WHERE nom ='${'super_confirm_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO confirm VALUES('${'super_confirm_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table super confirmé
		
	//-------------------------Ultra confirmé------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_ultra_confirm<5){$nb_ultra_confirm_petit=$nb_ultra_confirm;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_ultra_confirm_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_ultra_confirm_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'ultra_confirm_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE ultra_confirm SET point = point+${'_'.$i}  WHERE nom ='${'ultra_confirm_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO ultra_confirm VALUES('${'ultra_confirm_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_ultra_confirm>5){
		for($i=6;$i<=$nb_confirm;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'ultra_confirm_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE ultra_confirm SET point = point+1  WHERE nom ='${'ultra_confirm_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO ultra_confirm VALUES('${'ultra_confirm_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table ultra confirmé
		
	//-------------------------Poulie débutant------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_poulie_debu<5){$nb_poulie_debu_petit=$nb_poulie_debu;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_poulie_debu_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_poulie_debu_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'poulie_debu_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE poulie_debu SET point = point+${'_'.$i}  WHERE nom ='${'poulie_debu_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO poulie_debu VALUES('${'poulie_debu_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_poulie_debu>5){
		for($i=6;$i<=$nb_poulie_debu;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'poulie_debu_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE poulie_debu SET point = point+1  WHERE nom ='${'poulie_debu_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO poulie_debu VALUES('${'poulie_debu_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table confirmé
		
	//-------------------------Poulie confirmé------------------------------------
	// Choix insert (nouvel archer) ou update (archer deja present)
	
	//Si il y a moins de 5 inscrits, tous les points ne sont pas atribués	
	if($nb_poulie_confirm<5){$nb_poulie_confirm_petit=$nb_poulie_confirm;}
		//si il y a au moins 5 inscrits tous les points sont atribués
	else{$nb_poulie_confirm_petit=5;}
		//boucle qui verifie les champs des 5 premiers pour pouvoir leur atribuer les points
			for($i=1;$i<=$nb_poulie_confirm_petit;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'poulie_confirm_nom_ajout_'.$i}=='ajouter archer'){
			//met à jour le champ 'point' en ajoutant le nombre de point correspondant au classement (1er, deuxieme ...)
			$morata->exec("UPDATE poulie_confirm SET point = point+${'_'.$i}  WHERE nom ='${'poulie_confirm_nom_'.$i}'");
			//}
		}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO poulie_confirm VALUES('${'poulie_confirm_nom_ajout_'.$i}',${'_'.$i})");
		}
	}
	// meme chose pour les archers au dela de 5
		// si il y a au moins 6 archers
		if($nb_poulie_confirm>5){
		for($i=6;$i<=$nb_poulie_confirm;$i++){
			// sil la valeur du champ ajouter un archer est 'ajouter archer'(valeur par defaut, donc pas de nouveau archers)
			if(${'poulie_confirm_nom_ajout_'.$i}=='ajouter archer'){	
			//met à jour le champ 'point' en ajoutant 1 point (atribuer automatiquement à tout participant)
			$morata->exec("UPDATE poulie_confirm SET point = point+1  WHERE nom ='${'poulie_confirm_nom_'.$i}'");
			}	
		//si la valeur du champ n'est pas 'ajouter archer' (valeur par defaut donc un nouvel archer)
		else{
			// ajout du nouvel archer et atribution des points
			$morata->exec("INSERT INTO poulie_confirm VALUES('${'poulie_confirm_nom_ajout_'.$i}',1)");
			}
		}
	}
	// fin de la table confirmé
		
		
//-------------------------fin des calcul des points-------------------------------
		

//-----------------actualisation des club ayant fait le morata---------------------
//recuperation du club qui envoi les résultats
	$nom_club=strip_tags($_POST['nom_club']);
	$morata->exec("INSERT INTO clubs VALUES ('','$nom_club')");	
		//----------------chargement de la page 'lecture_bdd' dans l'iframe
		header("location: lecture_bdd.php");
}
//fin:	
	
	?>
	
</body>
</html>
Le message du bug :
Warning: Undefined array key "10nom_1" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_2" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_3" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_4" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_5" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_6" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_7" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_8" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_9" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "10nom_10" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 34

Warning: Undefined array key "13nom_1" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_2" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_3" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_4" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_5" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_6" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_7" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_8" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_9" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "13nom_10" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 52

Warning: Undefined array key "18nom_1" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_2" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_3" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_4" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_5" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_6" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_7" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_8" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_9" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Undefined array key "18nom_10" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 70

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\morata\bdd\ecriture_bdd.php:70) in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 716
Comme je l'ai di au début, ce bug intervient uniquement si le NOMBRE GLOBAL de concurent dépasse 30 quelque soit la répartition dans les catégories ...
et , de plus si j'affiche les résultats ils sont corrects ... 8-|

Merci aux courageux qui ons lus jusqu'au bout :wink:

Avatar du membre
Mammouth du PHP | 1490 Messages

10 juin 2023, 09:15

Oui, c'est pas du tout optimisé, ya un nombre de requêtes SQL importantes et il est possible que ton hébergeur bloque à "30 connexions simultanées".

Pour moi, ceci est incorrect : ${'10_nom_'.$i}, une variable ${} ??? à confirmer mais cela semble incorrect.
Une variable, ici dans ton cas, c'est un tableau se déclare comme suit :
$mon_tableau = [];
//ou identique mais compatible sur des versions anciennes de PHP :
$mon_tableau = array();
Tes erreurs parlent d'elles mêmes :
Warning: Undefined array key "xxxxxx" in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line xx
L'index "xxxxxx" du tableau n'est pas définit à la ligne xx

Ya un gros travail d'optimisation en tout cas et solutionner ce problème de clé sera aussi bénéfique et surtout nécessaire.

Je propose des prestations sur mon site c2script.com, je peux te proposer un devis gratuit si tu le souhaite.

Petit nouveau ! | 5 Messages

10 juin 2023, 18:28

Bonjour et merci d'avoir pris le temps de répondre.
J'ai écris ce code juste avant le covid et je m'y replonge maintenant.
La partie qui te semble fausse , je ne sais plus où je l'ai trouvé mais l’idée était de créer des noms de variable dynamiquement. J'ai toujours du mal avec les tableaux, je ne sais jamais vraiment comment les manipuler :oops: .
En faisant une recherche aujourd'hui j'ai trouver ceci :
Il est parfois pratique d'utiliser des noms de variables qui sont eux-même des variables.
Par exemple, en créant une page, on définit et utilise les variables $var1, $var2, $var3, $var10.

Après avoir fait ceci, on voudrait pouvoir manipuler automatiquement toutes ces variables. Après coup, on peut se dire que la bonne démarche est de reprendre la programmation de la page et créer au lieu des 10 variables $var1, …, $var10 une seule variable $var qui est un tableau contenant 10 entrées.
Si on ne veut pas retoucher à toutes la page, on peut néanmoins faire appel aux noms dynamiques de variables, qui permettent de considérer le nom lui-même de la variable comme une variable.

En php, les noms de variables sont préfixées par un "$", les variables dynamiques par 2: "$$".

Dans le contexte précédent, par exemple pour simplifier avec 3 variables $var1, $var2 et $var3

<?php
$var1="Ma 1ère variable";
$var2="Ma 2ème variable";
$var3="Ma 3ème variable";
?>

on peut alors accéder à ces variables en créant dynamiquement une variable $vardyn dont le nom lui-même change et qui va être tout à tout chacune de ces 3 variables:

<?php
$var1="Ma 1ère variable";
$var2="Ma 2ème variable";
$var3="Ma 3ème variable";

for ($i=1;$i<=3;$i++) {
$vardyn="var".$i;
echo "Var".$i." = ".$$vardyn."<br>";}
?>
Cela me semble intéressant.

En ce qui concerne ta proposition de presta, je n'ai pas de budget je développe ce code en bénévole pour une association.
Merci quand même à toi

Avatar du membre
Mammouth du PHP | 1490 Messages

10 juin 2023, 18:43

C'est vrai que quand tu parle de variables dynamiques, ça me revient ! L'approche est correcte.

Il te faut absolument limiter le nombre de requêtes SQL à présent, peut être pourrais tu faire une requête pour tant de résultats ? Et pas 1 requête = 1 résultat.

Les jointures peuvent t'aider aussi, au lieu de faire deux requêtes, une dans la table A et l'autre dans la table B, tu jointe en une seule requête.

Petit nouveau ! | 5 Messages

11 juin 2023, 19:59

Bonjour
Merci pour la réponse. Je ne connaissais absolument pas la notion de jointure.
si j'ai bien compris l'idée est de faire une requête pour, par exemple, récupérer le nom du premier de la catégorie A et de joindre aussi les premiers des catégories B, C etc etc pour leur attribuer le même nombre de points ?
Si cela marche, le code devrait être effectivement beaucoup plus léger ...

Avatar du membre
Mammouth du PHP | 1490 Messages

11 juin 2023, 20:19

Je ne sais pas exactement ton besoin, regarde ce site sympa qui explique les jointures SQL avec des exemples et images : https://sql.sh/cours/jointures

Petit nouveau ! | 5 Messages

09 juil. 2023, 17:18

Bonjour à tous.
Première chose, je me suis décidé à travailler avec les tableaux et ça fonctionne :D
Plus de bug à partir de 30 concurrents :P .

Mais comme vous vous en doutez, j'ai un autre Problème :roll:
Mon "algorithme"
  • 1 : Je créer des noms dynamiques de tableaux par une boucle
    2 : chaque tableau récupère une liste de nom stockés dans un champ de table
    3 : je vérifie si un nom est dans ces listes avec la fonction "in_array"
La fonction "in_array" ne reconnait pas le nom de mon tableau comme un tableau :
"Fatal error: Uncaught TypeError: in_array(): Argument #2 ($haystack) must be of type array, PDOStatement given in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php:758 Stack trace: #0 C:\xampp\htdocs\morata\bdd\ecriture_bdd.php(758): in_array('un bis', Object(PDOStatement)) #1 {main} thrown in C:\xampp\htdocs\morata\bdd\ecriture_bdd.php on line 758"

"un bis" est le nom qui doit être trouver dans le tableau ...

Du coup, j'ai fait plein d'essais dans tous les sens, et pour résumer, je me suis aperçu que je n'arrivais pas à utiliser la fonction "print_r" pour visualiser le contenu de mon tableau mais que cela fonctionnait avec la boucle "foreach".
Pour cela, il me faut préciser dans la boucle "foreach" le nom du champ récupéré dans la table.
Je soupçonne quelque chose avec ce champ et ce d'autant plus que dans mes tests j'ai dupliqué la boucle qui créer les tableaux mais j'ai mis "à la main" les valeurs des tableaux et ça fonctionne (affichage avec "print_r" et fonction "in_array") :
for($a=1;$a<=3;$a++){
		${'test_'.$a}=array('un bis','truc','machin');
		print_r(${'test_'.$a});
		echo('<br/>');
		}
Le code de la boucle originale avec les tests d'affichage :
for($i=1;$i<=$nombre_arbitre;$i++){
			
		echo('<p> noms dans liste '.$saisie_arbitre_cath[$i].' :<br/>');
			//création d'une variable tableau "$test_$i" qui stoque les noms déjà enregistrés dans la Bdd
			${'test_'.$i}=array();
			${'test_'.$i}=$morata->query('SELECT nom FROM '.$saisie_arbitre_cath[$i].' ORDER BY nom');
			// test du contenu fonctionne avec foreach ...
			echo('test avec la fonction "foreach" : ');
			foreach(${'test_'.$i} as $nom){
			 echo($nom['nom'].', ');
			 }
			echo('</p>');
			// ... mais pas avec print_r : POURQUOI ?
			echo('<p>test avec la fonction "print_r" : ');
			print_r(${'test_'.$i});
			echo('</p><hr/>');
			
		}
Le code du test "in_array" :
for($b=1;$b<=$nombre_arbitre;$b++){
		if(in_array($saisie_arbitre_nom[$b], ${'test_'.$b})){
			//met à jour le champ 'point' en ajoutant 3 points (atribuer automatiquement à tout arbitre)
			//$morata->exec("UPDATE $saisie_arbitre_cath[$i] SET point = point+3  WHERE nom ='$saisie_arbitre_nom[$i]'");
			echo('Nom '.$saisie_arbitre_nom[$b].' déjà present.<br/> ');}
		}

Avatar du membre
Mammouth du PHP | 1602 Messages

11 juil. 2024, 19:21

Salut, la méthode query de PDO ne retourne pas un tableau mais un PDOStatement ou false selon que la requête s'est bien exécutée ou non.

Tu peux boucler dessus car ça implémente IteratorAggregate mais si tu veux un tableau il faut faire un fetchAll sur le PDOStatement.
Développeur web depuis + de 20 ans

Avatar du membre
Mammouth du PHP | 1490 Messages

11 juil. 2024, 19:42

Tu peux utiliser var_dump($ton_tableau) pour voir son contenu, il te donnera aussi les types de chaque entrée.

12 messages   •   Page 1 sur 1