Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 17/03/2008, 22h49   #1
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Par défaut [PHP-JS] Gestion de select avec php et javascript

Bonjours, j'ai écrits une fonction PHP qui transmet un tableau à Javascript en le remplissant. Puis place dans un select(2) une partie du tableau quand le select(1) change. Cependant, Mon navigateur (Internet Explorer) m'indique une erreur :
Citation:
Ligne: 26
Caractère: 11
Erreur: 'randsr[...].length' a la valeur Null ou n'est pas un objet.
Code: 0
Ma fonction php :
Code php :
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
function listrayonsrayon()
{
 
require("identsql.php");
mysql_connect($dbhost,$dbuser,$dbpass) or die("La Connexion a échouée");
 mysql_select_db($dbbase) or die("La Base $dbbase n'existe pas");
  $requete="SELECT nom,rayon FROM m_srayon ORDER BY rayon ASC";
 $result=mysql_query($requete);
 $p=mysql_result($result , 0 , "rayon");
 $o=mysql_num_rows($result);
 $q=0;
 $r=0;
 for($i=0;$i<$o;$i++)
     {
    if(mysql_result($result , $i , "rayon")!=$p)
        {
        $q=0;
        $r++;
        $p=mysql_result($result , $i , "rayon");
        } 
    echo "\n randsr[".$r."][".$q."] ='".mysql_result($result , $i , "nom")."'; \n randr[".$r."] = '".mysql_result($result , $i , "rayon")."'; \n";
    $q++;
 
    }
mysql_close();
}

Mon code javascript qui est entre mes balises head:
Code Javascript :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script language="javascript">
var randsr= new Array();
var randr= new Array();
<?php listrayonsrayon(); ?>
function mlrsr()
{
var lavaleurr= document.getElementById('leraayon').options[document.getElementById('leraayon').selectedIndex].value;
for (var i=0; i<randr.length; i++)
    {
    if(randr[i]==lavaleurr) lavaleurr = i;
    }
 
 
for (i=0; i < randsr[lavaleurr].length; i++)
{ 
document.getElementById('lesraayon').options[i] = new Option(randsr[lavaleurr][i]);
}
}
</script>

Et mes select du formulaire:
Code :
1
2
3
4
5
6
7
8
 
<select name="leraayon" onchange="mlrsr()" id="leraayon">
          <?php listrayon() // creer des options et fonctionne bien?>
 
</select>
 
<select name="lesraayon" id="lesraayon">
</select>
Quand j'affiche la page dans mon navigateur et que j'affiche le code source il me donne :
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
<script language="javascript">
var randsr= new Array();
var randr= new Array();
 
 randsr[0][0] ='Pantalon'; 
 randr[0] = 'Coté Femme'; 
 
 randsr[1][0] ='Ballerines & Mocasins'; 
 randr[1] = 'Espace Chaussure'; 
 
 randsr[2][0] =Pantalon'; 
 randr[2] = 'Espace Homme'; 
function mlrsr()
{
var lavaleurr = document.getElementById('leraayon').options[document.getElementById('leraayon').selectedIndex].value;
for (var i=0; i<randr.length; i++)
    {
    if(randr[i]==lavaleurr) lavaleurr = i;
    }
 
 
for (i0; i < randsr[lavaleurr].length; i++)
{ 
document.getElementById('lesraayon').options[i] = new Option(randsr[lavaleurr][i]);
}
}
</script>
et dans le body il me donne pour mes select :
Code html :
1
2
3
4
5
6
7
8
9
 
<select name="leraayon" onchange="mlrsr()" id="leraayon">
          <option value="Espace Chaussure">Espace Chaussure</option>
          <option value="Rayon Homme">Rayon Homme</option>
          <option value="Coté Femme">Coté Femme</option>          
</select>
 
