Bouton radio et recuperation de valeurs

[Résolu]
Signaler
Messages postés
7
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
30 décembre 2008
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 11" />
<meta name="Originator" content="Microsoft Word 11" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CDATAVA%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
Bonjour,


Je suis un grand débutant en Javasript (programmation aussi), je bloque sur un
probleme que beaucoup trouverons très simple (mais moi pas), voila je souhaite
récupéré la valeur d'un bouton radio.

Pour faire simple, je liste le contenu d'une table de données Mysql, je
recupere un ensemble de résultats (ligne), et je

souhaite récupérer les valeurs $data['cel'] et $data['code']' grâce a un bouton
radio.


Mais après lecture de tutaux et forum, je n'y arrive pas je bloque pour le
moment, et je ne vois pas comment faire.


Donc si vous avez une idée une suggestion je vous remercie par avance.


Voila le code:





<html>
<title>cellule</title>

<script language="JavaScript">
function f()
{
   var obj = document.getElementById("radio1")
   alert('le champ a pour valeur : "'+obj.value+"'")
}
  
</script>
<form name="ResultForm" align="center" method="POST" action="">

<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$bd = 'test';
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($bd) or die ('Erreur :'.mysql_error());
if(isset($_POST) && !(empty($_POST["recherche"]))) {
  extract($_POST);

$requete = "SELECT * FROM TAB WHERE code LIKE '00%".$recherche."' LIMIT 0,12";
$result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
echo 'nombres d\'enregistrement : ';
echo $total;

echo '
';
echo '
';

// si on a récupéré un résultat on l'affiche.
if($total) {
    // début du tableau
    echo ''.\"\n\";
        // première ligne on affiche les titres code et surnom dans 2 colonnes
    echo '----
';
        echo 'cel, ';
        echo 'code, ';
       
    echo ''.\"\n\";
    // lecture et affichage des résultats sur x colonnes, 1 résultat par ligne.   
   
while($data = mysql_fetch_array($result)) {
        echo '----
';
        echo ''.$data['cel'].', ';
        echo ''.$data['code'].', ';       
         echo ''.\"\n\";
        }
               echo '
'."\n"; // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result); // on libère le résultat
}
?>

</form>

</html>

<script language="JavaScript">
    var TimerId = -1;
    function ResetTimeout()
    {
        if (TimerId != -1)
        {
            window.clearTimeout(TimerId);
        }        TimerId setTimeout("document.location 'find.php?'", 2*60*1000); //timer de rafraichissement de 2mn apres le dernier evenement souris de l'utilisateur (le timer se reinitialise a chaque mouvement)
    }
</script>

9 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
tu as tout pour faire...

tu sais accéder à une ligne
( id ou tableau_rows[n° de ligne] ou ... )

tu sais accéder à une colonne
( id ou id_ligne.cells[n° colonne] ou tableau.rows[n° de ligne].cells[n° colonne] ou ...
  innerHTML , c'est le contenu... )

  les autres infos sont dans l'exemple donné y compris dans le script
tableau.rows.length
nombre de lignes
tableau.rows[n° ligne].cells.Length
nombre de colonnes dans la ligne
tableau.rows[n° ligne].cell[n° colonne].???
accès à une cellule
par exemple : tableau.rows[0].cell[0].style.display
tableau.rows[0].cell[0].style.innerHTML ...
...

          [mon Site] [M'écrire] Bul         
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
bonjour,

on va se répéter... pour la 658474935 fois au moins (?)
comment on devine le contenu des $variables ? celui de la base de données ?
c'est UN EXTRAIT de la page html résultante qu'il faudrait mettre !!
pas le php, car peu de devins hantent ces lieux...

bon ici :
....td bgcolor= "#CCCCCC"> '.$data['cel'].'</td>....
déjà, tu risques d'avoir plusieurs fois le même ID,
et ce n'est pas permis dans une même page

mets un id "progressif" ( radio+n° d'ordre, de ligne... )
met en un aussi au texte que tu mettrais dans un span par exemple,
et à partir de l'ID du radio tu peux "calculer" celui du span

ou le parent.parent.rowIndex c'est le n° de ligne

donc le tableau .rows[n° de ligne].innerHTML c'est =
$data['cel']
tu peux extraire ce que tu en veux
 
ou mets le $data['cel'] dans un span avec un même name pour tous
et utilise document.ResultForm.name_du_span[le n° de ligne cité]
 
ou....

Cordialement

          [mon Site] [M'écrire] Bul         
Messages postés
7
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
30 décembre 2008

Bonjour,

Merci pour la réponse, vraiment désole pour le code PHP :-).
J'ai modifier l'ID en fonction de ma cellule, jusque la pas de problème, mais je suis pas sur de comprendre la suite pour le moment (je vais essayer d'exploiter les informations fournies).

Merci.
Je met quand même le code HTML de la page.

******************************************************
<html>
<title>cellule</title>

<body topmargin="0" onLoad="ResetTimeout();" onmousemove="ResetTimeout();" >
<script language="JavaScript">
function f()
{
var obj = document.getElementById(radio+'.$data['cel'].');
alert('le champ a pour valeur : "'+obj.value+"'")
}
</script>
<form name="ResultForm" align="center" method="POST" action="">
<br><br>
nombres d'enregistrement : 3<br><br><table bgcolor="#FFFFFF" id="tableau" align="center">
<tr><td bgcolor="#FF4500">cel</td><td bgcolor="#FF4500">code</td></tr>
<tr><td bgcolor="#CCCCCC"><input type="radio" id="radio+7262" name="cellule" >7262</td><td bgcolor="#CCCCCC">00000111W3</td></tr>

<tr><td bgcolor="#CCCCCC"><input type="radio" id="radio+7263" name="cellule" >7263</td><td bgcolor="#CCCCCC">00000111W3</td></tr>
<tr><td bgcolor="#CCCCCC"><input type="radio" id="radio+7267" name="cellule" >7267</td><td bgcolor="#CCCCCC">00000111W3</td></tr>
</table>

<INPUT TYPE="button" VALUE="OK" NAME="OK" onclick="f()">
</form>
<br><br><br>
<INPUT TYPE="BUTTON" VALUE="Fermer la fenêtre" ONCLICK="window.close()">
</html>
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
on progresse...
mais
_ pas sur qu'un "+" soit autorisé dans un id
_ on est bien coté javascript ici, non ?
donc :
var obj = document.getElementById(radio+'.$data['cel'].');

$data['cel']... erreur de syntaxe !

ce que tu cherches à trouver c'est le radio coché ?
il faut " le chercher "

function f()
{   for ( var n=0;n<document.ResultForm.cellule.length; n++ )
    {    if ( document.ResultForm.cellule[n].checked )
        {    alert('le champ '+n+' sélectionné a pour id : '+document.ResultForm.cellule[n].id );

on ne peut pas utiliser value ! les radio n'en ont pas !

par contre document.ResultForm.rows[n].cells[1].innerHTML contiendrait bien


            break;
        }
    }
}
...
        <tr>    <td bgcolor="#CCCCCC">7262</td>
                <td bgcolor="#CCCCCC">00000111W3</td></tr>
        <tr>    <td bgcolor="#CCCCCC">7263</td>
                <td bgcolor="#CCCCCC">00000111W3</td></tr>
        <tr>    <td bgcolor="#CCCCCC">7267</td>
                <td bgcolor="#CCCCCC">00000111W3</td></tr>
...

          [mon Site] [M'écrire] Bul         
Messages postés
7
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
30 décembre 2008

Merci pour cette réponse,

Une dernière question, si je souhaite récupérer une ligne entière de mon tableau, du type:
<tr><td><input type="radio" id="7262" name="cellule" >7262</td><td>00000111W3</td></tr>

Y'a t'il une méthode plus simple qu'une autre? me conseil tu de mettre un id sur chaque cellule et de le récupérer par la suite (un peu lourd)?

Merci
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
le plus simple ? ha ! mon foie... je ne sais pas
mais tu peux récupérer la ligne :
     id_de_la_ligne.innerHTML
ou id_du_tableau.rows[n° de ligne].innerHTML
par exemple... ça dépend aussi de ce que tu veux en faire
on peut jouer avec les ...node ou autres...
curieux d'ailleurs tiens... tu vas en faire quoi ?
ou alors tu ne veux que le contenu des cellules d'une ligne ?
          [mon Site] [M'écrire] Bul     
Messages postés
7
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
30 décembre 2008

Bonsoir,

En faite, les données de cette ligne vont me servir a alimenter automatiquement un formulaire (par la suite... bon peut être un jours...enfin si mes 2 neurones restants arrivent a comprendre ta réponse :-), mais comme je débute, je me suis dis que le moyen le plus simple était d'abord de récupérer les valeurs connues que l'utilisateur a choisi (a partir d'un popup), lui faire valider son choix et ensuite les renvoyer dans les cases du formulaire (rien que ça me diras tu?). J'espère que c'est la bonne méthode.

Pour répondre a ta question , c'est donc le contenu des cellules d'une ligne qui m'intéresse.

Merci  pour ta réponse je vais mettre en pratique demain.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>alimenter automatiquement un formulaire
donc, il faudra sûrement récupérer les données cellule par cellule.
peut-être d'ailleurs ce tableau ne serait-il pas si mal
       directement dans le formulaire ?
       plus d'alimentation à faire....
          [mon Site] [M'écrire] Bul        
Messages postés
7
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
30 décembre 2008

Bonjour,

Je ne sais pas récupérer les données cellule par cellule. Peux tu me donner une piste?
<input type="radio" id="7262" name="cellule" >7262</td><td>00000111W3</td></tr>

car l'id est récupérable par +document.ResultForm.cellulle[n].id+,
,mais pour la deuxième valeur, je coince.

Merci.