Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 25/07/2011, 09h38   #1
Membre actif
 
Avatar de korospoukine
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 152
Points : 152
Envoyer un message via MSN à korospoukine
Par défaut Formulaires multiples dans tableau

Bonjour,

Je souhaite faire un site en php afin de recenser/reserver des emplacements pour des serveurs.
J'ai une base qui se met à jour dynamiquement 2 fois par jour afin de connaitre ce qui est en place.
J'ai une deuxième base qui va me permettre de rentrer les informations suivantes : les reservations d'emplacements pour les prochains serveurs, ainsi que si des emplacements sont HS.

J'ai réussi à générer mes tableaux en récupérant les informations dans les deux bases, mais ou je coince c'est pour la mise à jour. En effet, si je demande une mise à jour, tout mon tableau se met à jour ...

En gros voici le cheminement de mon script :
- Je cherche les châssis de type xxx
- Je les affiches avec l'information SAN ou pas SAN
- Je construit un tableau de 8 cases avec les informations suivantes
- si je trouve quelque chose dans la base une : j'affiche
- sinon je regarde base 2
- si kk chose j'affiche plus un bouton pour supprimer la reservation
- si rien du tout je demande les infos pour reserver.



Voici mon code :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
	include("connect.php");
	$num = $_GET['num'];
	$req = "SELECT EnclosureName, SAN FROM ActiveOnBoards WHERE Repartition=$num ORDER BY EnclosureName";
	$tablo = mssql_query($req) or exit(mssql_error());
	while ($recherche = mssql_fetch_array($tablo))
		{?>
			<fieldset class="fieldDem">
				Chassis <?php 	
								echo $recherche['EnclosureName']; // affiche le nom du châssis et s'il a du SAN ou non
								if ($recherche['SAN']=="1") echo " avec SAN";
								else echo " sans SAN";
								$chassis = $recherche['EnclosureName']
						?>
				<table border="2" width="100%" Color="black">
					<tr>
						<?php
						for ($i=1; $i<9; $i++) //construit la première zone pour les lames des slots 1 à 8
						{ 
							//requete qui tape dans la base Blade qui se met à jour toute seule
							$req2 = "SELECT SerialNumber, Enclosure, Slot, Model FROM Blades WHERE Enclosure='$chassis' AND Slot=$i";
							$tablo2 = mssql_query($req2) or exit(mssql_error());
							$rechercheBlade = mssql_fetch_array($tablo2);
 
							//requete qui tape dans la base pour reservation
							$req3 = "SELECT * FROM BladesReserved WHERE Enclosure='$chassis' AND Slot=$i";
							$tablo3 = mssql_query($req3) or exit(mssql_error());
							$rechercheResa = mssql_fetch_array($tablo3)
 
						?>
							<td width="10%" class="menu" valign=top>								
								<?php
									switch ($rechercheBlade['Slot'])//recherche dans la base qui se met à jour toute seule
										{
										case $i://on check si il y a une entrée en base pour ce slot													{
											echo $i;
											?>
											<FONT size=2><br>	
											<?php
											echo 'SerialNumber:<br>';
											$SN= $rechercheBlade['SerialNumber'];
											echo substr("$SN",0,9);	
											echo '<br>Model:<br>';
											echo $rechercheBlade['Model'];
											break;
										default://si rien en base alors :
											switch ($rechercheResa['Slot'])//recherche dans la base de reservation
												{
												case $i:
													echo $i;
													?>
													<FONT size=1 color=blue>
													<form name="Delete" method="post">
													<?php
													echo 'SerialNumber: ';
													echo $rechercheResa['SerialNumber'];	
													echo '<br>Model: ';
													echo $rechercheResa['Model'];
													echo '<br>Projet: ';
													echo $rechercheResa['Project'];
													echo '<br>Reserve le: <br>';														
													echo $rechercheResa['Date'];
													?>
													<input type="submit" name="Delete" value="Delete"/>
													</form>
													<?php
													if (isset ($_POST['Delete']))
														{
														//On prépare la commande sql d'insertion
														$sql = "DELETE FROM BladesReserved WHERE Enclosure='$chassis' AND Slot=$i";
														echo $sql;
														/*on lance la commande (mysql_query) et au cas où,
														on rédige un petit message d'erreur si la requête ne passe pas (or die)
														(Message qui intègrera les causes d'erreur sql)*/
														mssql_query ($sql);
														//mssql_free_result ($sql);
														// on ferme la connexion
														//mssql_close();
														}
													break;
												default:
													echo $i;
													?>
													<FONT size=1><br>
													<form name="MAJ" method="post" action="inventaires.php?num=<?php echo $num?>">
													<input type=text maxlength="11" size="13" name=SerialNumber value=SerialNumber>
													<select name="Model">
													<option value="choix1">ProLiant BL460c</option>
													<option value="choix2">ProLiant BL480c</option>
													<option value="choix3">ProLiant BL620c</option>
													<option value="choix4">server BL870c</option>
													<option value="choix4">HP SB40c</option>
													</select>
													<input type=text maxlength="11" size="13" name=Project value=Project>
													<input type="checkbox" name="case" id="case" /> <label for="case">HS </label><input type="checkbox" name="case" id="case" /> <label for="case">Reserved</label>
													<input type="submit" name="MAJ" value="MAJ"/>
													</form>
													<?php
													if (isset ($_POST['MAJ']))
														{
														//On construit la date d'aujourd'hui strictement comme sql la construit
														$today = date("d-m-y");
														echo $today;
														//On prépare la commande sql d'insertion
														$sql = "INSERT INTO BladesReserved VALUES('$chassis','$i','$SerialNumber','$Model','$Project','$today','$case')";
														echo $sql;
														/*on lance la commande (mysql_query) et au cas où,
														on rédige un petit message d'erreur si la requête ne passe pas (or die)
														(Message qui intègrera les causes d'erreur sql)*/
														mssql_query ($sql);
														// on ferme la connexion
														//mssql_close();														
														}
												}
										}
								?>
							</td>
							<?php		
						}
						?>
					</tr>
Je sais que mes variables pour mon deuxième formulaires (MAJ) ne sont pas bonnes, je ne sais pas encore comment les renseigner.

Voici un petit apercu de ce ca donne :

Si vous trouvez que ce n'est pas clair n'hesitez pas. je répondrais avec plaisir.

Merci d'avance pour vos conseils
korospoukine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 09h59   #2
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Bonjour,

si j'ai bien compris ton problème, tu voudrais mettre à jour que ce qui a été modifié?

Si c'est le cas tu pourrais faire un checkbox, si cette checkbox est coché, j'update la ligne en question.

Si tu ne vois pas comment faire je reste dispo.
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 10h10   #3
Membre actif
 
Avatar de korospoukine
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 152
Points : 152
Envoyer un message via MSN à korospoukine
Oui c'est cela. Je ne souhaite que mettre à jour la case qui a été modifiée.
Les modifs multiples sont exeptionnelles. Donc pour un premier site ce ne sera qu'une case à la fois.

En parlant de checkbox en gros c'est une case à cocher comme mon HS et Réservé ?
korospoukine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 10h22   #4
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Oui c'est ca, si tu fais ceci:

Code :
<input type="checkbox" name="modif[]" value="<?php echo $identifiantLigne; ?>"/>
en faisant cela tu pourras récupéré un tableau modif qui sera composé que des identifiant qui sont cochés.

Le petit plus qui pourrait être sympa serait de caché cette checkbox (en CSS par exemple) et que des que tu détectes un changement (onchange) tu passes ta chexbox a true. Comme ca l'utilisateur n'a pas besoin de le faire lui-même
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 10h41   #5
Membre actif
 
Avatar de korospoukine
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 152
Points : 152
Envoyer un message via MSN à korospoukine
Merci pour tes réponses rapides.
Maintenant je vais essayer de l'implémenter et va falloir que je regarde pour faire mon css ...
korospoukine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 10h52   #6
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Pour ta partie CSS, la syntaxe est :

Ceci marche sous IE,FireFox et Chrome (au moins cela ^^). Ceci permet de ne pas afficher un bloc (div,ul,li,input...).
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 11h27   #7
Membre actif
 
Avatar de korospoukine
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 152
Points : 152
Envoyer un message via MSN à korospoukine
Bon alors mon css est en place :
Code :
1
2
3
<span id="id_selecteurA"> 
<input type="checkbox" name="modif[]" value="<?php echo $identifiantLigne; ?>"/>
</span>
Avec en css dans mon entete :
Code :
1
2
3
<style type="text/css">
	#id_selecteurA{display:none;}
</style>
Par contre je vais etre franc, je ne comprend pas ta solution de mettre une checkbox qui s'implémente sur changement ... Je ne voie pas du tout comment l'implémenter. Ca ne fait que deux jours que j'ai attaqué le php
korospoukine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 12h58   #8
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Par contre pour l'implémenter de manière "automatique" il faudrait le faire en javascript. Je ne suis pas un fortiche du javascript désolé.
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 15h19   #9
Membre actif
 
Avatar de korospoukine
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 152
Points : 152
Envoyer un message via MSN à korospoukine
Ca avance, mais ce n'est toujours pas cela.

J'ai réussi à récuperer toutes mes variables de la manière dont je le souhaite. Mais dès que je clique sur la MAJ, cela le fait pour tous les formulaires ...

Voici ce que j'ai modifié :
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
echo $i;
?>
<FONT size=1><br>
<form name="MAJ" method="post" action="inventaires.php?num=<?php echo $num?>">
<input type=text maxlength="11" size="13" name=SerialNumber value=SerialNumber>
<select name="Model">
<option value="ProLiant BL460c">ProLiant BL460c</option>
<option value="ProLiant BL480c">ProLiant BL480c</option>
<option value="ProLiant BL620c">ProLiant BL620c</option>
<option value="server BL870c">server BL870c</option>
<option value="HP SB40c">HP SB40c</option>
</select>
<input type=text maxlength="11" size="13" name=Project value=Project>
<label><input type="checkbox" name="case" value="HS" />HS</label>
<label><input type="checkbox" name="case" value="Reserved" />Reserved</label>
<label><input type="checkbox" name="case" value="MAJ" />MAJ</label>
<br>
<input type="submit" name="MAJ" value="MAJ"/>
</form>
<?php
if (isset ($_POST['MAJ']) AND isset ($_POST['case'])!='')
	{
	$SerialNumber = $_POST['SerialNumber'];
	$Project = $_POST['Project'];
	$Model = $_POST['Model'];
	$case = $_POST['case'];
	echo $SerialNumber;
	echo $Project;
	echo $Model;
	echo $case;
	//On construit la date d'aujourd'hui strictement comme sql la construit
	$today = date("d-m-y");
	echo $today;
	//On prépare la commande sql d'insertion
	$sql = "INSERT INTO BladesReserved VALUES('$chassis','$i','$SerialNumber','$Model','$Project','$today','$case')";
	echo $sql;
	/*on lance la commande (mysql_query) et au cas où,
	on rédige un petit message d'erreur si la requête ne passe pas (or die)
	(Message qui intègrera les causes d'erreur sql)*/
	mssql_query ($sql);
	// on ferme la connexion
	//mssql_close();														
	}
Je ne sais pas comment faire pour que un seul formulaire se mette à jour
korospoukine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 15h46   #10
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Heu il te manque quelque chose dans cette partie (regarde mon post plus haut )

Code :
1
2
<input type="checkbox" name="caseMAJ[]" value="<?php echo $num ?>;" />
Sinon autre facon (peut être plus simple), puisque je vois que tu as fait un form pour chaque colonne. Change ton action (dans le form) et envoie le sur un autre page php (modifElement.php par exemple) qui contiendrai ta requête update et par un header te renvoie sur ta page inventaire une fois terminer.

Parce que je crois que ton problème c'est que tu testes les mêmes valeurs pour chaque colonne (or tu veux modifier qu'une seul).

