Recup de checkbox en javascript/php
J'ai une petit problème
Je vous décrit ma page : j'ai un premier tableau avec quelque collonnes et plus particulièrement des checkbox
(checkbox car l'utilisateur doit pouvoir choisir plusieurs lignes)
ensuite j'ai trois bouttons ajouter modifier et supprimer
enfin un deuxième tableau et au lieu de checkbox des radio.
Mon problème aujourd'hui est de récupérer grâce a une fonction javascript la ou les valeurs coché par l'utilisateur des checkbox pour les transmettre dans une popup.
Alors hier on m'a aidé (car je suis une bille en JS c'est du charabiat) a faire une fonction pour récupérer les valeurs radio
et l'on m'a dit que c'était le meme système sauf qu'il faut récupérer les valeurs dans un tableau.
Si ca peut vous donner une indication
je vous met la fonction JS
function ouvreFenetreModifier()
{
valeurCheckDansLien="";
TabChecks=document.getElementsByName('check');
TCL=TabChecks.length;
for( var i=0;i<TCL;i++) { // ici on parcourre les elements pour savoir lequel est coché
if(TabChecks[i].checked) {
valeurCheckDansLien="Modif_plan.php?check="+TabChecks[i].value;
}
}
if( valeurCheckDansLien.length > 0){// si un radio est coché
window.open(valeurCheckDansLien, "", config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
} else {
alert("pas de d'arrêts chaînes selectionné !") //si pas de radio coché
}
}
ainisi que mon tableau en php
echo "<tr>";
echo "<td class='table-ligne1-centre' width='100'> <input type='checkbox' name='checkbox1' > </td>";
echo "<td class='table-ligne1-centre' width='100'>$TYPE</td>";
echo "<td class='table-ligne1-centre' width='100'>$DEBUT</td>";
echo "<td class='table-ligne1-centre' width='100'>$FIN</td>";
echo "<td class='table-ligne1-centre' width='100'>$CONSTAT</td>";
echo "<td class='table-ligne1-centre' width='100'>$DEMANDE</td>";
echo "<td class='table-ligne1-centre' width='100'>$CAUSE</td>";
echo "<td class='table-ligne1-centre' width='100'>$INFO</td>";
echo "<td class='table-ligne1-centre' width='100'>$IMPUTATION</td>";
echo "</tr>";
Si vous pouvez m'aider svp
merci d'avance
Configuration: Windows 2003 Internet Explorer 7.0
35 réponses
Récupérer les valeurs cochées des checkbox et les transmettre dans une popup via JavaScript est le problème, avec un premier tableau de cases à cocher et un second utilisant des radio. Plusieurs intervenants proposent de parcourir les éléments par getElementsByName, vérifier .checked et construire une URL, puis ouvrir la popup en passant les valeurs via GET ou dans un tableau. D'autres échanges portent sur l'utilisation de PHP pour générer les lignes du tableau, l'envoi des paramètres entre pages avec $_GET ou $_POST et la persistance éventuelle via $_SESSION. Une nuance utile est que la fiabilité dépend de l'alignement entre l'envoi des paramètres et leur récupération sur la page cible, en veillant à nommer les inputs et tester sur les pages.
-
up
-
up
-
Effectivment...
Alors
voici le code de ma page
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!##########################################################################################################################>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Ajout d'un plan d'action</title>
<link rel="stylesheet" media="screen" type="text/css" title="identification" href="Require\Application.css">
</head>
<body>
<?php
//--------------- Connexion à la base ---------------//
require('Require\Connexion.php');
//--------------- Définition des variable de la table ---------------//
$INTITULE = $_POST['INTITULE'];
$DELAI = $_POST['d'];
$PILOTE = $_POST['PILOTE'];
//--------------- Calcul et incrémente le numéro ---------------//
$sqlnum = " SELECT NUMERO_PLAN_ACTION
FROM PLAN_ACTION";
$req = odbc_exec($conn,$sqlnum) or die('Erreur SQL : <br />'.$sqlnum);
{
$result=odbc_result_all($req);
}
$num = $result++;
//--------------- Requete éxecuté dans la table ---------------//
$sql1 = " INSERT INTO PLAN_ACTION (NUMERO_PLAN_ACTION, INTITULE, DELAI, PILOTE)
VALUES ($num, '$INTITULE', '$DELAI', '$PILOTE')";
foreach($_SESSION[$key]as $key=>$val)
{
$requete =" UPDATE ARRET_CHAINE
SET NUMERO_PLAN_ACTION = '$result'
WHERE NUMERO_ARRET_CHAINE =".$val;
echo 'requete : ' . $requete . '<br />';
$req = odbc_exec($conn,$requete) or die('Erreur SQL : <br />'.$requete);
}
$req = odbc_exec($conn,$sql1) or die('Erreur SQL : <br />'.$sql1);
?>
</body>
</form>
</html>
et voici l'erreur car apparemment il ne prend pas la valeur
NUMERO_PLAN_ACTION
0
Warning: Invalid argument supplied for foreach()
qu'en pense tu? -
ContributeurBen enlève le renvoie dans la page de traitement.
Ton echo va s'afficher normalement. -
je l'ai fait je l'ai éxécuter et ca passe dans la base mais pas par le code
en fait j'ai 3 pages tu vois la page plan action avec le tableau
ensuite la page x jrécup la valeur des checkbox
enfin la page de traitement y
et j'ai mis la requete dans la page x et la c'est bon je suis sur que je récupère car j'ai fait le echo par contre dans la page de traitement je ne sais pa scomment faire pour faire en sorte que je vois la requete pour etre sur que les valeurs passent
donc si ta une idée... -
salut passarinho44,
en ayant modifier comme tu me l'avait conseillé dans ton post au dessus une de mes deux requetes s'insère
le insert into.
Mais toujours le meme problème avec le update
j'ai fait ca :
foreach($_SESSION[$key]as $key=>$val)
{
$requete = "UPDATE ARRET_CHAINE
SET NUMERO_PLAN_ACTION = '$result'
WHERE NUMERO_ARRET_CHAINE = $val";
//echo 'requete : ' . $requete . '<br />';
$req = odbc_exec($conn,$requete) or die('Erreur SQL : <br />'.$requete);
}
peut tu me dire si c'est normal que le update ne marque pas d'erreur et qu'il n'insère rien dans la table stp? -
oui effectivement quand je test ca et que je fais un echo ca marche mais ca doit déconner dans lotre page avec le update je sais pas pourquoi...
-
Contributeurforeach($_GET as $val)
{
$_SESSION['val'] = $val;
}
Là tu réinitialise toujours la même variable SESSION, c'est normal? ...
Il faudrait plutôt mettre ça :
foreach($_GET as $key=>$val) {
$_SESSION[$key] = $val;
}
Essaie ça et dis moi si ça change quelque chose ... -
http://www.commentcamarche.net/forum/affich 11028372 recuperer la valeur d un checkbox ou radio?#3
est ce que quelqun peu maiD ??? -
je sais ke ca va faire long mais regarde stp
plan_action.php
<form method="post" action="Plan_action.php" >
<body>
<?php
//--------------- Bannière ---------------//
echo" <div id='ban2' > </div>";
//--------------- Choix de la période ---------------//
echo" <div id='cal_debut'></div>";
echo"<div style='text-align: center;'>";
echo"<input name='debut_periode' value='Début de période' class='calendrier' type='text'>";
echo" ";
echo"<input name='fin_periode' value='Fin de période' class='calendrier' type='text'>";
//--------------- Button SUBMIT qui charge le tableau ---------------//
echo " ";
echo"<input value='Ok' name='button' type='submit'>";
echo"</div><br>";
require('Connexion.php');
//--------------- Requete appelant le POST selectionné ---------------//
$DATE_DEBUT = $_POST['debut_periode']." 00:00:00";
$DATE_FIN = $_POST['fin_periode']." 00:00:00";
list($datedeb, $heure_deb)=explode(" ",$DATE_DEBUT);
list($datefin, $heure_fin)=explode(" ",$DATE_FIN);
list($jj_deb, $mm_deb, $yy_deb)=explode("/",$datedeb);
list($jj_fin, $mm_fin, $yy_fin)=explode("/",$datefin);
$date_deb = $yy_deb."-".$mm_deb."-".$jj_deb;
$date_fin = $yy_fin."-".$mm_fin."-".$jj_fin;
//--------------- Tableaux des arrêts chaîne ---------------//
//--------------- Requete du tableau des arrêts chaîne ---------------//
if (isset($_POST['debut_periode']) && isset($_POST['fin_periode']))
{
$sql0="SELECT * FROM ARRET_CHAINE WHERE DEBUT BETWEEN #$date_deb# AND #$date_fin#" ;
$rs = odbc_exec($conn,$sql0) or die('Erreur SQL : <br />'.$sql0);
}
//--------------- Tableau des arrêts chaîne ---------------//
echo "<div style='overflow-y: scroll; height: 181'> ";
echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
echo "<tbody>";
echo "<tr>";
echo "<table style='width: 968px; height: 60px;' border='5' cellpadding='2' cellspacing='1'>"; // Taille du tableau //
echo "<tbody>";
echo "<tr>";
echo "<td class='table-titre' colspan='9'> Tableau des arrêts chaîne </td>";
echo "</tr>";
echo "<tr>";
echo "<td class='table-entete-centre' width='20'>Choix</td>";
echo "<td class='table-entete-centre' width='20'>Type</td>";
echo "<td class='table-entete-centre' width='20'>Début</td>";
echo "<td class='table-entete-centre' width='20'>Fin</td>";
echo "<td class='table-entete-centre' width='20'>Constat</td>";
echo "<td class='table-entete-centre' width='20'>Demande </td>";
echo "<td class='table-entete-centre' width='20'>Cause</td>";
echo "<td class='table-entete-centre' width='20'>Information</td>";
echo "<td class='table-entete-centre' width='20'>Imputation</td>";
echo "</tr>";
if (isset($_POST['debut_periode']) && isset($_POST['fin_periode']))
{
while (odbc_fetch_row($rs))
{
$NUM=odbc_result($rs,"NUMERO_ARRET_CHAINE");
$TYPE=odbc_result($rs,"TYPE");
$DEBUT=odbc_result($rs,"HEURE_DEBUT");
$FIN=odbc_result($rs,"HEURE_FIN");
$CONSTAT=odbc_result($rs,"CONSTAT");
$DEMANDE=odbc_result($rs,"DEMANDE");
$CAUSE=odbc_result($rs,"CAUSE");
$INFO=odbc_result($rs,"COMPLEMENT_INFORMATION");
$IMPUTATION=odbc_result($rs,"IMPUTATION");
echo "<tr>";
echo "<td class='table-ligne1-centre' width='100'> <input type='checkbox' name='checkbox1' value='" . $NUM . "' /> </td>";
echo "<td class='table-ligne1-centre' width='100'>$TYPE</td>";
echo "<td class='table-ligne1-centre' width='100'>$DEBUT</td>";
echo "<td class='table-ligne1-centre' width='100'>$FIN</td>";
echo "<td class='table-ligne1-centre' width='100'>$CONSTAT</td>";
echo "<td class='table-ligne1-centre' width='100'>$DEMANDE</td>";
echo "<td class='table-ligne1-centre' width='100'>$CAUSE</td>";
echo "<td class='table-ligne1-centre' width='100'>$INFO</td>";
echo "<td class='table-ligne1-centre' width='100'>$IMPUTATION</td>";
echo "</tr>";
}
}
echo "</tbody>";
echo "</table>";
echo "</tr>";
echo "</tbody>";
echo "</table>";
echo "</div>";
?>
<!--------------- Boutton --------------->
<br>
<div style="text-align: center;">
<input type="button" name="lien1" value="Ajouter un plan d'action" onclick="ouvreFenetreAjouter();">
<input type="button" name="lien2" value="Modifier" onClick="ouvreFenetreModifier();">
<input type="button" name="lien3" value="Cloturer" onClick="ouvreFenetreCloturer();">
<br><br>
</div>
<!--------------- Tableau des plans d'action --------------->
<?php
require('Connexion.php');
require('Requete.php');
//--------------- Requete du tableau des plans d'action ---------------//
$sql1="SELECT * FROM PLAN_ACTION ";
$req = odbc_exec($conn,$sql1) or die('Erreur SQL : <br />'.$sql1);
echo "<div style='overflow-y: scroll; height: 180'>";
echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
echo "<tbody>";
echo "<tr>";
echo "<table style='width: 973px; height: 115px;' border='5' cellpadding='2' cellspacing='1'>";
echo "<tbody>";
echo "<tr>";
echo "<td class='table-titre' colspan='6'> Tableau des plans d'action</td>";
echo "</tr>";
echo "<tr>";
echo "<td class='table-entete-centre' width='20'></td>";
echo "<td class='table-entete-centre' width='150'>Intitulé</td>";
echo "<td class='table-entete-centre' width='5'>Délai</td>";
echo "<td class='table-entete-centre' width='50'>Pilote</td>";
echo "<td class='table-entete-centre' width='10'>Cloture</td>";
echo "<td class='table-entete-centre' width='30'>Complément </td>";
echo "</tr>";
while (odbc_fetch_row($req))
{
$CHOIX= odbc_result($req,"NUMERO_PLAN_ACTION");
$INTITULE=odbc_result($req,"INTITULE");
$DELAI=odbc_result($req,"DELAI");
$PILOTE=odbc_result($req,"PILOTE");
$CLOTURE=odbc_result($req,"CLOTURE");
$COMPLEMENT_CLOTURE=odbc_result($req,"COMPLEMENT_CLOTURE");
echo "<tr>";
echo "<td class='table-ligne1-centre' width='20'> <input type=\"radio\" id=\"check\" name=\"check\" value='".$CHOIX."' /> </td>";
echo "<td class='table-ligne1-centre' width='150'>$INTITULE</td>";
echo "<td class='table-ligne1-centre' width='10'>$DELAI</td>";
echo "<td class='table-ligne1-centre' width='50'>$PILOTE</td>";
echo "<td class='table-ligne1-centre' width='10'>$CLOTURE</td>";
echo "<td class='table-ligne1-centre' width='30'>$COMPLEMENT_CLOTURE</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
echo "</tr>";
echo "</tbody>";
echo "</table>";
//--------------- Fin de la page Action ---------------//
?>
</body>
</form>
<!##########################################################################################################################>
</html>
<?php
session_start();
?>
<form method="post" action="Formulaire_add_plan.php">
<body>
<!------------------ Bannière ------------------>
<div id="ban3"> </div>
<br>
<!------------------ Intitulé du plan ------------------>
Intitulé :
<input name="INTITULE" value="" maxlength="50" size="50" type="text">
<br><br>
<?php
//--------------- Champs de saisie du délais ---------------//
foreach($_GET as $val)
{
$_SESSION['val'] = $val;
}
echo"<div>";
echo"Délai : ";
echo"<input name='d' value='' class='calendrier' type='date'> ";
echo"</div>";
?>
<br>
Pilote :
<input name="PILOTE" value="" maxlength="50" size="50" type="text">
<br><br><br>
<!------------------ Boutton ------------------>
<div style="text-align: center;">
<input value="Valider" onclick="self.close()" name="button" type="submit">
</div>
</body>
</form>
<!##########################################################################################################################>
</html>
<?php
session_start();
//--------------- Connexion à la base ---------------//
require('Connexion.php');
//--------------- Définition des variable de la table ---------------//
$INTITULE = $_POST['INTITULE'];
$DELAI = $_POST['DELAI'];
$PILOTE = $_POST['PILOTE'];
//--------------- Calcul et incrémente le numéro ---------------//
$sqlnum = " SELECT MAX(NUMERO_PLAN_ACTION)
FROM PLAN_ACTION";
$req = odbc_exec($conn,$sqlnum) or die('Erreur SQL : <br />'.$sqlnum);
{
$result=odbc_result($req);
}
$result++;
//--------------- Requete éxecuté dans la table ---------------//
$sql1 = " INSERT INTO PLAN_ACTION (NUMERO_PLAN_ACTION, INTITULE, DELAI, PILOTE)
VALUES ($result, '$INTITULE', '$DELAI', '$PILOTE')";
foreach($_SESSION as $val)
{
$requete = "UPDATE ARRET_CHAINE
SET NUMERO_PLAN_ACTION = '$result'
WHERE NUMERO_ARRET_CHAINE = $val";
//echo 'requete : ' . $requete . '<br />';
$req = odbc_exec($conn,$requete) or die('Erreur SQL : <br />'.$requete);
}
$req = odbc_exec($conn,$sql1) or die('Erreur SQL : <br />'.$sql1);
?>jette un oeuil stp j'en peut plus -
ContributeurOui envoie les codes de tes pages je vais essayer de voir ça ...
-
Tien une réponse mais j'ten donne pas comme tu veux pas m'aider
-
excuse mais il n'y a pas d'erreur en faite!!!
J'ai testé ton dernier post et donc le problème c'est que la requete n'est que sur une page de traitement dc le echo est impossible j'ai testé dans la bdd et la ca a bien fonctionné pourrais je te mettre le code des trois pages concerné car la je suis perdu je ne voi pas ce qui marche pas... stp -
ContributeurModifie ça :
foreach($_SESSION as $val)
{
$requete = "UPDATE ARRET_CHAINE
SET NUMERO_PLAN_ACTION = '$result'
WHERE NUMERO_ARRET_CHAINE = $val";
$req = odbc_exec($conn,$requete) or die('Erreur SQL : <br />'.$requete);
}
Par ça :
foreach($_SESSION as $val)
{
$requete = "UPDATE ARRET_CHAINE
SET NUMERO_PLAN_ACTION = '$result'
WHERE NUMERO_ARRET_CHAINE = $val";
echo 'requete : ' . $requete . '<br />';
//$req = odbc_exec($conn,$requete) or die('Erreur SQL : <br />'.$requete);
}
Tu auras toutes tes requetes qui vont s'afficher!
Si tu ne trouves pas l'erreur dessus, tu essaye de les executer dans ta base de données.
Il va te donner l'erreur normalement. -
Excuse moi mec mais j'ai encore besoin de tes lumières...
dans la page plan action j'envoie les donnée des checkbox (ce que tu as fait hier) dans la page form_action
foreach($_GET as $val)
{
$_SESSION['val'] = $val;
}
enfin je veut récupérer ca pour faire ma requete mais ca ne passe pas hélas
foreach($_SESSION as $val)
{
$requete = "UPDATE ARRET_CHAINE
SET NUMERO_PLAN_ACTION = '$result'
WHERE NUMERO_ARRET_CHAINE = $val";
$req = odbc_exec($conn,$requete) or die('Erreur SQL : <br />'.$requete);
}
je n'est pas d'erreur mais ca ne s'insère pas -
ContributeurBen dans la popup tu affiche la valeur avec :
<?php
echo 'liste : ' . $_GET['liste'];
?> -
par contre dans le popup ca n'indique pas la valeur quand je fais echo $_GET['...']
merci bcp tu es trop fort -
Contributeurecho"<center><select name='liste' id='liste' size='1'>";
echo"<option>Choisissez une liste</option>";
echo"<option> </option>";
echo"<option>Type </option>";
echo"<option>Cause</option>";
echo"<option>Constat </option>";
echo"<option>Demande </option>";
echo"<option>Imputation </option>";
echo"</select>";
Déjà il y a un problème dans ta liste : tes option n'ont pas de valeurs ... :s
Remplace par ça :
echo"<center><select name='liste' id='liste' size='1'>";
echo"<option value=''>Choisissez une liste</option>";
echo"<option value=''> </option>";
echo"<option value='type'>Type </option>";
echo"<option value='Cause'>Cause</option>";
echo"<option value='Constat'>Constat </option>";
echo"<option value='Demande'>Demande </option>";
echo"<option value='Imputation'>Imputation </option>";
echo"</select>";
Ensuite pour ta fonction javascript, elle est beacoup plus simlpe ^^ :
function ouvreFenetreListe() {
var valeurListeDansLien="";
var liste = document.getElementById('liste');
if ( liste.value != "" ) {
valeurListeDansLien="Formulaire_liste.php?liste="+liste.value;
window.open(valeurListeDansLien, "", config='width=600, height=560, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
} else {
alert("Selectionnez une liste avant de cliquer sur valider")
}
} -
ok merci bcp encore une fois j'ai un dernier petit soucis promis
Pour le problème dans ma base le truc c'est que je dois insérer un numéro dans la table arret chaine mais dans les tuples qui ont les valeurs $val.
c'est pour transmettre la valeur d'une liste dans un popup
voici la liste
echo"<center><select name='liste' id='liste' size='1'>";
echo"<option>Choisissez une liste</option>";
echo"<option> </option>";
echo"<option>Type </option>";
echo"<option>Cause</option>";
echo"<option>Constat </option>";
echo"<option>Demande </option>";
echo"<option>Imputation </option>";
echo"</select>";
et la fonction
function ouvreFenetreListe()
{
valeurCheckDansLien="";
TabChecks=document.getElementsByName('liste');
TCL=TabChecks.length;
for( var i=0;i<TCL;i++)
{
if(TabChecks[i].checked)
{
valeurCheckDansLien="Formulaire_liste.php?check="+TabChecks[i].value;
}
}
if (valeurCheckDansLien.length > 0)
{
window.open(valeurCheckDansLien, "", config='width=600, height=560, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
}
else
{
alert("Selectionnez une liste avant de cliquer sur valider")
}
}
j'arrive pas alors la fonction doit etre fausse car il me met sans cesse vous n'avez pas sélectionnez de liste -
ContributeurJe suis en 2eme année de BTS Informatique de Gestion ^^
Je suis en stage actuellement et à fond dans une appli PHP/MySQL/Javascript ^^
Il y a quelques mois j'aurais même pas compris tout ce que tu me demandais ! ;)
Voilà comment ajouter dans une base (à adapter ;) )foreach($_GET as $key=>$val) { $requete = "INSERT INTO tatable (tonchamps) VALUES ('" . $val . "')"; mysql_query($requete); }
- 1
- 2