IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Gestion de select avec php et javascript


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    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 :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    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.

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Salut,

    à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ;-)

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	}
    }
    ?>

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    randsr[i] = new Array();
    dans mon for et la ça marche.
    Merci quand même pour ton aide.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    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 .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Gestion des images avec PHP et MySQL
    Par helio500 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2013, 09h39
  2. [SQL-Server] Gestion des erreurs avec PHP
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 05/04/2010, 18h21
  3. Le <select avec PHP
    Par fourniey dans le forum Langage
    Réponses: 15
    Dernier message: 01/02/2008, 16h18
  4. [ODBC] Probleme sur un SELECTED de SELECT avec PHP
    Par G.D.O dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 27/03/2006, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo