Page 1 sur 2

Lancer une requête sql avec boite à cocher

Posté : 20 sept. 2013, 20:56
par Michel6359
Bonsoir

Je suis occupé sur une gestion de parc matériel , et je désire faire en sorte que lorsque je coche une boite je lance cette requête , mais je ne vois pas comment faire .

Code : Tout sélectionner

</td> <td width="1%" class="noir"> <input name="Retour" type="checkbox" value="oui" /> <?php $id = $datas['id']; if($_GET['retour'] == oui ){ // ON ENREGISTRE LE RETOUR DANS LA TABLE MATERIEL3 // $sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id = ".$id; } ?> </td>

Merci d'avance pour votre aide

Re: Lancer une requête sql avec boite à cocher

Posté : 20 sept. 2013, 21:30
par moogli
Salut,

Si c'est juste au clic il te faut une requête Ajax vers un script serveur qui fera le travail.

Sinon c'est gestion de formulaire classique (en utilisant la notation tableau pour les noms des inputs).

@+

Re: Lancer une requête sql avec boite à cocher

Posté : 20 sept. 2013, 21:53
par Michel6359
RE

Merci

J'ai fais ce bout de code mais cela ne fonctionne pas , a ce jour je clic sur un lien vers script php qui exécute la requête , mais je dois le faire pour chaque ligne , donc assez long , je voudrai que en cochant la boite à cocher la requête se fasse pour chaque ligne.
</td>
<td width="1%" class="noir">
<form action="accueil.php?action=11" method="get">
<input name="Retour" type="checkbox" value="oui" />
<input name="OK" type="submit" />
</form>



<?php
$id = $datas['id'];
if($_GET['retour'] == oui ){

// ON ENREGISTRE LE RETOUR DANS LA TABLE MATERIEL3 //
$sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id = ".$id;

}

?>
</td>
Merci pour votre aide cela fais des jours que je cherche mais je ne trouve pas

Re: Lancer une requête sql avec boite à cocher

Posté : 20 sept. 2013, 22:53
par xTG
Tu peux utiliser une notation tableau pour tes cases à cocher :
</td>
<td width="1%" class="noir">
<form action="accueil.php?action=11" method="get">
<input name="check[11]" type="checkbox" value="oui" /> Article 11
<input name="check[12]" type="checkbox" value="oui" /> Article 12
<input name="check[13]" type="checkbox" value="oui" /> Article 13
<input name="OK" type="submit" />
</form>
Une checkbox est présente dans l'array $_POST uniquement si elle a été coché.
$id = implode($_POST['check'], ',');
$id[strlen($id) - 1] = ''; // supprimer la dernière virgule inutile
$sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id IN (".$id.")";
Attention cet exemple n'est pas protégé contre les injections SQL.

Re: Lancer une requête sql avec boite à cocher

Posté : 20 sept. 2013, 23:04
par Michel6359
Bonsoir

je vais voir ça , et tiens au courant .

Merci beaucoup

Re: Lancer une requête sql avec boite à cocher

Posté : 20 sept. 2013, 23:22
par Michel6359
Re

Non ça ne marche pas

Warning: implode() [function.implode]: Invalid arguments


Désolé

Re: Lancer une requête sql avec boite à cocher

Posté : 21 sept. 2013, 07:23
par xTG
http://fr2.php.net/implode
J'ai inversé les deux arguments.

Re: Lancer une requête sql avec boite à cocher

Posté : 21 sept. 2013, 09:23
par dix2
Tu peux utiliser une notation tableau pour tes cases à cocher :
</td>
<td width="1%" class="noir">
<form action="accueil.php?action=11" method="get">
<input name="check[11]" type="checkbox" value="oui" /> Article 11
<input name="check[12]" type="checkbox" value="oui" /> Article 12
<input name="check[13]" type="checkbox" value="oui" /> Article 13
<input name="OK" type="submit" />
</form>
Une checkbox est présente dans l'array $_POST uniquement si elle a été coché.
$id = implode($_POST['check'], ',');
$id[strlen($id) - 1] = ''; // supprimer la dernière virgule inutile
$sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id IN (".$id.")";
Attention cet exemple n'est pas protégé contre les injections SQL.
if (isset($_POST['check'])) {
    $id = implode(',', array_keys($_POST['check']));
    $sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id IN (".$id.")";
}
dix2

Re: Lancer une requête sql avec boite à cocher

Posté : 21 sept. 2013, 13:12
par Michel6359
Bonjour

Bon ça ne marche toujours pas , je vous post mon code complet si ça peut aider , en faite vous remarquerez que j'ai un lien qui exécute la requête qui me permet faire le pointage du retour matériel au parc , mais je dois le faire pour chaque matériel un peu long lorsque le chantier comporte beaucoup de matériels , donc je désire une boite a cocher qui réalisera le pointage pour chaque matériel dont la boite est cocher. Mon code pour cette partie et entre //// ICI ///// et /////FIN ////// Encore merci pour votre aide.

<?php
//------------------------------------------------------------------------ GESTION DES ETAT DES PRETS MATERIELS - ACTION 11 ---------------------------------------------//		
		
	if($_GET['action'] == 11 ){  /// ACTION 11 - GESTION DES ETAT DES PRETS MATERIELS - //
		
    echo '<h3 class="tit">Messages Systèmes</h3>
  
         <p class="msg done">Vous êtes sur les Etats des Prêts Matériels</p>'; 
        
   
  $db = mysql_connect('localhost', '**, '***');
  mysql_select_db('***', $db);
  mysql_query("SET NAMES UTF8"); 
   $sql = "SELECT *,DATE_FORMAT(date_affiche, '%d/%m/%Y %Hh:%i' ) AS 'datef',DATE_FORMAT(date_sortie, '%d/%m/%Y' ) AS 'date_de_sortie'  FROM materiels3 WHERE disponibilite >= 2   ORDER BY designation";  // ON RECHERCHE LE MATERIEL EN DISPONIBILITE = 2 DONC SUR CHANTIER //
  $datedujour =  date('Y/m/d') ;

   
  $req = mysql_query($sql) or die (mysql_error());
  mysql_query("SET NAMES UTF8"); 
  mysql_query("'encoding' => 'utf8'"); 

  echo '<table width="100%" border="1" cellspacing="0" cellpadding="0" id="menuTable" class="display">';


  echo '<thead><tr>';
  echo '<th style="color:#046380;text-align:center;"><strong>Mise à jour</strong>  
  </th>
  
 <th style="color:#046380; text-align:center;">Designation du Matériel</th>
 <th style="color:#046380; text-align:center;">Identification</th>
 <th style="color:#046380; text-align:center;">Etat</th>
 <th style="color:#046380; text-align:center;">Disponibilité</th>
 <th style="color:#046380; text-align:center;">Attribution</th>
 <th style="color:#B9121B; text-align:center;">Chantier</th>
 <th style="color:#B9121B; text-align:center;">Date de Sortie</th>
 <th style="color:#B9121B; text-align:center;">Prêt/J</th>
 <th style="color:#B9121B; text-align:center;">Action</th>
 <th style="color:#B9121B; text-align:center;">Cocher</th>
 </tr></thead>';
  
  
  
  
  echo '<tbody>';
  while ($datas = mysql_fetch_assoc($req)) {
  mysql_query("SET NAMES UTF8"); 
  mysql_query("'encoding' => 'utf8'"); 	  
  echo '<tr>';
  ?>
  
  
  
 <td width="9%" class="rouge" id="datef-<?php echo $datas['id']; ?>" ondblclick="enregistre_controle(<?php echo $datas['id']; ?>, this, 'datef', 'texte')">
  <?php echo $datas['datef']?></td>

<td class="noir" id="designation-<?php echo $datas['id']; ?>" ondblclick="enregistre_controle(<?php echo $datas['id']; ?>, this, 'designation', 'texte')">
  <?php echo $datas['designation']?></td>
  
<td class="vert" id="reference-<?php echo $datas['id']; ?>" ondblclick="enregistre_controle(<?php echo $datas['id']; ?>, this, 'reference', 'texte')">
 <?php echo $datas['reference']?></td>
  
<td class="vert">


 <?php

   if( $datas['etat'] == 0  ) // CONFORME //
  
     {  echo '<img name="ok" src="png/ok.png" width="40" height="40" alt="" /> </td>'; 
 
     } 
	 
	 if( $datas['etat'] == 1  ) {  //   NON CONFORME //
   

      echo '<img name="ok" src="png/attention1.png" width="40" height="40" alt="" /></td>';
	
	         }
			 
	 if( $datas['etat'] == 5  ) {  // CONTROLE A - 30 JOURS  //
   

      echo '<img name="ok" src="png/J30.png" width="40" height="40" alt="" /></td>';
	
	         }	 
			 
	 	 
	 if( $datas['etat'] == 3  ) {  // HORS SERVICE  //
   

      echo '<img name="ok" src="png/hors_service.png" width="40" height="40" alt="" /></td>';
	
	         }	
			 
	 if( $datas['etat'] == 2  ) {  // EN REPARATION //
   

      echo '<img name="ok" src="png/reparation (1).png" width="50" height="50" alt="" /></td>';
	
	         }		 
			 	 
			 
?> 

  
  <?php //  if( $datas['disponibilite'] ==2)  {  // PRET INFERIEUR A 60 JOURS TEXTE NOIR   //  ?>
   
            <td class="vert" id="disponibilite-<?php echo $datas['id']; ?>" ondblclick="enregistre_controle(<?php echo $datas['id']; ?>, this, 'disponibilite', 'texte')">
  <?php echo $datas['disponibilite']?></td>
  	                          
                              <?php  //}   // FERME CONDITION ?>
                               
     <?php // if( $datas['disponibilite'] ==3) {  // PRET SUPERIEUR A 60 JOURS TEXTE ROUGE   //  ?>
   
               
                               
							   <?php //  }  // FERME CONDITION ?> 
  

<td width="8%" class="noir" id="nom_retrait-<?php echo $datas['id']; ?>" ondblclick="enregistre_controle(<?php echo $datas['id']; ?>, this, 'nom_retrait', 'texte')">
  <?php echo $datas['nom_retrait']?></td>
  
<td class="noir" id="chantier-<?php echo $datas['id']; ?>" ondblclick="enregistre_controle(<?php echo $datas['id']; ?>, this, 'chantier', 'texte')">
  <?php echo $datas['chantier']?></td> 

<td class="vert" id="date_sortie-<?php echo $datas['id']; ?>" ondblclick="enregistre_controle(<?php echo $datas['id']; ?>, this, 'date_sortie', 'texte')">
  <?php echo $datas['date_de_sortie']?></td> 
  
  
  
   <?php  
   
   
	$date_pret = $datas['date_sortie']; // Date de sortie format français  >> 00/00/0000 //
    // $date_sortie = date('Y-m-d', strtotime($date_pret)); // On met la date au format anglais pour calcul //
	$datedujour =  date('Y-m-d') ;  // Date du jour //
    
    $nbjours = floor((strtotime($datedujour) - strtotime($date_pret)+60*60*1)/(60*60*24));
    $dispo = $datas['disponibilite'];
	if ($dispo = '0' ){
	$id = $datas['id'];
	mysql_query("UPDATE materiels3 SET date_sortie='0000-00-00 00:00:00' WHERE id='$id' LIMIT 1");
	} 
	
?>

 	 
	<?php if( $nbjours < 60  )  {  // PRET INFERIEUR A 60 JOURS TEXTE NOIR   //  ?>
   
               <td class="noir"><center><?php echo $nbjours; ?></td>	
	                          
                              <?php }   // FERME CONDITION ?>
                               
     <?php if( $nbjours > 60  ) {  // PRET SUPERIEUR A 60 JOURS TEXTE ROUGE   //  ?>
   
               <td class="rouge"><center><?php echo $nbjours; ?></td>	
	                          
                               <?php }  // FERME CONDITION ?>                          
  
<td width="6%" class="noir">   
<a href="javascript:BRB_PHP_DelWithCon('Ajout_Materiels/sortie.php','id',<?php echo $datas['id']; ?>,'Vous allez modifier une fiche Matériels ? ');"><img name="supprimer" src="images/fleche10.png" width="20" height="20" alt="" /></a>

<a href="javascript:BRB_PHP_DelWithCon('Fonction_php/pointage-retour2.php','id',<?php echo $datas['id']; ?>,'Voulez-vous saisir le pointage du retour de ce Matériel ? ');"><img name="Retour Matériels" src="images/retour.png" width="20" height="20" alt="" /></a>

<a href="javascript:BRB_PHP_DelWithCon('Fonction_php/Supprimer2.php','id',<?php echo $datas['id']; ?>,'Êtes-vous sûr de vouloir supprimer la fiche Matériel ? ');"><img name="supprimer" src="images/file_delete.png" width="17" height="17" alt="" /></a>

</td>
 


<td width="1%" class="noir">
 <?php  ////////////////////////////////////////////// ICI ////////////////////////////////////
 
 echo '<form action="accueil.php?action=11" method="post">';
 echo '<input type="checkbox" name="check[]"  value="'. $datas['id'].' "/>';
 $id =$datas['id']; 
if (isset($_POST['check'])) {
    $id = implode(',', array_keys($_POST['check']));
    $sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id IN (".$id.")";

 }
 echo '<input name="OK" type="submit" /></form>';

///////////////////////////////FIN ////////////////////

?>

<?php 
 
//if(isset($_POST['retour'])){
// ON ENREGISTRE LE RETOUR DANS LA TABLE MATERIEL3 // 
//$id = $datas['id'];
//$sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id = ".$id;
//}
?>
 

</td>
<?php
  echo '</tr>';
  }
  echo '</tbody>';
  echo '<tfoot><tr><th colspan="12">&nbsp;</th></tr></tfoot>';
  echo '</table>';
  mysql_free_result($req);
  mysql_close();
  
 }  // ON FERME GESTION DES ETATS DES PRETS MATERIELS - ACTION 11 //
?>  


Re: Lancer une requête sql avec boite à cocher

Posté : 21 sept. 2013, 21:52
par yann18
ta requête d'update n'est jamais envoyée au serveur mysql car il te manque la fonction mysql_query(...).De plus il te faut récupérer les valeurs(value) des checkboxs donc tu peux enlever arrays_keys dans implode

  <?php  ////////////////////////////////////////////// ICI ////////////////////////////////////
 
 echo '<form action="accueil.php?action=11" method="post">';
 echo '<input type="checkbox" name="check[]"  value="'. $datas['id'].' "/>';
 $id =$datas['id'];
if (isset($_POST['check'])) {
    $id = implode(',', $_POST['check']);
    $sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id IN (".$id.")";
   $result=mysql_query($sql);

//en cas d'échec de la mise à jour, on affiche le message d'erreur
  if (!$result) {
   echo "erreur sql liée  à la mise à jour:\n" ;
    die( mysql_error());
}
 }
 echo '<input name="OK" type="submit" /></form>';

///////////////////////////////FIN ////////////////////

?>
dans tous les cas vérifies toujours que tu reçois les données du formulaire en faisant un debug de $_POST.

Re: Lancer une requête sql avec boite à cocher

Posté : 22 sept. 2013, 00:01
par Michel6359
Bonsoir

Merci beaucoup

je vais tester cela et je tiens au courant

Bonne fin de soirée !

Re: Lancer une requête sql avec boite à cocher

Posté : 22 sept. 2013, 01:29
par Michel6359
Bonsoir

Bon ça marche mais seulement quand je sélectionne que une ligne quand je fais plusieurs lignes cela ne fonctionne pas .

Mais bon on va y arriver , merci encore pour votre aide

Maintenant pourquoi cela ne fonctionne pas pour plusieurs lignes ?

Ou insérer dans ce cas mon >> <input name="OK" type="submit" /></form>
Car pour l'instant le bouton de submit et a chaque ligne ? J'ai essayé plusieurs possibilités mais cela ne fonctionne pas.

Merci

Re: Lancer une requête sql avec boite à cocher

Posté : 22 sept. 2013, 11:53
par xTG
Donc tu fais un formulaire pour chaque ligne actuellement ?
Voilà pourquoi cela ne fonctionne pas.

Il te faut un truc du genre :
<form>
<?php
while(...)
{
  // affichage de tes données => une itération pour une ligne donc
}
?>
<input type="submit">
</form>
Et là tu auras toutes tes lignes dans le formulaire.

Re: Lancer une requête sql avec boite à cocher

Posté : 22 sept. 2013, 12:10
par Michel6359
Bonjour
Merci de continuer à m'aider


Le dernier message me dit que je dois refaire un while pourtant déjà il est déjà.
Pourtant vu la capture je récupère bien id du matériel

Image



J'ai essayer ça mais pas de succès
<?php
/* ------------------ CASE A COCHER ------------------ */
 
    if (isset($_POST['champ'])) {
   
	for ($i=0;$i<sizeof($_POST['champ']);$i++) {
 
	$champ[$i] = $_POST['champ'][$i];
	$numero_materiel = $_POST['champ'][$i];
 
	$query2 = mysql_query("SELECT * materiels3  WHERE Id = '$numero_materiel'");
	$result_donnees2=mysql_fetch_assoc($query2);
    
	//"UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id IN (".$id.")";
	$query ="UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id = '.$champ[$i].'";
	$result = mysql_query($query)  or die('Erreur SQL ! '.$query.'<br/>'.mysql_error());
    
	//$query = 'DELETE FROM minichat WHERE id = '. $champ[$i];
	
 
 
    }
  }
 
 
?>	 
 <td width="1%"><input name="champ[]" type="checkbox" value="<?php echo $datas["id"]; ?>"/><?php echo $datas["id"]; ?></td>
 
 
<?php
  echo '</tr>';
  }
  
  echo '';
  echo '</tbody><tfoot><tr><th colspan="12">&nbsp;</th></tr></tfoot>';
  
    
  
  echo '</table><form action="accueil.php?action=11" method="POST"><input name value="Retour sélection" type="submit" /></form>';
  mysql_free_result($req);
  mysql_close();
  
 }  // ON FERME GESTION DES ETATS DES PRETS MATERIELS - ACTION 11 //
?>  



Re: Lancer une requête sql avec boite à cocher

Posté : 22 sept. 2013, 12:43
par xTG
Oui mais justement ton form ne doit pas être dans ton while (car sinon cela fait un form par ligne) mais en dehors.