variable a la place d'un indice dans un tableau en js

variable a la place d'un indice dans un tableau en js - HTML/CSS - Programmation

Marsh Posté le 07-05-2007 à 17:33:39    

bonjour

 

voici mon problème j'ai une fonction qui doit faire apparaître le contenu d'un tableau js en fonction d'une valeur choisie dans une liste déroulante

 

function afficher(main)
 {
 var indice =document.main.listmodif.value;

 

document.main.date.value=indice;
document.main.titre_court.value=arr[1][1];
document.main.titre_long.value=arr[indice][1];
 }

 

voici comment se présente ma fonction

 

cette ligne me permet juste de vérifier que j'ai bien le bonne indice
document.main.date.value=indice;

 

cette ligne est juste pour vérifier que le tableau existe bien
document.main.titre_court.value=arr[1][1];

 

mais concrètement c'est juste des moyen de vérifications pour moi
mon problème se situe à la troisième
document.main.titre_long.value=arr[indice][1];

 

ou apparemment indice est interprète comme le mot indice alors que je voudrai que ca utilise le contenu de cette variable

 

je suppose que c'est mon écriture de indice entre crochet qui est mal faite
mais suite à de multiple recherches je n'est pas trouvées de réponses j'ai surtout trouvées des sujet n'ayant aucun rapport =)

 

merci de vos future réponses


Message édité par crash-burn le 07-05-2007 à 17:37:06
Reply

Marsh Posté le 07-05-2007 à 17:33:39   

Reply

Marsh Posté le 07-05-2007 à 17:45:33    

T'as fais un alert de indice?


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 07-05-2007 à 18:01:26    

pourquoi devrai je faire une alerte de indice?  
 
pour verifier qu'il a bien une valeur ?  
 
si c'est pour cela j'ai deja :
 
document.main.date.value=indice;
 
pour verifier qu'il a bien une valeur

Reply

Marsh Posté le 08-05-2007 à 04:07:26    

deja un array comment à 0 pour le premier indice et on pourrait voir tout ton code ?

Reply

Marsh Posté le 08-05-2007 à 10:00:43    

