Aide fonction javascript popup+recup donnée
RésoluPassarinho44 Messages postés 977 Statut Contributeur -
Voila j'ai un soucis depuis plusieurs jours je n'arrive pas a véhiculer une donnée dans mon popup
Si vous voulez je peut vous donner une partie de mon code de la page concernée car hélas j'ai l'impression qu'il y aura que comme ca que quelqu'un pourra m'aider.
Aider moi svp
merci d'avance
Configuration: Windows 2003 Internet Explorer 7.0
39 réponses
- 1
- 2
Problème central : il s'agit d'envoyer la valeur sélectionnée d'un bouton radio dans une popup via JavaScript et window.open, mais l'ouverture de la fenêtre ne transmet pas correctement la donnée. Des réponses proposées se concentrent sur le diagnostic : tester et corriger le code, afficher temporairement la valeur avec alert, puis construire l'URL à partir du radio actif avant d'ouvrir. Des échanges explorent également une solution complète avec une fonction qui parcourt les éléments nommés 'check', retient la valeur du radio coché et ouvre ensuite la popup avec les paramètres adéquats. D'autres échanges signalent une limite lorsque la sélection porte sur plusieurs radios et suggèrent d'envisager une gestion distincte des cases à cocher pour étendre le même mécanisme.
-
Oui je pense qu'un peu de code peut nous aider :)
-
alors ...
Je sais que ce n'est pas très propre je veut qu'il soit fonctionnel et après je le coderais proprment.
En gros on voit bien qu'il y a un tableau et une colone radio je souhaite juste récupéré la valeur du radio coché par l'utilisateur quand il clic sur le bouton modifier ou supprimer.
S'il vous faut plus d'exlpication dites le moi.
<html>
<!################################################################################################################################>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Utilisateur</title>
<link rel="stylesheet" media="screen" type="text/css" title="identification" href="Application.css">
<script language="Javascript">
function ouvreFenetreModifier()
{
valeurCheck=document.form.check.value;
valeurCheckDansLien="Modif_form.php?check="+valeurCheck;
window.open(valeurCheckDansLien,"",config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
}
function ouvreFenetreSupprimer()
{
valeurCheck=document.form.check.value;
valeurCheckDansLien="Del_arret.php?check="+valeurCheck;
window.open(valeurCheckDansLien,"",config='width=600, height=250, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
}
</script>
</head>
<!################################################################################################################################>
<body onload="runClock()">
<form method="post" name="form">
<!--------------- Bannière --------------->
<div id="ban2" > </div>
<!--------------- Boutton --------------->
<div style="text-align: center;">
<input name="lien4" value="Imprimer" onclick="edition();return false;"type="button">
<input name="lien1" value="Arrêt chaîne" onclick="window.open('Form_utilisateur.php', 'utilisateur', config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');" type="button">
<input type="button" name="lien2" value="Modifier" onClick="ouvreFenetreModifier();">
<input type="button" name="lien3" value="Supprimer" onClick="ouvreFenetreSupprimer();">
</div>
<br>
<!--------------- Heure défilant --------------->
<div id="time"></div>
<!--------------- Tableau de gestion des arrêts chaîne --------------->
<?php
require('Connexion.php');
require('Requete.php');
//--------------- Requete du tableau des arrêts chaîne ---------------//
$sql0="SELECT * FROM ARRET_CHAINE WHERE DEBUT =#$date#";
$rs = odbc_exec($conn,$sql0) or die('Erreur SQL : <br />'.$sql0);
//--------------- Tableau des arrêts chaîne ---------------//
echo "<div style='overflow-y: scroll; height: 305'> ";
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'> Ouverture: $ouverture Cadence: $cadence Taktime: $total </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>";
while (odbc_fetch_row($rs))
{
$CHOIX = 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=\"radio\" name=\"check\" value='".$CHOIX."'> </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>";
//--------------- Tableau des informations générales de la journée ---------------//
echo "<br>";
echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
echo "<tbody>";
echo "<table style='width: 500px; height: 90px;' border='5' cellpadding='2' cellspacing='1'>";
echo "<tr>";
echo "<td class='table-titre' colspan='13'> Infos en temps réel </td>";
echo "</tr>";
//--------------- En tete de colonne ---------------//
echo "<tr>";
echo "<td class='table-entete' width='1'>Nombre d'arrêt </td>";
echo "<td class='table-entete' width='1'>Durée perdu </td>";
echo "<td class='table-entete-centre' width='20'>Pertes TA </td>";
echo "<td class='table-entete-centre' width='20'></td>";
echo "<td class='table-entete-centre' width='20'>Info </td>";
echo "<td class='table-entete-centre' width='20'>Trou </td>";
echo "<td class='table-entete-centre' width='20'></td>";
echo "<td class='table-entete-centre' width='50'>Durée total perdu </td>";
echo "<td class='table-entete-centre' width='50'>TA total perdu </td>";
echo "</tr>";
//--------------- RESULTATS ---------------//
echo "<tr>";
echo "<td class='table-ligne1-centre' width='100'> $my_array[0] </td>";
echo "<td class='table-ligne1-centre' width='100'> $dureeperdu </td>";
echo "<td class='table-ligne1-centre' width='100'> $perteTA </td>";
echo "<td class='table-ligne1-centre' width='2'></td>";
echo "<td class='table-ligne1-centre' width='100'> $dureeinfo </td>";
echo "<td class='table-ligne1-centre' width='100'> $resultat </td>";
echo "<td class='table-ligne1-centre' width='2'></td>";
echo "<td class='table-ligne1-centre' width='100'> $totalduree </td>";
echo "<td class='table-ligne1-centre' width='100'> $pertetotaleTA </td>";
echo "</tr>";
echo "</tbody>";
echo "</table>";
//--------------- Fermeture de la bdd ---------------//
odbc_close($conn);
?>
<!--------------- Fin page utilisateur --------------->
</form>
</body>
</html> -
Essaie de rajouter
alert(valeuCheck);
entrevaleurCheck=document.form.check.value;
etvaleurCheckDansLien="Modif_form.php?check="+valeurCheck;
Pour voir déjà si tu récupère bien la bonne valeur.
Après dis moi, tu as quoi dans la barre d'adresse de la fenêtre qui apparait?
Parce que à première vu ça devrait fonctionner même si je ne connais pas toutes les subtilités de la fonction window.open() -
donc depuis que j'ai rajouter la ligne j'ai une erreur qui me dit undefinned
et quand la fenetre s'ouvre
la barre d'adresse est
http://127.0.0.1/Logiciel/Modif_form.php?check=undefined -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Pour récupérer un objet en Javascript, il est plutot conseillé d'utiliser la fonction getElementById
Donc remplace ton :<input type=\"radio\" name=\"check\" value='".$CHOIX."'>
par :<input type=\"radio\" id=\"check\" name=\"check\" value='".$CHOIX."' />
Et pour récupérer la valeur tu remplaces :valeurCheck=document.form.check.value;
par :valeurCheck=document.getElementById('check').value;
Et enfin tu essaies d'afficher avec lealert(valeurCheck);
que je t'ai mis tout à l'heure
Je ne sais pas si ça va changer grand chose ... Mais ça ne coute rien d'essayer ^^
Perso j'ai fait ce petit test :<input type="radio" id="test" value="teeest" /> <input type="button" value="test" onclick="alert(document.getElementById('test').value);" />
Et j'ai bien une petite popup avec teeest -
donc j'ai tout modifier et ....
J'y est cru un instant mais non
Ca me renvoie toujours le meme est ce normal?
Meme si ca ne fonctionne pas au moins il y a de l'amélioration puisque déja je récupère une valeur ca fait plaisir.
Par conttre je ne vois pas pourquoi il récupère que la première
bizarre non? -
-
Oui c'est normal, ta fonction ne sait pas quel bouton radio choisir alors elle choisit le premier..
Il faut que tu les différencie et que tu lui précise laquelle choisir -
vous avez un conseil a me donner??
car je ne vois pas trop comment appellé un bouton radio dans une boucle... -
Alors le mieux je pense est de lui donner un :
id=\"check_" . $i . "\"
et d'incrémenter ce $i à chaque ligne du tableau (donc à chaque tour dans la boucle des résultats)
Ensuite en Javascript, récupérer la valeur avec document.getElementById('check_' + i).value où i sera incrémenté comme le $i dans une boucle.
Après pour chaque valeur, il faut vérifier si le bouton radio est bien sélectionné (ça je ne sais pas faire par contre :s )
Et s'il est sélectioné, tu le met dans la variable valeurCheck. -
Voila j'ai un petit peu avancer et je vien de voir ton post qui correspond a ma réflexion
alors dans le tableau je fais
echo "<td class='table-ligne1-centre' width='100'> <input type=\"radio\" id=\"check_" . $i++ . "\" name=\"check\" value='".$CHOIX."' /> </td>";
et j'ai modifié ma fonction
function ouvreFenetreModifier()
{
valeurCheckDansLien=""
TabChecks=document.getElementsByName('check');
TCL=TabChecks.length();
for(i=0;i<TCL;i++){ // ici on parcourre les elements pour savoir lequel est coché
if(TabChecks[i].checked){
valeurCheckDansLien="Modif_form.php?check="+TabChecks[i].value;
}
if(valeurCheckDansLien.length>0){// si un radio est coché
window.open(valeurCheckDansLien,"","");
}
else {alert("pas de checks selectionné !")} //si pas de radio coché
}
Alors vu que j'y connais rien en JS c'est du bidouillage bref j'espèrais qu'elle fonctionne mais hélas la fenetre quand je clic sur le bouton modifier ne s'ouvre
sauriez vous pourquoi? -
je te le remet en entier alors?
<html>
<!################################################################################################################################>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Utilisateur</title>
<link rel="stylesheet" media="screen" type="text/css" title="identification" href="Application.css">
<script language="Javascript">
function ouvreFenetreModifier()
{
valeurCheckDansLien=""
TabChecks=document.getElementsByName('check');
TCL=TabChecks.length();
for(i=0;i<TCL;i++){ // ici on parcourre les elements pour savoir lequel est coché
if(TabChecks[i].checked){
valeurCheckDansLien="Modif_form.php?check="+TabChecks[i].value;
}
if(valeurCheckDansLien.length>0){// si un radio est coché
window.open(valeurCheckDansLien,"","");
}
else {alert("pas de checks selectionné !")} //si pas de radio coché
}
function ouvreFenetreSupprimer()
{
valeurCheck=document.getElementById('check').value;
valeurCheckDansLien="Del_arret.php?check="+valeurCheck;
window.open(valeurCheckDansLien,"",config='width=600, height=250, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
}
</script>
</head>
<!################################################################################################################################>
<body onload="runClock()">
<form method="post" name="form">
<!--------------- Bannière --------------->
<div id="ban2" > </div>
<!--------------- Boutton --------------->
<div style="text-align: center;">
<input name="lien1" value="Arrêt chaîne" onclick="window.open('Form_utilisateur.php', 'utilisateur', config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');" type="button">
<input type="button" name="lien2" value="Modifier" onClick="ouvreFenetreModifier();">
<input type="button" name="lien3" value="Supprimer" onClick="ouvreFenetreSupprimer();">
<input name="lien4" value="Imprimer" onclick="edition();return false;"type="button">
</div>
<br>
<!--------------- Heure défilant --------------->
<div id="time"></div>
<!--------------- Tableau de gestion des arrêts chaîne --------------->
<?php
require('Connexion.php');
require('Requete.php');
//--------------- Requete du tableau des arrêts chaîne ---------------//
$sql0="SELECT * FROM ARRET_CHAINE WHERE DEBUT =#$date#";
$rs = odbc_exec($conn,$sql0) or die('Erreur SQL : <br />'.$sql0);
//--------------- Tableau des arrêts chaîne ---------------//
echo "<div style='overflow-y: scroll; height: 305'> ";
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'> Ouverture: $ouverture      Cadence: $cadence      Taktime: $total </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>";
while (odbc_fetch_row($rs))
{
$CHOIX = 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=\"radio\" id=\"check_" .$i++. "\" name=\"check\" value='".$CHOIX."' /> </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>";
//--------------- Tableau des informations générales de la journée ---------------//
echo "<br>";
echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
echo "<tbody>";
echo "<table style='width: 500px; height: 90px;' border='5' cellpadding='2' cellspacing='1'>";
echo "<tr>";
echo "<td class='table-titre' colspan='13'> Infos en temps réel </td>";
echo "</tr>";
//--------------- En tete de colonne ---------------//
echo "<tr>";
echo "<td class='table-entete' width='1'>Nombre d'arrêt </td>";
echo "<td class='table-entete' width='1'>Durée perdu </td>";
echo "<td class='table-entete-centre' width='20'>Pertes TA </td>";
echo "<td class='table-entete-centre' width='20'></td>";
echo "<td class='table-entete-centre' width='20'>Info </td>";
echo "<td class='table-entete-centre' width='20'>Trou </td>";
echo "<td class='table-entete-centre' width='20'></td>";
echo "<td class='table-entete-centre' width='50'>Durée total perdu </td>";
echo "<td class='table-entete-centre' width='50'>TA total perdu </td>";
echo "</tr>";
//--------------- RESULTATS ---------------//
echo "<tr>";
echo "<td class='table-ligne1-centre' width='100'> $my_array[0] </td>";
echo "<td class='table-ligne1-centre' width='100'> $dureeperdu </td>";
echo "<td class='table-ligne1-centre' width='100'> $perteTA </td>";
echo "<td class='table-ligne1-centre' width='2'></td>";
echo "<td class='table-ligne1-centre' width='100'> $dureeinfo </td>";
echo "<td class='table-ligne1-centre' width='100'> $resultat </td>";
echo "<td class='table-ligne1-centre' width='2'></td>";
echo "<td class='table-ligne1-centre' width='100'> $totalduree </td>";
echo "<td class='table-ligne1-centre' width='100'> $pertetotaleTA </td>";
echo "</tr>";
echo "</tbody>";
echo "</table>";
//--------------- Fermeture de la bdd ---------------//
odbc_close($conn);
?>
<!--------------- Fin page utilisateur --------------->
</form>
</body>
</html> -
-
lol spongebob c'est assez constructif comme réponse ca mdr
Mais bon c'est ton choix -
Ouas j'avoue spongebob ... :p
Bon en attendant moi j'ai pas eu la flemme ^^
Voilà la fonction qui fonctionne (chez moi en tout cas ^^ )
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_form.php?check="+TabChecks[i].value;
}
}
if( valeurCheckDansLien.length > 0){// si un radio est coché
widow.open(valeurCheckDansLien, "", "");
} else {
alert("pas de checks selectionné !") //si pas de radio coché
}
}
J'ai remplacé TCL=TabChecks.length() ;
par : TCL=TabChecks.length;
Et je crois qu'il y avait une erreur dans l'ouverture/fermeture de boucle.
La boucle for() { } englobait les si, ce qui posait problème ^^
Dis moi si ça fonctionne
Sinon ton bidouillage était pas mal :) -
Bah hélas je peut pas te dire si ca fonctionne car la fenetre quand je clique sur modifier la fenetre ne s'ouvre toujours pas
-
Merci de compatir avec mon choix, sinon sa avance ton pb d'une simplicité hors du commun ?
-
Remplace ça : widow.open(valeurCheckDansLien, "", "");
Par : alert(valeurCheckDansLien);
Et dis moi déjà ce qui s'affiche dans la popup. -
hélas ca avance mais on ne voit pas le résultat lol
C'est si simple que ca??? -
désolé j'avais pas vu ta réponse lol
Rien ne se passe toujours pas de popup qui s'ouvre
- 1
- 2