Problème d'affichage et d'enregistrement

Fermé
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013 - 28 mars 2013 à 11:45
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 2 avril 2013 à 20:41
Bonjour,
Je suis un peu perdu dans nom code et j'arrive pas à voir le résultat que je cherche , en fait j'ai 3 colonnes (Mois , P1, P2) , je veux afficher 12 lignes pour chaque colonne car je dois remplir le 2 chapms P1et P2 selon les mois (12 mois) , je veux pas faire le 12 mois dans une liste déroulante , aussi les valeurs à remplir ça dépend des années de coup j'ai mis les années dans une liste déroulante parce les années ça change avec l'année courante,
Là je veux que l'utilisateur choisisse l'année de la liste déroulante des années et après il remplisse le 12 lignes du chaque colonne et après quand il clique sur le bouton envoyé les données vont être enregistrer dans ma base, le problème dans mon code c'est :
- le serveur il prend que la dernière ligne et l'enregistre ( je sais pas quoi faire pour avoir le 12 lignes enregistrés)
- pour la liste déroulante quand je choisi l'année directement il prend l'année et actualise la page il ne laisse pas l'année choisie affiché et il me permet pas de rentrer les autres valeurs (P1, P2) , espérant que je suis arriver à exprimer bien qu'est ce je veux , est que vous pouvez m'aider de modifier le code de façon que peux avoir les résultats que je cherche , merci d'avance.
Voilà mon code source :

<?php
require_once('dbconnect.php');
?>
<html>
<head>
<title>ESPACE PRIVE </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<p align="center" class="titre"><strong>- : : : Les paramètres du bases : : : -</strong></p>
<br>
<?php
//On verifie que le formulaire a été envoye
if(isset( $_POST['annee']) && isset($_POST['Mois']) && isset($_POST['P1']) && isset($_POST['P2']))
{
//mettre les variables dans une requette SQL
$annee = $_POST['annee'];
$Mois = $_POST['Mois'];
$P1 = $_POST['P1'];
$P2 = $_POST['P2'];
$sql='INSERT INTO parmetres( annee, Mois, P1, P2 ) VALUES ("'.$annee.'", "'.$Mois.'", "'.$P1.'","'.$P2.'")';
$requete = $db->query($sql) ;
}
else{
}
?>
<form action="parametre.php" method="post" name="formulaire" >
<table width="350" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
<TR><TH>Mois</TH><TH>P1</TH><TH>P2</TH></TR>
<tr>
<td width="144"><input name="P1" type="text" id="P1"></td>
<td width="144"><input name="P2" type="text" id="P2"></td>
<td>
<tr>
<td width="144"><input name="P1" type="text" id="P1"></td><input name="Mois" type="text" id="Mois"></td>
</tr>
<td width="144"><input name="P2" type="text" id="P2"></td>
<td><input name="Mois" type="text" id="Mois"></td>
</tr>
<td>
<?php
echo '<select name="annee" onchange="submit()">';
$annee=date("Y");
echo '<option value="">Choisir une année...</option>';

for($i=2010;$i<=$annee ;$i++){
echo '<option value="'.$i.'">'.$i.'</option>';

}
echo '</select>';
echo '<br /><br />';
?>
</td>
</tr>
<tr>
<td height="50" colspan="2"><div align="center">
<input type="submit" name="envoi" value="Envoyer">
</tr>
</table>
</form>
</body>
</html>
<html>

<div class="foot"><a href="accueil.php">Retour à l'accueil</a></div>

</body>
</html>
A voir également:

20 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 mars 2013 à 13:44
revois tes <tr></tr> tu as des lignes qui n'ont pas soit la balise ouvrante soit la fermante
tes <td></td> idem

et il faut ABSOLUMENT dans chaque ligne avoir le même nombre de colonnes, c'est à dire autant de <th></th> ou <td></td>

et ton pb vient surtout du fait que tu as le même name="P1"
name="P2" name="Mois" pour plusieurs input

dans ce cas c'est le dernier qui est pris en compte
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
28 mars 2013 à 13:55
d'accord je te demande si je change le name pour chaque input ça va pas influencer la bd , parce que dans la base j'en ai que 3 champs (Mois , P1 , P2 ) ??
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
28 mars 2013 à 14:02
j'ai corrigé l'erreur des balises et j'ai changé le nom dans les input
je faisais comme ça
<td width="144"><input name="P21" type="text" id="P21"></td>
<td><input name="Mois1" type="text" id="Mois1"></td>