<?php
 
  // Ci dessous, la fonction php2js et son utilisation dans la foullée
     
     
  /*
    * C'est ce qu'on appelle de "L'extrem programming", c'est à dire du code craché en 20 minutes... n'y perdez pas vos yeux ;)
    * ...
    * Le but :
    * transformer un tableau PHP, même mutli-dimensionnel, en un tableau JS
    * !!! Ce tableau ne doit pas contenir d'objet ou ressource PHP !!! (pas de contrôle, mais le script JS plantera)
    *
    * En entree :
    * (array) $php_array => le tableau PHP à traduire en JS
    * (STRING) $js_array_name => le nom du tableau JS qui sera construit
    *
    * En sortie :
    * (string) => le script JS permettant la construction du tableau
    *
    * En cas d'erreur :
    * retourne FALSE et une erreur de type E_USER_NOTICE est generée
    */
 
    function php2js( $php_array, $js_array_name ) {
    // contrôle des parametres d'entrée
    if( !is_array( $php_array ) ) {
     trigger_error( "php2js() => 'array' attendu en parametre 1, '".gettype($array)."' fourni !?!" );
     return false;
     }
     if( !is_string( $js_array_name ) ) {
     trigger_error( "php2js() => 'string' attendu en parametre 2, '".gettype($array)."' fourni !?!" );
     return false;
     }
     
     // Création du tableau en JS
     $script_js = "var $js_array_name = new Array();\n";
     
     // on rempli le tableau JS à partir des valeurs de son homologue PHP
     foreach( $php_array as $key => $value ) {
     
     // pouf, on tombe sur une dimension supplementaire
     if( is_array($value) ) {
     // On va demander la création d'un tableau JS temporaire
     $temp = uniqid('temp_'); // on lui choisi un nom bien barbare
     $t = php2js( $value, $temp ); // et on creer le script JS
     // En cas d'erreur, remonter l'info aux récursions supérieures
     if( $t===false ) return false;
     
     // Ajout du script de création du tableau JS temporaire
     $script_js.= $t;
     // puis on applique ce tableau temporaire à celui en cours de construction
     $script_js.= "{$js_array_name}['{$key}'] = {$temp};\n";
     }
     
     // Si la clef est un entier, pas de guillemets
     elseif( is_int($key) ) $script_js.= "{$js_array_name}[{$key}] = '{$value}';\n";
     
     // sinon avec les guillemets
     else $script_js.= "{$js_array_name}['{$key}'] = '{$value}';\n";
     }
     
     // Et retourn le script JS
    return $script_js;
     }
    // fin de la fonction php2js
     
    //création du tableau en php  
     //connexion à mysql
    mysql_connect("localhost", "root", "root" );
     
    // connexion à la base de données siteBP
    mysql_select_db("siteBP" );
     
    // on crée la requête SQL
    $sql = 'SELECT * FROM base_news';  
 
    // on envoie la requête
    $req = mysql_query($sql);  
     
    // compte le nombre de tuple de la requete
    $res = mysql_num_rows($req);  
     
    // pour chaque ligne du tableau  
    for($i=1;$i<=$res;$i++)
    {
     
     $donnees = mysql_fetch_array($req);
     
     // pour chaque colonne du tableau
     for($j=1;$j<=7;$j++)
     {
      // on recherche la bonne colonne pour avoir la meme forme que la base de données
      switch($j)
         {
         case '1':
             $arr[$i][$j]=$donnees['id'];
             break;
         case '2':
       $arr[$i][$j]=$donnees['date'];
             break;
         case '3':
             $arr[$i][$j]=$donnees['titre_court'];
             break;
         case '4':
             $arr[$i][$j]=$donnees['titre_long'];
             break;
         case '5':
             $arr[$i][$j]=$donnees['information'];
             break;
      case '6':
             $arr[$i][$j]=$donnees['photo_1'];
             break;
      case '7':
             $arr[$i][$j]=$donnees['photo_2'];
             break;
         }  
     }
    }
     ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
   <title>mot de passe</title>
    <style type="text/css">
     #tableaux
     {
      margin-left: 100px;
      margin-top: 10px;
      scrolling=yes;
      overflow: auto;
      height: 200px;
     }
     #new
     {
      margin-top: 100px;
      border: 1px solid black;
     }
    </style>
     
    <SCRIPT language="javascript" type="text/javascript">
     //////////////////////////////////////////////////////////////////////////////////////
     //création du tableau JS ici
     //////////////////////////////////////////////////////////////////////////////////////
     <?php echo php2js($arr,'arr');?>
     
     //////////////////////////////////////////////////////////////////////////////////////
     //affichage dasn chaque zone de saisie les informations à modifier
     //////////////////////////////////////////////////////////////////////////////////////
     function afficher(main)
     {
      var indice =document.main.listmodif.value;
      if (indice!=0)
      {
       document.main.date.value=arr[indice][2];
       document.main.titre_court.value=arr[indice][3];
       document.main.titre_long.value=arr[indice][4];
       document.main.information.value=arr[indice][5];
       document.main.photo_1.value=arr[indice][6];
       document.main.photo_2.value=arr[indice][7];
       
      }
      else
      {
       document.main.date.value="";
       document.main.titre_court.value="";
       document.main.titre_long.value="";
       document.main.information.value="";
       document.main.photo_1.value="";
       document.main.photo_2.value="";
       document.main.important.checked=false;
      }
     }
     
     //////////////////////////////////////////////////////////////////////////////////////
     //fonction : on coche tous si la checkbox principal est cocher est vice versa
     //////////////////////////////////////////////////////////////////////////////////////
     
     function checkall()
     {
     // compte tous les éléments du formulaire en numérotant chronologiquement
     temp = document.main.elements.length;
     if (document.main.elements[0].checked)
     { // si la case est cochée
     for (i=1; i < temp; i++)
     { // on coche toutes les autres
     document.main.elements[i].checked=1;
     }
     }
     else
     {
     for (i=1; i < temp; i++)
     { // on décoche tout
     document.main.elements[i].checked=0;
     }
     }
     }  
 
     //////////////////////////////////////////////////////////////////////////////////////
     //fonction : comptage des cases cocher secondaire pour cocher ou non la checkbox principal
     //////////////////////////////////////////////////////////////////////////////////////
     
     function checkone()
     {
     m=0; // initialisation du nombre de cases cochées
     temp = document.main.elements.length;
     for (i=1; i < temp; i++)
     { // on commence à 1 pour ne pas prendre en compte la checkbox principale
     if (document.main.elements[i].checked)
     { // si la checkbox courante est cochée, on comptabilise
     m++;
     }
     }
     if (document.main.elements[0].checked)
     { // si la checkbox principale est cochée, on la décoche
     document.main.elements[0].checked=0;
     }
     else
     { // dans le cas contraire, on vérifie que toutes les checkbox sont cochées
     if (m == (temp-1)) document.main.elements[0].checked=1;
     }
     }  
     
     //////////////////////////////////////////////////////////////////////////////////////
     //fonction : verification d'au moin une checkbox
     //////////////////////////////////////////////////////////////////////////////////////
     function verifselection()
     {
      n=0;
      temp = document.main.elements.length;
      for (i=1; i< temp;i++)
      {
       if (document.main.elements[i].checked)
       {
        n=n+1;
       }
      }
     }
    </SCRIPT>
  </head>
  <body>
   
   
   <h2 align=center>les news</h2>
   <hr />
   <p>
   <?php
     //connexion à mysql
    mysql_connect("localhost", "root", "root" );
     
    // connexion à la base de données siteBP
    mysql_select_db("siteBP" );
     
    // on selectionne l'ensemble de la table que l'on met dans la variable reponse
    $reponse = mysql_query("SELECT * FROM `base_news` order by date" )or die(mysql_error());
   
   ?>
   <form name="main" method="POST" action="add.php">
   <fieldset>
    <legend>les news</legend>
     <div id=tableaux>
      <table border=1 WIDTH=90%>
       <tr>
        <!-- affichage des noms de chaque colone du tableur  -->
        <th><input type="checkbox" name="check_all" onclick="checkall()"></th>
        <th>date</th>
        <th>titre court</th>
        <th>titre long</th>
        <th>information</th>
        <th>photo 1</th>
        <th>photo 2</th>
        <th>important</th>
       </tr>
       <tr>
        <?php
         while ($donnees = mysql_fetch_array($reponse) )
         {
          //boucle pour afficher chaque tuple en lui assimilant une checkbox qui aurait pour identifiant check[id]
          echo"<td><input type='checkbox' name='check[]' value='".$donnees['id']."' onclick='checkone()'></td>";
          echo"<td>".$donnees['date']."</td>";
          echo"<td>".$donnees['titre_court']."</td>";
          echo"<td>".$donnees['titre_long']."</td>";
          echo"<td>".$donnees['information']."</td>";
          echo"<td>".$donnees['photo_1']."</td>";
          echo"<td>".$donnees['photo_2']."</td>";
          echo"<td>".$donnees['important']."</td>";
          echo"</tr>";
         }
        ?>
       </tr>  
      </table>
      <br />
     </div>
     <br />
     <!--  bouton faisant appele au code java pour verifier que au moins une checkbox est selectionée si oui fait appel a la page supprimer.php-->
     <input type="submit" name="btsupprimer" value="supprimer" onclick="javascript:verifselection();">
     
   </fieldset>
   
   <!--  formulaire de saisie des champ afin d'etre ajouter dasn la base de données ou modifier-->
    <fieldset>
     <legend>ajouter ou modifier</legend>
     
     <div align=center>
      <p>
       <!--  champ à saisir-->
       <label>le titre court : <input type="text" name="titre_court"></label>
       <label>le titre long : <input type="text" name="titre_long"></label>
       <label>la date : <input type="text" name="date"></label>
      </p>
       <label>information : <textarea name="information" rows="10" cols="50" wrap="hard"></textarea></label>
      <p>
       <!--  bouton parcourir qui ouvre une fenetre afin de selectionner un fichier-->
       photo1 :  <input name="photo_1" type="file" size="50" maxlength="50" accept="text/*">
      </p>
      <p>
       <!--  bouton parcourir qui ouvre une fenetre afin de selectionner un fichier-->
       photo2 :  <input name="photo_2" type="file" size="50" maxlength="50" accept="text/*">
      </p>
     </div>  
     
     <div align=center>
      <!--  bouton ajouter faisant appel à add.php-->
      ajouter la new <input type="submit" name="btajouter" value="ajouter">
      <input type="checkbox" name="important" value="oui">important
      <br /><br />
       
      selection de la news à modifier :
       
      <select name="listmodif" id="listmodif" onchange="afficher(main)">
       <?php
        //zone de liste deroulante remplie par la boucle
        $result = mysql_query("SELECT id, titre_court FROM base_news" )or die(mysql_error());
        echo "<option value=\"0 \" ";
        echo ">aucun </option>";
        while($row = mysql_fetch_array($result))
        {
         $vartitre=$row['titre_court'];
         $varid=$row['id'];
         echo "<option value=\"$varid \" ";
         echo ">$vartitre </option>";
        }
       ?>
      </select>
       
      modifier la new <input type="submit" name="btmodifier" value="modifier">
     </div>
     
    </fieldset>
   </form>
   <?php
    //fin du travail sur la base de données
    // Déconnexion de MySQL
    mysql_close();  
   ?>
   </p>
  </body>
 </html>
 
 
comme je l'est deja dit le tableau marche nickel mon indice contient belle est bien une valeur il s'agit juste de linterpretation du mot indice entre les crochets qui pose probleme
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed