IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaires multiples dans tableau


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de korospoukine
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 176
    Points : 175
    Points
    175
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    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.

  3. #3
    Membre habitué Avatar de korospoukine
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 176
    Points : 175
    Points
    175
    Par défaut
    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é ?

  4. #4
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Oui c'est ca, si tu fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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

  5. #5
    Membre habitué Avatar de korospoukine
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 176
    Points : 175
    Points
    175
    Par défaut
    Merci pour tes réponses rapides.
    Maintenant je vais essayer de l'implémenter et va falloir que je regarde pour faire mon css ...

  6. #6
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    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...).

  7. #7
    Membre habitué Avatar de korospoukine
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 176
    Points : 175
    Points
    175
    Par défaut
    Bon alors mon css est en place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span id="id_selecteurA"> 
    <input type="checkbox" name="modif[]" value="<?php echo $identifiantLigne; ?>"/>
    </span>
    Avec en css dans mon entete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    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é.

  9. #9
    Membre habitué Avatar de korospoukine
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 176
    Points : 175
    Points
    175
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Heu il te manque quelque chose dans cette partie (regarde mon post plus haut )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ^^

  11. #11
    Membre habitué Avatar de korospoukine
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 176
    Points : 175
    Points
    175
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  12. #12
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Bonjour,

    essayes ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: inventaires.php?num='.$num);
    Lorsque que tu veux concaténer une variable en php il suffit d'utiliser le "."


  13. #13
    Membre habitué Avatar de korospoukine
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 176
    Points : 175
    Points
    175
    Par défaut
    J'ai trouvé comme un grand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

  14. #14
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    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...


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sélection multiple dans un sous formulaire ?
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 09/03/2019, 02h05
  2. Extraire lignes multiples dans tableau
    Par otsch dans le forum Excel
    Réponses: 1
    Dernier message: 23/12/2014, 16h45
  3. Réponses: 1
    Dernier message: 19/06/2011, 20h38
  4. [WD-2003] Sélecttion multiple dans tableau en VBA Word
    Par CSR94 dans le forum VBA Word
    Réponses: 1
    Dernier message: 22/09/2010, 13h17
  5. Réponses: 2
    Dernier message: 19/12/2005, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo