cocher des checkbox puis modifier

Eléphant du PHP | 86 Messages

05 nov. 2010, 11:22

Bonjour!
Je vous expose un problème auquel je suis confronté depuis un bout de temps.J'ai affiché un ensemble d'enregistrement dans un formulaire avec un checkbox pour chaque ligne.L'idée est de récupérer les informations et le nombres des lignes cochées dans des variables de sessions pour pouvoir les renvoyer sur un autres pages en vue de procéder à leur traitement
voici mon code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> 
	<title>Acceuil administrateur</title>
	<link href="feuille.css" rel="stylesheet" type="text/css" />
</head>


<body>
	<div id="bloc-fixe">
	<a href="deconnexion.php">
	<?php 
	 session_start(); 
	 echo '<br/>';
	 //echo '&nbsp;&nbsp;';
	 $user_con=$_SESSION['login'];
     echo "Déconnexion [$user_con]";
	
	 ?>
	 </a>
	</div>
	
	
		
<div id="contenu">
<ul id="menuDeroulant">

 <li>
  <a href="#">Gestion des users</a>
  <ul class="sousMenu">
   <li><a href="#">Liste</a></li>
   <li><a href="nouveau.php">Nouveau</a></li>
  </ul>
 </li>
 
 
 <li>
  <a href="#">MAJ Services</a>
  <ul class="sousMenu">
   <li><a href="#">Famille Amis</a></li>
   <li><a href="#">Cub20</a></li>
   <li><a href="#">Internet Mobil</a></li>
   <li><a href="#">Ya bussiness</a></li>
 </ul>
 </li>
 
 
 <li>
  <a href="#">MAJ Informations</a>
  <ul class="sousMenu">
   <li><a href="acceuil-administrateur.php">Pharmacies</a></li>
   <li><a href="#">News</a></li>
 </ul>
 </li>
 
  <li>
  <a href="#">Rapports</a>
  <ul class="sousMenu">
   <li><a href="acceuil.php">Services</a></li>
   <li><a href="#">Informations</a></li>
 </ul>
 </li>
 
 
 <li>
  <a href="prechargement.php">Préchargement</a>
 </li>
 
 </ul>
<form action= "<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="application/x-www-form-urlencoded">

<?php

if ($_SESSION['login']!=NULL){

ini_set('display_errors','1');
//Inclusion de la classe mère
include ("SGBD.class.php");
/* Initialisation de la variable du SGBD correspondant */
$SQL = "MySQL"; 
 // Inclusion de la classe fille du SGBD correspondant
include ($SQL.".SGBD.class.php");

/* Création d'un nouvel objet de la classe fille + lancement du constructeur */

$database = new $SQL('root', '', 'localhost', 'dbprojet');

// Connection à la base de données

$database->connect();

//-----------------------------------------------------------------------------------------------------------------------
				//Fonction de suppression
//-------------------------------------------------------------------------------------------------------------------
if ( !empty($_POST['submit']) && $_POST['submit']=='Supprimer') {
   
    if ( !empty($_POST['check']) && is_array($_POST['check'])) {
        array_walk($_POST['check'],create_function('$value','return mysql_real_escape_string($value);'));
        $requete = 'DELETE FROM USERS where login in (\''.implode('\',\'',$_POST['check']).'\');';
		$date = date("d-m-Y");
        $heure = date("H:i");
		$database->requete("INSERT  INTO TRACE_USER VALUES ('', '$login', '$date', 'delete' , '$heure')");

        $database->requete($requete);
	}
}
//------------------------------------------------------------------------------------------------------------------------------------
			//Fin Suppression
//------------------------------------------------------------------------------------------------------------------------------------



	         

 $database->requete("SELECT login, nom, prenoms, root FROM USERS ");
 if (mysql_num_rows($database->requete) > 0) {
 $nb=mysql_num_rows($database->requete);
 
 echo '<p>&nbsp;</p>';
 echo '<hr align="left" width="64%" color="red" size="1">';
 echo'<form action="acceuil-administrateur.php" method="post">';
 echo'<input type="submit" name="submit" value="Modifier"/>&nbsp;';
 echo'<input type="submit" name="submit" value="Supprimer"/><br />';
 echo "$nb utilisateur(s) enregistré(s)";
 
 

 //---------------------------------------------------------------------------------------------------------
 			// Affichage des utilisateurs dans le tableau
 //---------------------------------------------------------------------------------------------------------
 if(( $data = mysql_fetch_array($database->requete))!= NULL)
{                

         echo '<table bgcolor="#FFFFFF" width="650px">'."\n";
         echo '<tr height="25" id="legend">';
		 echo '<td align="center"><b>&nbsp;</b></td>';
         echo '<td align="center"><b>Login</b></td>';
         echo '<td align="center"><b>Nom</b></td>';
         echo '<td align="center"><b>Prénom(s)</b></td>';
         echo '<td align="center"><b>Root</b></td>' ;
         echo '</tr>'."\n";
   do
   { 
   		 
         echo '<tr>';
	     echo '<td  height="3" align="center"><input type="checkbox" name="check[]" id="administrateur" value="'.$data['login'].'" onchange="colorier(this);"/></td>';
         echo '<td bgcolor="#f3fbff" height="25" align="center">&nbsp;'.$data['login'].'</td>';
         echo '<td bgcolor="#f3fbff"  height="25" align="center">&nbsp;'.$data['nom'].'</td>';
         echo '<td bgcolor="#f3fbff" align="center"  height="25">'.$data['prenoms'].'</td>';
         echo '<td bgcolor="#f3fbff" align="center"  height="25">'.$data['root'].'</td>';
         echo '</tr>'."\n";
   }while(( $data = mysql_fetch_array($database->requete))!= NULL);
   echo '</table>'."\n";
   echo '<p>&nbsp;</p>';
 }
}
 
 //----------------------------------------------------------------------------------------------------------
					//Fin fonction d'affichage
//---------------------------------------------------------------------------------------------------------



//------------------------------------------------------------------------------------------------------------------------------------
					//Fonction de modification
//------------------------------------------------------------------------------------------------------------------------------------

if ( !empty($_POST['submit']) && $_POST['submit']=='Modifier') {

    $check=$_POST['check'];
	$_SESSION["check"]=$check;
	$c = count($_POST['check']);
	$_SESSION["var1"]=$c;
	
   if ( !empty($_POST['check']) && is_array($_POST['check'])) {
	 array_walk($_POST['check'],create_function('$value','return mysql_real_escape_string($value);'));

        for ($i = 0;$i < $c; $i++) 
		{
           $database->requete=("select login,nom,prenoms,root from USERS where login='$check[$i]'");
           for($j=0;$j<mysql_num_rows($database->requete);$j++)
           {
               $lignes=mysql_fetch_array($database->requete,MYSQL_BOTH);
                
	       }
		   $login[$i]=$lignes['login'];
	       $nom[$i]=$lignes['nom'];
	       $prenoms[$i]=$lignes['prenoms'];
           $root[$i]=$lignes['root'];
	      
		  
		   $_SESSION["login$i"]=$login[$i];
           $_SESSION["noms$i"]=$noms[$i];
	       $_SESSION["prenoms$i"]=$prenoms[$i];
           $_SESSION["root$i"]=$root[$i];
			
			echo "$_SESSION[noms$i]"; 
		   
     }
	 
		}
   }

//------------------------------------------------------------------------------------------------------------------------------------
		//Fin de la fonction de modification
//-----------------------------------------------------------------------------------------------------------------------------------

}else
	{ 
	header("Location: index.php" ); 
	}
  $database->deconnect();

