Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/05/2011, 19h23   #1
Futur Membre du Club
 
Homme Hotei Goom
Chef de projet MOA
Inscription : décembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Hotei Goom
Localisation : France

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2009
Messages : 26
Points : 18
Points : 18
Par défaut liste déroulante et ajout de la meme liste sans la selection

Bonjour à tous.

Je n'ai pas réussi a trouvé un sujet qui ressemblait a celui la, je pose donc ma question en espérant des réponses qui aideront je suis sur beaucoup de monde.

Je suis en train d'essayer de faire apparaître des listes déroulantes via une base de données, jusque la tout va bien :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<table>
<tr>
	<td><strong>Don</td>
	<td><select id="datedebcours" name="datedebcours" onKeyup="couleur(this)">
			  <option value="">&nbsp;</option>
			<?php $query ="SELECT * FROM `dons` ";
			$retournee =  envoiRequete($query);
 
			while($donnees = mysql_fetch_array($retournee))
			{?>
				<option value="<?php echo $donnees['id_dons']; ?>"><?php echo $donnees['nom_dons']; ?></option>
			<?php 	} ?>
		</select></td>
		<td><input type="button" name="plus1" id="plus1" value="+" onclick="addline()" /></td>
</tr>
</table>
J'aimerai dans un premier temps ajouter la même liste juste en dessous de la première en cliquant sur le bouton +
et dans un deuxieme temps, que la proposition sélectionnée dans la liste précédente soit grisée, non sélectionnable ou même non apparente.

Auriez vous une idée, un code, bout de code?

merci d'avance pour vos propositions.
Hotei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 22h54   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Salut !
Il suffit, dans la 1re liste, de ne pas réafficher le <option> précédemment sélectionné.

Code :
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
<?php
 
// Données à afficher
$data = array('Italie', 'France', 'Espagne', 'Allemagne', 'Suisse') ;
 
?>
 
<form>
    <select name="country">
        <?php foreach ( $data as $country ) : ?>
            <?php if ( ! isset($_GET['country']) || $country != $_GET['country'] ) : ?>
                <option><?php echo $country ?></option>
            <?php endif ?>
        <?php endforeach ?>
    </select>
    <input type="submit" value="+">
 
    <?php if ( isset($_GET['country']) ) : ?>
        <select>
            <?php foreach ( $data as $country ) : ?>
                <option><?php echo $country ?></option>
            <?php endforeach ?>
        </select>
    <?php endif ?>
</form>
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 14h47   #3
Futur Membre du Club
 
Homme Hotei Goom
Chef de projet MOA
Inscription : décembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Hotei Goom
Localisation : France

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2009
Messages : 26
Points : 18
Points : 18
Merci pour ta réponse rapide.

Cependant cette manip fonctionne pour 1 seul ajout. en fait mon idée serait plus dans ce style :
http://www.institutparisien.fr/inscr...ntensif/cours/
C'est l'inscription d'une école de français pour les étrangers.
A chaque fois qu'on clique sur le bouton ajouter, ça "valide" la ligne d'au dessus et ajoute une nouvelle. tout en sélectionnant la date d’après. malheureusement ici, la même date peut être choisie plusieurs fois. Je trouve par contre ce listing bien sympa. Et le tout sans recharger la page

Merci.

P.S : je ne travaille pas pour ce site évidement donc ce n'est pas de la pub que je fais ^_^
Hotei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 15h19   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Le principe reste le même pour $x <select> ;-)

Dans l'exemple que tu fournis la prog est bcp plus simple car tout est effectué en JavaScript, pas de persistance des données à gérer.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h19   #5
Futur Membre du Club
 
Homme Hotei Goom
Chef de projet MOA
Inscription : décembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Hotei Goom
Localisation : France

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2009
Messages : 26
Points : 18
Points : 18
Merci, mais je ne vois pas trop comment ajouter une ligne en plus a chaque fois que je clique sur le bouton. (dans le cas présent ça serait pour afficher jusqu'à 20 fois la liste tout en enlevant à chaque fois l'item pris précédemment.)

J'aimerai aussi ne pas avoir a recharger la page et surtout garder les choix plutot que de ré-afficher la liste.

sinon oui désolé pour le js du lien. je n'avais pas pris la peine de vérifier le langage utilisé.

merci pour le temps que tu m'accordes.
Hotei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h25   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Citation:
J'aimerai aussi ne pas avoir a recharger la page
Vois sur le forum JavaScript
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2011, 16h19   #7
Futur Membre du Club
 
Homme Hotei Goom
Chef de projet MOA
Inscription : décembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Hotei Goom
Localisation : France

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2009
Messages : 26
Points : 18
Points : 18
Bon, je suis passé autrement et ajouté de l'ajax pour ne pas avoir a recharger la page ni poser les variables dans l'adresse.

Je vous pose ici les 2 pages. il y a surement une méthode plus optimisée mais a mon niveau de codage... si vous avez des commentaires dessus et une optimisation, je suis preneur.

index.php
Code :
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
121
<html>
<head>
	<title>test choix dons</title>
	<script type="text/javascript" src="prototype-1.5.0.js"></script>
	<script language="javascript">
	 /* ---------------------------- */
	/* XMLHTTPRequest Enable 		*/
	/* ---------------------------- */
	function createObject() 
	{
		var request_type;
		var browser = navigator.appName;
		if(browser == "Microsoft Internet Explorer")
		{
			request_type = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else
		{
			request_type = new XMLHttpRequest();
		}
		return request_type;
	}
 
	var http = createObject();
 
	function selectdon(element)
	{
		//NB DE DONS DEJA PRIS 
		var  nomb_don = document.getElementById('compteur');
		var nb =  nomb_don.value;
		nomb_don.value=parseInt(nb,10)+1;
		//REGARDE CE QUIL A PRIS 
		var  don = document.getElementById(element); 
		id_don = don.value;
		//ON ECRIS DANS LETAT 
		var don_pris = document.getElementById('valdon_'+nomb_don.value);
		don_pris.value=id_don;
 
		//on recupere les id  et prepare la variable a passer en get++
		var infos_get ="";
 
		for(var i=1;i<5;i++)
		{
			var nom='valdon_'+i;
			var element = document.getElementById(nom);
			var id = element.value;
			if( i == 1 )
			{
				infos_get= infos_get+"valdon_"+i+"="+id;
			}
			else
			{
				infos_get= infos_get+"&valdon_"+i+"="+id;
			}
		}
		nocache = Math.random();
		http.open('get','choix.php?'+infos_get+'&nb='+nomb_don.value+'&nocache = '+nocache);
		http.onreadystatechange = autosuggestReply;
		http.send(null);
	}
 
	function autosuggestReply()
	{
		if(http.readyState == 4)
		{
			var  nomb_don = document.getElementById('compteur');
			var nb =  nomb_don.value;
			nomb=parseInt(nb,10)+1;
			var id_ouverteur='don_'+nomb;
			var response = http.responseText; 
			e = document.getElementById(id_ouverteur);
			//alert(response);
			if(response!="")
			{
				e.innerHTML=response;
				//e.value=response;
			}
			else 
			{
				e.value="";
			}
		}
	}
	</script>
</head>
 
<body>
<?php //set up SQL connection
$link = mysql_connect("localhost","root","");
if (! $link)
{
	die ("Couldn't connect to mySQL server");
}
if (!mysql_select_db("mabdd",$link) )
{
	die ("Couldn't open mabdd: ".mysql_error() );
} ?>
 
<select name="select" id="select" onchange="selectdon('select')">
   <option value="">&nbsp;</option>
   <?php 
		$requete="SELECT id_comp , nom_comp  FROM matable";
		$retour = mysql_query($requete)or die("".mysql_error());
		while( $do = mysql_fetch_array($retour))
		{ ?>
	   <option value="<?php echo $do['id_comp']; ?>"><?php echo $do['nom_comp']; ?></option>
  <?php } ?>
</select>
 
<div id="don_2"></div><div id="don_3"></div><div id="don_4"></div><div id="don_5"></div>
 
<!-- console permettant de supprimer dansla liste les id des competences prises -->
<input type="hidden" id="compteur"  value="0"/>
<input type="hidden" id="valdon_1" value="0"/>
<input type="hidden" id="valdon_2" value="0"/>
<input type="hidden" id="valdon_3" value="0"/>
<input type="hidden" id="valdon_4" value="0"/>
<input type="hidden" id="valdon_5" value="0"/>
 
</body>
</html>
choix.php
Code :
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
<?php
//set up SQL connection
$link = mysql_connect("localhost","root","");
if (! $link)
{
	die ("Couldn't connect to mySQL server");
}
if (!mysql_select_db("mabdd",$link) )
{
	die ("Couldn't open mabdd: ".mysql_error() );
}
 
$query_string="";	
$valeur="";	
$or="";	
$nb=0;
//on recupere les valeurs des ids 
for($i=1;$i<5;$i++)
{
	$valeur=$_GET['valdon_'.$i];
 
	if( $valeur != 0 )
	{
		if( $nb > 0 )
		{  $or = "AND "; }
		$query_string .=$or." id_comp !='".$valeur."'"; 
		$nb++;
	}
}
 $nb=$_GET['nb'];
?>
 
<select name='select' id='select<?php echo  $nb; ?>' onchange="selectdon('select<?php echo  $nb; ?>')">
   <option value=''>&nbsp;</option>
		<?php 
		$requete="SELECT id_comp , nom_comp  FROM competence WHERE ".$query_string;
		echo $requete;
		$retour = mysql_query($requete)or die("".mysql_error());
		while( $do = mysql_fetch_array($retour))
		{ ?>
			<option value="<?php echo $do['id_comp']; ?>"><?php echo $do['nom_comp']; ?></option>
  <?php } ?>
</select>
Evidement les fonctions de connection et le js peut etre mis sur une page a part .

Ici on peut choisir jusque 5 choix possibles. pour changer le nombre, il faut dans les 2 boucles for (1 dans chaque page) mettre la limite au nombre voulu, ajouter les div et les hidden dans la page index.

(vous pouvez aussi faire des bouton onclick pour ajouter une nouvelle liste jusqu'a la limite voulue.)

Merci pour vos commentaires en espérant que ca aide des gens.
Hotei est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h44.


 
 
 
 
Partenaires

Hébergement Web