ahcorad
Messages postés106Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 octobre 2007
-
15 juin 2006 à 15:08
cs_mima1 -
14 févr. 2010 à 13:00
Voila j'ai une page avec un formulaire et une liste déroulante de
fonctions, si la fonction voulu n'est pas présente on peut en ajouter
une en cliquant sur le bouton à coté qui ouvre un pop-up pour ajouter
la fonction voulue.
Tout fonctionne bien mais j'aimerai mettre à jour seulement la liste déroulante et pas toute la page !
que faut-il changer à opener.location.reload(true) ??
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20101 22 juin 2006 à 00:32
Voila, là ca marche. C'était simplement un probleme avec IE (expliquer plus bas dans les commentaires)
Index
<html>
<head>
<script>
function doc(nom) {
if (document.layers) { // NS 4 et <
return document[nom];
}
if (document.all) { // IE
return document.all[nom];
}
if (document.getElementById) {
return document.getElementById(nom);
}
}
function ajouter(nom, value, text) {
formulaire = doc(nom);
// Recuperation des informations
nb = formulaire.length;
// On compte le nombre d'<option />
nouvel_element = new Option(text, value, false, true);
// Creation
// new Option(text, value, DefaultSelected, Selected);
// * text = texte affiché dans la liste
// * value = valeur de la liste à transmettre (facultatif)
// * defaultSelected = transmettre true quand l'élément doit être l'élément sélectionné par défaut, sinon false (facultatif)
// * Selected = transmettre true quand l'élément doit être sélectionné (facultatif)
// /!\ Opera 5.12 n'interprète pas les deux derniers paramètres, Netscape 6.1 n'interprète pas le dernier.
formulaire.options[nb] = nouvel_element;
// Ajout
}
</script>
</head>
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20101 15 juin 2006 à 18:49
Bah, ca recharge que la liste deroulante (Enfin, ajoute)
Sinon, faut voir en Ajax
C'est ca qui ajoute :
formulaire = opener.document.getElementById(name); // On prend le <select /> de la page mere
nb = formulaire.length; // on compte le nombre d'element <option />
nouvel_element = new Option(text, value, false, false); // On crée l'element avec <option value=" value ">text</option>
formulaire.options[nb] = nouvel_element; // On ajoute l'element crée sur l'id nb
<hr />Si ma reponse te convient, merci de l'accepter !
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20101 16 juin 2006 à 12:12
Bah, dans ta popup rajoute le code d'insertion dans la BDD php, mais quand tu valide le formulaire ca ajoute dans le select (Ca marche chez moi)
Sinon, passe ton code à toi
<hr />Si ma reponse te convient, merci de l'accepter !
ahcorad
Messages postés106Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 octobre 2007 17 juin 2006 à 15:16
voila le popup.php je n'est pas modifié le index.htm (il faut peut-etre modifié la liste déroulante en sélectionnnant dans la base de données ???)
<?php require_once('connexion.php'); ?>
<html>
<head>
<script type="text/javascript">
function ajouter(name, value, text){
formulaire = opener.document.getElementById(name);
nb = formulaire.length;
nouvel_element = new Option(text, value, false, false);
formulaire.options[nb] = nouvel_element;
}
function valid() {
value = document.getElementById('value').value;
text = document.getElementById('text').value;
ajouter('nom', value, text);
}
<!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
<?php
if((isset($_POST['text'])) AND (isset($_POST['value'])))
{
$text=trim(ucfirst($_POST['text']));
$value=$_POST['value'];
$add = sprintf("INSERT INTO essai (value, text) VALUES ('$value', '$text')");
$result = mysql_query($add, $connexion) or die(mysql_error());
}
?>
formulaire = opener.document.getElementById(name);
nb = formulaire.length;
nouvel_element = new Option(text, value, false, false);
formulaire.options[nb] = nouvel_element;
}
function valid() {
value = document.getElementById('value').value;
text = document.getElementById('text').value;
ajouter('nom', value, text); // N'oubli pas de modifier le 'nom' en 'Id_de_ton_select' [ <select name ="X" id= " X " >(De la fenetre mere) == > ajouter(' X', value, text); ] }
<!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
<?php
if((isset($_POST['text'])) AND (isset($_POST['value']))) {
$text = htmlentities(trim(ucfirst($_POST['text'])));
$value = htmlentities($_POST['value']);
$add = 'INSERT INTO SET value="' . $value . '", text="' . $text . '" ';
$result = mysql_query($add) or die(mysql_error());
}
?>
</form>
</html>
<hr />Si ma reponse te convient, merci de l'accepter !
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20101 20 juin 2006 à 16:20
Euh ... le popup rafraichi le <select /> de la page mere ... (Enfin, il ajoute)
Je comprend aps trop ...
Et sur la page mere tu dois modifier le (N'oubli pas le id= "") :
<select name=" nom " id ="nom">
<option value="A"> - A</option>
</select>
Et le nom tu dois le modifier dans le popup (ajouter('nom', value, text);) Faut que ce soi le meme sur les deux pages. Sinon, donne carement le code de ta page
<hr />Si ma reponse te convient, merci de l'accepter !
<!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
<?php
if((isset($_POST['text'])) AND (isset($_POST['value'])))
{
$text=htmlentities(trim(ucfirst($_POST['text'])));
$value=htmlentities($_POST['value']);
$add = sprintf("INSERT INTO essai (value, texte) VALUES ('$value', '$text')");
$result = mysql_query($add, $connexion) or die(mysql_error());
}
?>
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20101 21 juin 2006 à 14:20
Lu,
Euh ... et ca ne marche pas ? Moi ca fonctionne sur Mozilla ...
Et le htmlentities() sert à proteger ta varible (transforme les <, > ...en code Html (> ...)) Comme ca ni le code php ni le code html injecter ne s'execute :D
<hr />Si ma reponse te convient, merci de l'accepter !