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

PHP & Base de données Discussion :

Modifier un champ d'une bdd à partir d'un tableau php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Modifier un champ d'une bdd à partir d'un tableau php
    Bonjour à toutes et tous,

    Actuellement je bosse sur un projet domotique et j'ai en charge la réalisation du site Web, mais cela fait quelques jours que je me trouve confronté à un problème que je n'arrive pas à résoudre, c'est pour ça que je sollicite votre aide pour m'aider à le résoudre.

    Donc pour commencer par le commencement, sur mon site Web, j'ai une page où j'affiche la liste des lampes (en fonction de la bdd) de la maison pour pouvoir les commander, cela se présente donc sous forme d'un tableau de trois colonnes :
    - une pour le nom des lampes
    - une autre pour leur état (0 ou 1)
    - et enfin une dernière pour l'action à réaliser (avec deux boutons, un pour allumer et un autre pour éteindre)

    L'affichage du tableau ne me pose pas de problème, j'arrive à afficher tout nikel chrome. Ce qui me pose plus de problème est que je veux pouvoir modifier l'état d'une lampe à l'aide de mes pitis boutons.
    En fait j'arrive à changer l'état des lampes mais toutes d'un coup, pas au cas par cas (c'est ce que je veux).

    Pour illustrer ce que je viens de vous dire, voici le bout de code sur lequel je m'arrache les cheveux :

    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
    <?php
                  //J'inclus ma classe contenant la conexion et la recherche des lampes dans la bdd
    		include("ServeurHomeSecurityCommande.php");
    		
    		//Création d'un objet de la classe ServeurHomeSecurityCommande
    		$tableau = new ServeurHomeSecurityCommande;
    		//Connection à la base de données
    		$tableau->connexion_db();
    		//Appel d'une fonction de la classe ServeurHomeSecurityCommande
    		$liste_lampe = $tableau->rechercher_lampe_maison();
    		
    		?>
                        //Création de l'en-tête du tableau
    		    <table width="100%" cellpading="2" cellespacing="0" border="1" color="blue" id="tableau">
    				<tr class="titre">
    					<td width="60%" align="center"><h4>Nom
    lampe</h4></td>
    					<td width="20%" align="center"><h4>Etat</h4></td>
    					<td width="20%" align="center"><h4>Action</h4></td>
    				</tr>
    			<?php
    
    			$m=0;
    			while($lampe = mysql_fetch_row($liste_lampe))
    			{
    		        //Création de la première et deuxième colonne du tableau
                                         $lampe[1] correspond au nom de la lampe
                                         $lampe[2] correspond au champ de l'état de la                   lampe 
    			print "<tr><td align='center'>$lampe[1]</td>
    				       <td align='center'>$lampe[2]</td>";
    				?>
    				<!-- Troisième colonne du tableau-->
    				<td align="center" valign="middle">
    					<form name="bouton<?php= $m?>" action="index.php?page=commandeEclairageLampe" method="post" >
    						<input type="submit" name="allumer" value="" class="submit_allumer">
    						<input type="submit" name="eteindre" value="" class="submit_eteindre">
    					</form></td>
    				</tr>
    				<?php		   
    			
    				$m++;
    
    				if(isset($_POST['allumer'])) //On vérifie que l'allumage d'une lampe a été demandée
    				{
    					mysql_query("UPDATE lampe SET etat='1' WHERE id_lampe = $m"); //On modifie etat de 0 à 1
    				}
    				elseif(isset($_POST['eteindre'])) //On vérifie que l'éteignage d'une lampe a été demandée
    				
    				{
    					mysql_query("UPDATE lampe SET etat='0' WHERE id_lampe = $m  "); //On modifie etat de 1 à 0
    				}
    				
    			}	?>
    Donc ma question est qu'est-ce qui cloche dans mon code pour l'utilisation que je veux en avoir?
    (Je me doute qu'il doit y avoir un problème avec la variable $m)

  2. #2
    Membre éprouvé
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 808
    Points : 912
    Points
    912
    Par défaut
    Bonjour,
    Après avoir lu ton code, il fait exactement ce que tu lui demandes. C'est à dire changer toutes les lampes avec l'état que tu lui demandes: allumé ou éteind.
    Je te conseillerais plutôt de penser soit en AJAX, sinon au lieu de bouton mettre des cases à cocher et un bouton submit à la fin du tableau. Ou alors en plus rébarbatif un form pour chaque lampe avec un traitement en début de page plutôt qu'au milieu d'une boucle. Mais je ne suis pas très chaud pour cette dernière option.

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    bonjour kabkab,

    tout d'abord merci pour ta réponse, ensuite j'aurais aimé savoir si tu ne verrais pas un moyen pour que dans ma boucle je puisse assigner à chaque ligne récupérée (donc à chaque ligne générée) une valeur incrémentée de $m au lieu que chaque ligne prenne toutes les valeurs possibles de $m.
    Je pense que c'est pour cela que à chaque appuie sur un bouton, l'état de toutes les lampes change.
    Si ça se trouve c'est tout bête mais là j'avoue je sèche..Sinon ben je pense que je vais m'orienter sur des cases à cocher

  4. #4
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Voici la solution :
    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
     
    ?>
    <!--On créer l'en-tête du tableau-->
        <table width="100%" cellpadding="2" cellspacing="0" border="1" color="white" id="tableau">
               <tr class="titre">
    			<td width="60%" align="center"><h4>Nom lampe</h4></td>
    			<td width="20%" align="center"><h4>Etat</h4></td>
    			<td width="20%" align="center"><h4>Action</h4></td>
    	   </tr>
    <?php
    //Déclaration d'une variable dont la valeur correspondra à chaque ligne du tableau	
    $m=0;
    while($champs_table_lampe = mysql_fetch_array($liste_lampe))
    			{
    	//Création de la première et deuxième colonne du tableau
    	?>
    	      <form name="bouton" action="index.php?page=commandeEclairageLampe" method="post" >
    	<?php
    		print "<tr><td align='center'>$champs_table_lampe[1]</td>
    			       		   <td align='center'>$champs_table_lampe[2]</td>";
    //On créer des champs cachés correspondants aux deux boutons et on leur assigne la valeur de id_lampe pour chaque ligne du tableau		   
    		print "<input type=\"hidden\" name=\"allumer_lampe\" value=\"$champs_table_lampe[0]\">";
    		print "<input type=\"hidden\" name=\"eteindre_lampe\" value=\"$champs_table_lampe[0]\">";
    			?>
    <!-- Troisième colonne du tableau-->
    	<td align="center" valign="middle">
    		<form name="action_boutons" action="index.php?page=commandeEclairageLampe" method="post">
    			<!--On créer un champ caché correspondant à l'action sur un bouton auquel on assigne une variable pour son traitement-->
    				<input type="hidden" name="submission" value="<?php= $action?>" >
    				<input type="image" src="images/valider.png" onclick="submission.value='allumer_lampe'" alt="allumer" >
    					<input type="image" src="images/eteindre.png" onclick="submission.value='eteindre_lampe'" alt="eteindre" >
    		</form>
    	  </tr>
    </form>		
    <?php
    //Incrémentation de la variable
    $m++;
    }	
    //Boucle permettant de déterminer l'action à mener si il y a eu appuie sur un des boutons	
          if ( isset( $_POST['submission'] ) && $_POST['submission'] == "allumer_lampe" ) 
          { 
                $action = "allumer_lampe" ; 
           } else {
     
     
    $action = "eteindre_lampe" ; 
    			}
     
    			//On vérifie si il y a eu appui sur un bouton 	
    			if(isset($_POST['submission'])) 
    			{
    				//Selon le bouton appuyé, on exécute l'action correpondante 
    				switch($action)
    				{
    					case 'allumer_lampe':
    						$requete_allumer_lampe = "UPDATE lampe SET etat='1' WHERE id_lampe =".$_POST['allumer_lampe'];
    						mysql_query($requete_allumer_lampe); ; //On modifie etat de 0 à 1
    						break;
     
    					case 'eteindre_lampe':
    						$requete_eteindre_lampe = "UPDATE lampe SET etat='0' WHERE id_lampe =".$_POST['eteindre_lampe'];
    						mysql_query($requete_eteindre_lampe); //On modifie etat de 1 à 0
    						break;
    				}
    			}
     
    			?></td><?php
    		}

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

Discussions similaires

  1. [MySQL] modifier le nom d'un champ d'une table à partir du php
    Par mounana199' dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/05/2014, 23h26
  2. Modifier des champs d'une table a partir du VB
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/07/2006, 14h58
  3. Réponses: 12
    Dernier message: 19/06/2006, 16h26
  4. [MySQL] Comment ecrire dans une BDD à partir d'un tableau ?
    Par weed dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/09/2005, 15h53
  5. remplir un champ d'une table à partir d'une autre table
    Par MrsFrizz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/02/2005, 16h48

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