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 :

Checkboxes : récupérer les informations sur plusieurs lignes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut Checkboxes : récupérer les informations sur plusieurs lignes
    Bonjour,
    Soit un tableau récupérant des données d'une table MySQL. Sur chaque ligne du tableau, plusieurs cases sont rajoutées afin d'agir sur les données de chacune des lignes.
    Je voudrais récupérer les informations des cases de cahque ligne avec une validation.

    Il me semble avoir vu il y a un moment un code du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($HTTP_POST_VARS)....
    . Est-ce possible ainsi, et le résultat sera-t'il celui que j'attends ?

  2. #2
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Je ne sais pas trop si ca répond à ta question... Mais voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $arrMyArray = array();
     
    foreach($arrMyArray as $key => $val)
    {
      print "Clé :".$key." Valeur :".$val;
    }
    De plus $_POST est un tableau, tu peux don utiliser celui la si tu veux parcourir toute les variable post envoyé par le formulaire.

  3. #3
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Tu peux nommer tes checkbox du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="chexkbox" name="NOM[]">
    De façon à récuperer des tableaux de valeurs, vu que tu as autant de lignes que d'enregistrements en base ....
    Take it HiSy

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Citation Envoyé par hisy
    Tu peux nommer tes checkbox du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="chexkbox" name="NOM[]">
    De façon à récuperer des tableaux de valeurs, vu que tu as autant de lignes que d'enregistrements en base ....
    J'ai déjà vu dans d'autres messages. Qu'apporte le [] dans le nom ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    moi j ai un truc du style ca marche bien

    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
     
     
    echo"<form name='formstatus' action='testvol.php'>";
    	echo"<input type='submit' name='ok' value='Close' >";
    	$i=0;	//pour index des checkboxBG
    	$j=0;	//pour index des checkboxRO
     
    	$result1 = $db->sql_query($sql1 .$order. " LIMIT ". $pgno*$maxrow . "," . ($maxrow+1));
     
    	//echo $sql1 .$order. " LIMIT ". $pgno*$maxrow . "," . ($maxrow+1);
     
    	while($row1 = $db->sql_fetchrow($result1)) 
    	{
     
     
     
    			$volume= $row1['volume'];
    			/*echo "volume : ".$volume;
    			echo"<br>";
    			echo"<br>";*/
     
    			$vol=substr($volume,0,9);//separation des volumes
     
    			if ($volold<>$vol)//separation des volumes
    			{
     
    echo <<< myBlock
     
    			  <table align="center" width="400" border="0" cellspacing="1" cellpadding="0">
     
    			  <tr>				
     
    				<th width="100" scope="col">Volume</th>
    				<th width="100" scope="col">Status</th>
    				<th width="50" scope="col">BG</th>
    				<th width="100" scope="col">Status</th>
    				<th width="50" scope="col">RO</th>
     
    			  </tr>\n
     
    myBlock;
     
     
    			$volold=$vol;
    			}//separation des volumes
     
    				$sql2="select status,lv from volumeflow where volumeflow.lv='BG' and volume='".$volume."'";
     
    				$result2 = $db->sql_query($sql2 .$order. " LIMIT ". $pgno*$maxrow . "," . ($maxrow+1));
     
    				while($row2 = $db->sql_fetchrow($result2)) 
    				{
     
    				$statusBG= $row2['status'];
    				/*echo "status : ".$status;
    				echo"<br>";
    				echo"<br>";*/
     
    				$lvBG= $row2['lv'];
    				/*echo "lv : ".$lv;
    				echo"<br>";
    				echo"<br>";*/
     
    						$sql3="select status,lv from volumeflow where volumeflow.lv='RO' and volume='".$volume."'";
     
    						$result3 = $db->sql_query($sql3 .$order. " LIMIT ". $pgno*$maxrow . "," . ($maxrow+1));
     
    						while($row3 = $db->sql_fetchrow($result3)) 
    						{
     
    						$statusRO= $row3['status'];
    						/*echo "status : ".$status;
    						echo"<br>";
    						echo"<br>";*/
     
    						$lvRO= $row3['lv'];
    						/*echo "lv : ".$lv;
    						echo"<br>";
    						echo"<br>";*/
     
     
    echo <<< myBlock
    		<tr class="$row_class" onMouseover="this.className='highlight_a';" onMouseout="this.className='$row_class';">
     
     
    			<td align="center">$volume</td>
    			<td align="center">$statusBG</td>
    			<td align="center"><input type="checkbox" name="checkboxBG$i" value="$volume" onClick="selectrow(document.formstatus.checkboxBG$i.name,document.formstatus.checkboxRO$j.name);" ></td>			
    			<td align="center">$statusRO</td>
    			<td align="center"><input type="checkbox" name="checkboxRO$j" value="$volume" onClick="selectrow(document.formstatus.checkboxRO$j.name,document.formstatus.checkboxBG$i.name);"></td>
     
    		</tr>\n
     
    myBlock;
    				$i++;
    				$j++;
    						}
    				}
     
    		}//fin du while
     
    echo"</form>";
     
     
    $checkboxBG=$_GET['checkboxBG'];
    $checkboxRO=$_GET['checkboxRO'];
     
    $value=$_GET['value'];
     
     
    $ilongstrlen($checkboxBG);
    $iselected=substr($checkboxBG,10,$ilong);
    $iselected==$_GET['iselected'];
    echo" iselected = ".$iselected;
     
     
    $jlongstrlen($checkboxRO);
    $jselected=substr($checkboxRO,10,$jlong);
    $jselected==$_GET['jselected'];
    echo" jselected = ".$jselected;

    mais moi le seule soucis c'est quand je submitte tout ce que j ai coché est dans url mais comment je recupere ces valeurs dans url

    dans url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    http://dd2_dev/modules/testvol.php?ok=Close&checkboxBG4=Volume-00-05&checkboxRO4=Volume-00-05&checkboxBG9=Volume-00-10&checkboxRO9=Volume-00-10&checkboxBG13=Volume-00-14&checkboxRO13=Volume-00-14

  6. #6
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Citation Envoyé par eric41
    J'ai déjà vu dans d'autres messages. Qu'apporte le [] dans le nom ?
    Le nom[] indique que la validation du formulaire va te retourner un tableau nom, tu peux donc avoir autant de checkbox que tu veux qui aurons pour name: 'nom[]'

    Le développement est un art capilotracté
    .____________________________________
    | SGBDR : Oracle 8
    | PHP Version 5.0.4
    | SERVEUR Apache 2.0 hébergé par Linux (Fédora)
    | C++ sous visual studio 6
    | JAVA sous JBuilder2006 Entreprise
    |____________________________________

  7. #7
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    En gros tu récupères un array $_POST['nom'] que tu peux parcourir avec un foreach
    Take it HiSy

  8. #8
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Merci pour vos réponses, ça marche. Un peu de code pour ceux qui sont dans le même cas.

    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
     
    //Code de traitement des cases
     
    if(isset($_POST['submit']))
    {
    $case1 = $_POST['case1'];
     
    	foreach($case1 as $value)
    	{
    		if(isset($_POST['case1']))
    		{
    		echo "La case 1 est cochée est a la valeur $value !<br />";
    		}
    	}
    $case2 = $_POST['case2'];
     
    	foreach($case2 as $value)
    	{
    		if(isset($_POST['case2']))
    		{
    		echo "La case 2 est cochée est a la valeur $value !<br />";
    		}
    	}
    }
     
    <form method="post" action="fichier.php">
    <table>
    <tr><td>valeurA1</td><td>valeurA2</td><td><input type="checkbox" name="case1[]" value="mavaleur" /> case 1
    <input type="checkbox" name="case2[]" value="mavaleur" />case 2</td></tr>
    <tr><td>valeurB1</td><td>valeurB2</td><td><input type="checkbox" name="case1[]" value="mavaleur" /> case 1
    <input type="checkbox" name="case2[]" value="mavaleur" />case 2</td></tr>
    </table>
    <input type="submit" name="submit" value="Valider" />
    </form>

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    J'ai rajouté dans mon formulaire un champ hidden permettant de récupérer le nom d'utilisateur associé à chaque ligne du tableau. Le but n'est pas de l'utiliser indépendamment comme pour les cases à cocher, mais pouvoir utiliser la valeur de ce champ dans d'autres foreach().

    Certains foreach() récupèrent un id utilisateur. Je voudrais pouvoir mettre, par exemple, "L'utilisateur Paul a été sélectionné" plutôt que "L'utilisateur n°5 a été sélectionné".

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    dans tes chekbox tu rajoute un champ value avec l'id comme ca tu recupere dans ton for each toute les checkbox coché avec comme valeur l'id que tu veu
    Stay in Bed .. Save Energy

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    J'ai déjà un champ hidden qui récupère le nom d'utilisateur.

    Est-ce que je peux mettre mon code comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="username['.$row['user_id'].']" value="'.$row['username'].'" />
    Ou faut-il uniquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="username[]" value="'.$row['username'].'" />
    Le pb est pour le récupérer. Un foreach() n'est pas possible dans ce cas.

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    a quoi ca sert d emettre un champ hidden si tu peu recuperer le tout en meme tps que les checkbox!!
    Stay in Bed .. Save Energy

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Faut bien le récupérer d'une manière, ça m'oblige après à refaire une requête SQL simplement pour sélectionner le nom.

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    c pour ca que je te di de faire passe l'id dans la value de tes checkbox ca ser a rien d emettre un champ hidden....
    Stay in Bed .. Save Energy

  15. #15
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    C'est déjà le cas pour la plupart des checkboxes. Mais je cherche à renvoyer à la validation du formulaire, puis à récupérer dans certains foreach() le nom associé à ces id.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/09/2010, 09h19
  2. Réponses: 1
    Dernier message: 07/03/2008, 12h42
  3. Réponses: 2
    Dernier message: 02/05/2007, 17h08
  4. Récupération d'informations sur plusieures lignes
    Par Oli_Ifre dans le forum Langage
    Réponses: 6
    Dernier message: 03/04/2007, 08h57
  5. Réponses: 5
    Dernier message: 23/12/2005, 19h19

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