?> 








<!------------------------------------------------------------------------------------------------------------------------------------> 
								<!--Fonction permettant de changer la couleur d'un checkbox selectionné--> 
 <script>
    function colorier(quoi)
    {    if ( quoi.checked )
                quoi.parentNode.parentNode.style.backgroundColor="#B0D8E8";
        else    quoi.parentNode.parentNode.style.backgroundColor="#B0D8E8";
    }
</script>
</form>
</div>

</body>
</html>

Eléphant du PHP | 422 Messages

05 nov. 2010, 14:45

hello

déjà http://www.ab-d.fr/date/2008-03-02/

ensuite c'est quoi le problème précisément ?

fait un

<?php print_r($_POST['check']); ? >

pour voir ton tableau de checkbox coché passé à ta page

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 86 Messages

05 nov. 2010, 15:40

Le probléme est que je n'arrive pas à récupérer les données dans les variables de session
qd je fait <?php print_r($_POST['check']); ? > il me donne le nombre de case coché

Eléphant du PHP | 422 Messages

05 nov. 2010, 16:05

hello

le session_start() doit être avant tout code html

donc tu met
<?php
session_start();
?>

en haut de ta page PHP

ce qui est bizarre c'est que tu n'ai pas d'erreur

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 86 Messages

05 nov. 2010, 16:11

J'ai fait ça vous pouvez le constater au tout début du code html

Pour tout te dire je sais pas pourquoi il me cause pas ce code :shock: :shock: :shock:

Eléphant du PHP | 422 Messages

05 nov. 2010, 16:21

comme ca ?

Code : Tout sélectionner

<?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> <title>Acceuil administrateur</title> <link href="feuille.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="bloc-fixe"> <a href="deconnexion.php">
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 86 Messages

05 nov. 2010, 16:25

Violente reponse :oops:
tu peut regarder le code que j'ai envoyé en premier lieu

Eléphant du PHP | 422 Messages

05 nov. 2010, 16:46

non pas violente mais efficasse :)

donc

change tes lignes en
$_SESSION['user'][$i]["login"]=$login[$i];
$_SESSION['user'][$i]["noms"]=$noms[$i];
$_SESSION['user'][$i]["prenoms"]=$prenoms[$i];
$_SESSION['user'][$i]["root"]=$root[$i];
ca sera mieux hiérarchisé

ensuite met bien le session_start() en HAUT comme j'ai montré
et ajoute un print_r($_SESSION); histoire de voir ce qui va tomber dedans

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)