<select name="lesraayon" id="lesraayon">
</select>
Je ne comprend pas d'ou viens cette erreur.
omdafer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2008, 22h14   #2
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Il semblerai que ma variable Javascript randsr est déclaré qu'a une seule dimension.
Du PHP mixé avec du Javascript, mais le problème semble venir de mon tableau. est-ce toujour le bon tropic ?

Pour déclarer un tableau a deux dimension en javascipt, je ne connais pas trop la syntaxe.
omdafer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2008, 19h58   #3
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Salut,

à la place de

Code :
1
2
3
4
5
6
7
8
 randsr[0][0] ='Pantalon'; 
 randr[0] = 'Coté Femme'; 
 
 randsr[1][0] ='Ballerines & Mocasins'; 
 randr[1] = 'Espace Chaussure'; 
 
 randsr[2][0] ='Pantalon'; 
 randr[2] = 'Espace Homme';
essaye plutot

Code :
1
2
3
 
$randr[0] = 'Coté femme';
$randr[0] = ['Pantalon'];

je ne suis pas spécialiste JS mais ça m'a l'air d'être comme ça si j'en crois un code sur le quel je suis tombé un peu par hasard :

Code :
1
2
3
4
5
6
 
var cities=new Array()
cities[0]=""
cities[1]=["New York|newyorkvalue", "Los Angeles|loangelesvalue", "Chicago|chicagovalue", "Houston|houstonvalue", "Austin|austinvalue"]
cities[2]=["Vancouver|vancouvervalue", "Tonronto|torontovalue", "Montreal|montrealvalue", "Calgary|calgaryvalue"]
cities[3]=["London|londonvalue", "Glasgow|glasgowsvalue", "Manchester|manchestervalue", "Edinburgh|edinburghvalue", "Birmingham|birminghamvalue"]
code qui affichait les villes en fonction d'un pays choisi...
Si on réfléchit bien, le premier tableau renseigne sur l'ID du pays, et le 2ieme est forcément un 2ieme array() contenant les villes ;-)
(et l'utilisation des [] fait bien penser à un array dans un array )

mon code est p-e pas hyper exact, mais il devrait te mener sur la piste



EDIT
Non pas que je cherche spécialement pour toi, mais j'suis encore tombé sur un truc par hasard... ^^

http://developer.mozilla.org/fr/docs...39;objet_Array
tout en bas de page ;-)

Citation:
Tableaux bidimensionnels
Encore un EDIT
hum ben dis donc... finalement j'ai du faire un peu comme toi : un tableau bi-dimensionnel... voici mon code, il fonctionne et j'espère qu'il pourra t'aider

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
 
<script type="text/javascript">
	var albums = new Array();
	albums[0] = "RIEN";
</script>
<?php
$q = mysql_query("SELECT * FROM lyrics GROUP BY author ORDER BY author ASC");
for( $i = 1; $r = mysql_fetch_array($q); $i++ ) {
	?>
	<script type="text/javascript">
		i = <?php echo $i; ?>;
		albums[i] = new Array(); // création dynamique du sous-tableau
	</script>
	<?php
	$q1 = mysql_query("SELECT * FROM lyrics WHERE author = '".$r["author"]."' GROUP BY album ORDER BY album ASC");
	for( $j = 0; $r1 = mysql_fetch_array($q1); $j++ ) {
		?>
        <script type="text/javascript">
			j = <?php echo $j; ?>;
			albums[i][j] = "<?php echo $r1["album"]; ?>"; // insertion des données
		</script>
        <?php
	}
}
?>
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2008, 12h35   #4
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Désolé je n'avais pas lu ton message et j'ai résolue le pb. J'ai du faire un peu près la même chose :
Code :
randsr[i] = new Array();
dans mon for et la ça marche.
Merci quand même pour ton aide.
omdafer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2008, 12h45   #5
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Sur le lien, ils expliquent de cette manière aussi.
avec des "for", des "while", etc...
apparement, c'est ça l'allocation dynamique en javascript .
omdafer 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 09h13.


 
 
 
 
Partenaires

Hébergement Web