Je sais pas si j'ai été claire ^^
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h17   #11
Membre actif
 
Avatar de korospoukine
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 152
Points : 152
Envoyer un message via MSN à korospoukine
Merci pour la solution. Je suis passé par un formulaire intermédiaire.

Mes MaJ se passent bien. Par contre j'ai un soucis avec le header, je ne sais pas comment le faire de manière dynamique :

Code :
1
2
3
4
5
<?php
$num = $_GET['num'];
header('Location: inventaires.php?num=.$num');  
session_start();
?>
Ma page de mise à jour recoit bien la variable num, mais je ne sais pas l'implémenter pour le header. En tout cas cela fonctionne si je mets une valeur en dur.
korospoukine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h22   #12
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Bonjour,

essayes ca:

Code :
header('Location: inventaires.php?num='.$num);
Lorsque que tu veux concaténer une variable en php il suffit d'utiliser le "."

__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h31   #13
Membre actif
 
Avatar de korospoukine
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 152
Points : 152
Envoyer un message via MSN à korospoukine
J'ai trouvé comme un grand
Code :
1
2
3
4
5
<?php
$num = $_GET['num'];
header('Location: inventaires.php?num='.$num);  
session_start();
?>
Tout fonctionne comme je le souhaite.
Merci bcp pour tes conseils

PS: je viens juste de voir que tu as posté ce que j'avais trouvé
korospoukine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h47   #14
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Ce qui faut savoir avec la concaténation :

En PHP, le ' (simple apostrophe) n'interprétera pas les variable à l'intérieur... Donc il faut les concaténer avec un . (point) Exemple : 'Je m'appelle '.$mon_prenom;

", la double apostrophe, elle comprends les variables. Tu peux donc écrire : "Je m'appelle $mon_prenom" et elle interprétera ta variable.

La méthode était bonne, seul un soucis de syntaxe était présent...

Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h55.


 
 
 
 
Partenaires

Hébergement Web