variable a la place d'un indice dans un tableau en js - HTML/CSS - Programmation
Marsh Posté le 07-05-2007 à 17:45:33
T'as fais un alert de indice?
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
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 ?
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
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