Select Javascript PHP

Fermé
molasson Messages postés 65 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 - 17 mars 2010 à 11:02
molasson Messages postés 65 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 - 17 mars 2010 à 13:52
Bonjour,

Je suis entrain de réaliser un formulaire et je suis confronté à un problème.

Je vous explique, je voudrais que suivant le champ que l'on choisi dans 2 select, un autre select soit modifié directement. Jusque là pas de souci avec onchange. Le problème est que comme le 3ème formulaire qui doit être appelé fait appel à une base de donnée mysql pour être changé, il faudrait que suivant le onchange, on aille chercher les informations dans une autre table.

Un p'tit bout de code pour se rendre compte :

Le javascript
<script type="text/javascript">
var client_choisi = ('bcf');
var type_choisi = ('ecran');
var modeles = client_choisi+'_'+type_choisi;
function choix_client(){
	client_choisi = document.getElementById('client').options[client.selectedIndex].value;
	afficher_modeles();
}
function choix_type(){
	type_choisi = document.getElementById('type').options[type.selectedIndex].value;
	afficher_modeles();
}
function afficher_modeles(){
	modeles = client_choisi+'_'+type_choisi;
}
</script>


Le 3ème formulaire
<select name="modele" id="modele">
    <?php
		$reponse = $bdd->query('SELECT type FROM bcf');
		while ($donnees = $reponse->fetch()){
	?>
        <option value="<?php echo $donnees['modele'];?>"><?php echo $donnees['modele'];?></option>
    <?php
		}
	?>
   	</select>

5 réponses

dreustounet Messages postés 21 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 18 mars 2010 3
17 mars 2010 à 11:32
Bonjour,
Essaye en plaçant un if dans ton 3ème formulaire contenant le PHP, tu auras la possibilité de traiter les cas différents
0
molasson Messages postés 65 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 4
17 mars 2010 à 11:38
Tout d'abord merci pour ta réponse =)

J'y ai penser mais il me faudrait quelque chose d'un peu plus dynamique car il y a beaucoup de formulaire différent et ça serait assez "sale" et long de faire comme ça.

Le top serait de changer pouvoir introduire la variables javascript dans la requête SQL, mais ça ...

Une idée ?
0
dreustounet Messages postés 21 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 18 mars 2010 3
17 mars 2010 à 12:16
Si plusieurs formulaires découlent d'une même selection l'utilisation réorganise l'ensemble et utilise un switch par exemple la page formulaire1.php correspond a un formulaire etc...

switch (condition) {

case ( CHOIX SELECTIONNER) : include ('FORMULAIRE SELECTIONNER');
...

J'espère que l'exemple est clair, cette solution est simpliste mais cependant très efficace je pense
0
molasson Messages postés 65 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 4
17 mars 2010 à 13:11
C'est une bonne idée mais il faudrait faire un switch en javascript pour que je puisse faire la condition avec les variables javascript.

J'ai essayé comme ça, mais ça n'est pas concluent :

<select name="modele" id="modele">
    <script language="javascript">
	switch (modeles) {
 	case 'bcf_pc':
	</script>
    <?php
		$reponse = $bdd->query("SELECT * FROM bcf WHERE type='pc'");
		while ($donnees = $reponse->fetch()){
	?>
        <option value="<?php echo $donnees['modele'];?>"><?php echo $donnees['modele'];?></option>
    <?php
		}
	?>
	<script language="javascript">
	;
	break;
 	default:
	</script>
    <?php
		$reponse = $bdd->query("SELECT * FROM <script>document.write(client_choisi);</script> WHERE type='<script>document.write(type_choisi);</script>'");
		while ($donnees = $reponse->fetch()){
	?>
        <option value="<?php echo $donnees['modele'];?>"><?php echo $donnees['modele'];?></option>
    <?php
		}
	?>
	<script language="javascript">
	;
	break;
}
    </script>
   	</select>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
molasson Messages postés 65 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 4
17 mars 2010 à 13:52
ça avance, j'ai changé un peu de stratégie.

function afficher_modeles(){
	modeles = client_choisi+'_'+type_choisi;
	switch (modeles) {
		case 'bcf_ecran':
		<?php $client = 'bcf'; $type = 'ecran';?>;
		break;
		case 'bcf_pc':
		<?php $client = 'bcf'; $type = 'pc';?>;
		break;
		case 'bcf_imprimente':
		<?php $client = 'bcf'; $type = 'imprimente';?>;
		break;
		case 'bcf_laptop':
		<?php $client = 'bcf'; $type = 'laptop';?>;
		break;
		default: 
		<?php $client = 'bcf'; $type = 'ecran';?>;
		break;
	}
}


<select name="modele" id="modele">
    <?php
		$reponse = $bdd->query('SELECT * FROM ' . $client . ' WHERE type="' . $type . '"');
		while ($donnees = $reponse->fetch()){
	?>
        <option value="<?php echo $donnees['modele'];?>"><?php echo $donnees['modele'];?></option>
    <?php
		}
	?>
</select>


Il faudrait trouvé un moyen pour que le query('SELECT * FROM ' . $client . ' WHERE type="' . $type . '"'); soit remis à jours si on change de client où de type ... Une idée ? =)
0