mais ça change rien toujours il prend soit le premier champs soit le dernier :(
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 mars 2013 à 17:10
bon je t'ai fait ça:
avec une methode d'array pour différencier les <input des différents mois

( attention tu avait mis plusieurs fois <html></html> </body> une suele fois par page suffit)

<html>
<head>
<title>ESPACE PRIVE </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
<script type="text/javscript">
//fonction qui permet de verifier que l'année a bien été sélectionnée
function verif_champs(){
	var champ_annee=document.getElementById('annee');
	if(champ_annee ==""){
		alert("Vous devez chosir une année");
		return false; //empeche l'envoi du formulaire
	}
}
</script>
</head>
<body>
<p align="center" class="titre"><strong>- : : : Les paramètres du bases : : : -</strong></p>
<br>
<?php
//On verifie que le formulaire a été envoye
if(isset( $_POST['envoi']))
{
	//connexio BDD, il suffit de le faire à ce moment là
	require_once('dbconnect.php');
	//recup des valeurs postées
	$annee = $_POST['annee'];
	$arrayMois = $_POST['Mois'];
	$arrayP1 = $_POST['P1'];
	$arrayP2 = $_POST['P2'];
	//il faut faire autant de requette INSERT que de lignes remplies
	//on parcours l'array $arrayMois
	foreach($arrayMois as $mois=>$value){
		//$mois = l'index qui va aussi servir dans les autres array
		// ex: P1[5] contient la valeur saisie dasn P1 du mois 5
		if(!empty($arrayP1[$mois]) && !empty($arrayP2[$mois] )){
			//si les deux champs P1 et P2 ont été remplis pour le mois considéré on enregistre dans la BDD
			//ta table se nomme parmetres ou parametres ??
			$sql='INSERT INTO parametres( annee, Mois, P1, P2 ) VALUES ("'.$annee.'", "'.$mois.'", "'.$arrayP1[$mois].'","'.$arrayP1[$mois].'")';
			//echo "<br />".$sql;
			$requete = $db->query($sql) ;
		}
	
	}
	
}

?>
<!-- ci dessous avec onsubmit="return verif_champs();" on vrifie en javascript que l'année a bien été sélectionnée, sinon le formulaire ne part pas -->
<form action="parametre.php" method="post" name="formulaire" onsubmit="return verif_champs();" >
	<table width="350" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
		<tr><th>Année</th><th>Mois</th><th>P1</th><th>P2</th></tr>
		<?php
			//on va faire une boucle pour afficher tous les mois d'un coup
			//et pour l'année dans la première colonne sur une seule ligne grace au rowspan="12"
			for($n=1;$n<=12;$n++){
				echo '<tr>';
					//première colonne (année)
					
				if($n==1){
					//si première ligne on met la liste déroulante année dans la colonne 1
					echo '<td rowspan="12">'; //colonne qui fait les 12 lignes
					$annee=date("Y");
						echo '<select name="annee" id="annee" >';		
							echo '<option value="">Choisir une année...</option>';

							for($i=2010;$i<=$annee ;$i++){
								echo '<option value="'.$i.'">'.$i.'</option>';
							}
						echo '</select>';
					echo '</td>';
				}
					//suite des colonnes
					echo '<td>'; 
					//ci dessous en mettant name= sous la forme xxxxx[] on va recevoir les valeurs des input dans un array $_POST['xxxx']
					//le mois est déja rempli, on met readonly =>il ne peut pas être modifié,
					// si pas de valeur pour le mois  les champs P1 P2 seront laissés vides, donc pas d'enr dans la BDD pour le mois
					echo '<input type="text" name="Mois['.$n.']" value="'.$n.'" readonly />';
					echo '</td>';
					echo '<td>'; //colonne P1 					
					echo '<input type="text" name="P1['.$n.']" value="" />';
					echo '</td>';
					echo '<td>'; //colonne P2 					
					echo '<input type="text" name="P2['.$n.']" value="" />';
					echo '</td>';
				echo '</tr>';
			}
		?>
		<tr>
			<td height="50" colspan="4" align="center">
				<input type="submit" name="envoi" value="Envoyer">
			</td>
		</tr>
	</table>
</form>

<div class="foot"><a href="accueil.php">Retour à l'accueil</a></div>

</body>
</html>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
28 mars 2013 à 17:22
Je te remercie beaucoup pour ton aide :) je vais le tester maintenant
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 mars 2013 à 17:32
si besoin on peut mettre les mois sous forme janvier février etc..
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
28 mars 2013 à 18:17
Si je veux bien le faire sous forme "janvier , février ..." mais je sais pas comment faire
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 mars 2013 à 18:53
Voilà:
(attention il y avait deux petites erreurs au début de mon code javascript)
<html>
<head>
<title>ESPACE PRIVE </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
<!-- j'avait fait deux c...ies ci dessous une dans <script...  et l'autre dans if(champ_annee.-->
<script type="text/javascript" >
//fonction qui permet de verifier que l'année a bien été sélectionnée
function verif_champs(){	
	var champ_annee = document.getElementById('annee');
	if(champ_annee.value ==""){
		alert("Vous devez choisir une année");
		return false; //empeche l'envoi du formulaire
	}	
}
</script>
<style type="text/css">
.input_mois {
	background-color:#A9AEAD;
	text-align:center;
}

</style>
</head>
<body>
<p align="center" class="titre"><strong>- : : : Les paramètres du bases : : : -</strong></p>
<br>
<?php
//initialisation de l'array des mois
$array_list_mois=array("1"=>"Janvier","2"=>"Février","3"=>"Mars","4"=>"Avril","5"=>"Mai","6"=>"Juin","7"=>"Juillet","8"=>"Aout","9"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre");

//On verifie que le formulaire a été envoye
if(isset( $_POST['envoi']))
{
	//connexion BDD, il suffit de le faire à ce moment là
	require_once('dbconnect.php');
	//recup des valeurs postées
	$annee = $_POST['annee'];
	$arrayMois = $_POST['Mois'];
	$arrayP1 = $_POST['P1'];
	$arrayP2 = $_POST['P2'];
	//il faut faire autant de requette INSERT que de lignes remplies
	//on parcours l'array $arrayMois
	foreach($arrayMois as $mois=>$value){
		//$mois = l'index qui va aussi servir dans les autres array
		// ex: P1[5] contient la valeur saisie dasn P1 du mois 5
		if(!empty($arrayP1[$mois]) && !empty($arrayP2[$mois] )){
			//si les deux champs P1 et P2 ont été remplis pour le mois considéré on enregistre dans la BDD
			//ta table se nomme parmetres ou parametres ??
			
			$sql='INSERT INTO parametres( annee, Mois, P1, P2 ) VALUES ("'.$annee.'", "'.$mois.'", "'.$arrayP1[$mois].'","'.$arrayP1[$mois].'")';
			//si tu veux enregistrer le nom du mois au lieu du numéro remplaces $sql par:
			//$sql='INSERT INTO parametres( annee, Mois, P1, P2 ) VALUES ("'.$annee.'", "'.$value.'", "'.$arrayP1[$mois].'","'.$arrayP1[$mois].'")';
			//echo "<br />".$sql;
			$requete = $db->query($sql) ;
		}
	
	}
	
}

?>
<!-- ci dessous avec onsubmit="return verif_champs();" on vrifie en javascript que l'année a bien été sélectionnée, sinon le formulaire ne part pas -->
<form action="parametre.php" method="post" name="formulaire" onsubmit="return verif_champs();" >
	<table width="350" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
		<tr><th>Année</th><th>Mois</th><th>P1</th><th>P2</th></tr>
		<?php
			//on va faire une boucle pour afficher tous les mois d'un coup
			//et pour l'année dans la première colonne sur une seule ligne grace au rowspan="12"
			for($n=1;$n<=12;$n++){
				echo '<tr>';
					//première colonne (année)
					
				if($n==1){
					//si première ligne on met la liste déroulante année dans la colonne 1
					echo '<td rowspan="12">'; //colonne qui fait les 12 lignes
					$annee=date("Y");
						echo '<select name="annee" id="annee" >';		
							echo '<option value="">Choisir une année...</option>';

							for($i=2010;$i<=$annee ;$i++){
								echo '<option value="'.$i.'">'.$i.'</option>';
							}
						echo '</select>';
					echo '</td>';
				}
					//suite des colonnes
					echo '<td>'; 
					//ci dessous en metant name= sous la forme xxxxx[] on va recevoir les valeurs des input dans un array $_POST['xxxx']
					//le mois est déja rempli, on met readonly =>il ne peut pas être modifié,
					// si pas de valeur pour le mois P1 P2 les champs seront laissés vides, donc pas d'enr dans la BDD pour le mois
					echo '<input type="text" name="Mois['.$n.']" value="'.$array_list_mois[$n].'" class="input_mois" readonly />';
					echo '</td>';
					echo '<td>'; //colonne P1 					
					echo '<input type="text" name="P1['.$n.']" value="" />';
					echo '</td>';
					echo '<td>'; //colonne P2 					
					echo '<input type="text" name="P2['.$n.']" value="" />';
					echo '</td>';
				echo '</tr>';
			}
		?>
		<tr>
			<td height="50" colspan="4" align="center">
				<input type="submit" name="envoi" value="Envoyer">
			</td>
		</tr>
	</table>
</form>

<div class="foot"><a href="accueil.php">Retour à l'accueil</a></div>

</body>
</html>
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
29 mars 2013 à 09:33
Bonjour Alain_42

en fait j'ai essayé ton code il n'affiche aucun erreur mais il n'enregistre rien dans la base des données :( , c'est quoi le problème
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 29/03/2013 à 10:00
vérifies dans cette requette que le nom de ta table et de tes champs est bien exact:
$sql='INSERT INTO parametres( annee, Mois, P1, P2 ) VALUES ("'.$annee.'", "'.$mois.'", "'.$arrayP1[$mois].'","'.$arrayP1[$mois].'")';

et rectifies j'ai mis deux fois $arrayP1
$sql='INSERT INTO parametres( annee, Mois, P1, P2 ) VALUES ("'.$annee.'", "'.$mois.'", "'.$arrayP1[$mois].'","'.$arrayP2[$mois].'")';
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
29 mars 2013 à 10:04
c'est bon j'ai trouvé l'erreur merci beaucoup pour ton aide , par contre
je veux faire Une table scénario qui liée à stérilisateur et ses paramètres saisies.
Id, id_utilisateur, zone commentaire , recharger le scénario ( récupérer) , tu as pas une idée comment je peux faire ???
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 mars 2013 à 10:10
je ne saisi pas trop ce que tu veux faire ?
et le rapport avec ce que on a fait précédemment ?
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
29 mars 2013 à 10:16
oui je veux après que le l'utilisateur saisie ses valeurs il peut avoir une table scénario qui liée cet utilisateur et ses valeurs saisies et aussi il peut avoir une zone de commentaire , et il peut récupérer son scénario
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 mars 2013 à 13:05
en fait tu veuw qu'après avoir enregistré des valeurs pour une année, ça réaffiche le tableau avec les valeurs déja saisies, plus une zone pour rajouter des commentaires

q? est ce que ta partie saisie des valeurs P1 P2 est dasn la page parametre.php ? c a d dans le mêm script que la partie php qui enregistre ?
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
29 mars 2013 à 13:20
oui exactement que je veux , oui pour la partie saisie c'est dans la page paramètre.php
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 mars 2013 à 13:38
donc ok après enregistrement réussi, on va lire ce qui a été enregistré dans la bdd et afficher un récapitulatif de ce qui a été saisi et effectivement enregistré pour l'année.
Plus une zone de commentaires
Veux tu que les chiffres P1 P2 soient modifiables ?

enregistrement ensuite des commentaires dans quelle table ?
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
29 mars 2013 à 14:08
oui je vais dés l'utilisateur va choisir l'un de scénario dés valeurs qui sont déjà saisie , il peut après modifier les valeurs et il les enregistres de nouveaux , et pour le commentaire en fait je vais faire une table scénario dans laquelle je veux enregistrés tout les scénarios avec les commentaires
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
29 mars 2013 à 15:26
cc Alain_42 tu es toujours là ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 29/03/2013 à 17:46
me revoilà, mais je ne comprend pas tout ?

l'utilisateur va choisir l'un de scénario dés valeurs qui sont déjà saisie

ce que tu appelle un scénario c'est une année avec les valeurs correspondantes ?
ou une année a plusieurs couples de valeurs ?

Plus haut tu parles d'utilisateur, donc un scénario= année+valeurs pour chaque utilisateur. ?
Est ce qu'un utilisateur peut faire plusieurs scénario ?
je ne vois pas comment l'utilisateur va afficher les différents scénario ?

Comment fais tu pour identifier l'utilisateur (saisie login /mot de passe)

Si tu fais une deuxième table ID, Id_utilisateur,Commentaires

il te manque au moins un champ dans la table Annee, mois, P1,P2 pour faire le lien entre les deux.
0
MS2I Messages postés 53 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 5 juillet 2013
2 avril 2013 à 09:32
Bonjour Alain_42
en fait , j'ai une table utilisateur dans laquelle j'ai l'Id-utilisateur et et pour la table Annee , mois, P1, P2 j'ai ajouté un champ id-valeur , du coup la table commentaire j'ai id, id-utilisateur , id-valeur , titre , commentaire .
Je veux quand l'utilisateur se connecte si il avait des valeurs enregistrés il va avoir le tableau qu'on déjà (Anne , mois , P1 ,P2 ) et une liste déroulante qui contient le titre de scénarios (si il a enregistré plusieurs scénarios ) et selon son choix de titre on va afficher le tableau de valeurs qui avait enregistré avec le commentaire et il change ses valeurs après l'affichage .
donc il y a un test qui va voir si l'utilisateur il a déjà des valeurs du coup il va avoir un affichage de tableau avec liste déroulante qui contient les titres de scénarios .
si il a pas de valeurs enregistrés il va entrer ses valeurs dans le tableau et il va pas avoir la liste déroulante dés la première fois qu'il saisie ses valeurs
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 avril 2013 à 20:41
je t'ai mis un MP
0