8796 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,

J'ai un tableau qui se compose de plusieurs lignes et de 5 colonnes.

Les lignes ont une couleur aléatoire (grise et verte) grâce à ce code :

Le fichier css externe :

.ligne0 { background-color : #F4FFE4; }
.ligne1 { background-color : #CCCCCC; }


<tr class="'.$couleur.'" id="td_a_mettre_en_jaune_'.$tab['ID'].'">


Une seule des colonnes contient une zone de texte (par ligne), le contenu de cette zone de texte peut être modifié.

Sur le on focus de la ligne du tableau sélectionnée j'ai ceci :

onfocus="this.select();this.style.backgroundColor=\'yellow\';document.getElementById(\'td_a_mettre_en_jaune_'.$tab['ID'].'\').style.backgroundColor=\'yellow\'";


sur le onblur j'ai ceci :


onblur="this.style.backgroundColor=\'white\';document.getElementById(\'td_a_mettre_en_jaune_'.$tab['ID'].'\').style.backgroundColor=\'white\'";"


le problème (vous l'aurez compris) c'est que quand je quitte la ligne (onblur) elle devient blanche et perd donc sa couleur d'origine.

Sauriez-vous me dire comment je peux faire pour qu'elle récupère sa couleur d'origine ?

Voici l'entierté de mon code :

<?php
session_start();
include('../connexion.php');
include('../NomCompletDuCours.php');//cette fonction PHP permet d'afficher le nom complet du cours et si c'est théorie ou travaux pratiques
$_SESSION['id_categories'] = $_POST['id_categories']; 



//affiche le bouton "clôturer" en le désactivant si le cours est clôturé ou en l'activant si le cours n'est pas clôturé
// IMPORTANT : il faut laisser le code ici pour que le bouton apparaisse au-dessus !!!!

$sql_check_cloture = "SELECT Cloture FROM cours WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND Categorie = '".$_POST['id_categories']."' ";
//echo $sql_check_cloture;
$query_check_cloture = mysql_query($sql_check_cloture) or die(mysql_error());
$row_Cloture = mysql_fetch_assoc($query_check_cloture);

$sql_Affichage_Etudiants = 
"SELECT inscrits_en.ID, inscrits_en.MATRICULE_ET, inscrits_en.MNEMONIC, inscrits_en.ANNEE_ACADEMIQUE, inscrits_en.CATEGORIE, inscrits_en.DECISION_ANNEE, inscrits_en.SESSION, inscrits_en.TYPE_DE_COURS, inscrits_en.NOTE, etudiants.NOM_ET, etudiants.PRENOM_ET, inscrits_en.Report
FROM `inscrits_en`
LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET )
WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND CATEGORIE = '".$_POST['id_categories']."' ORDER BY etudiants.NOM_ET ";
 
$query_comptage = mysql_query($sql_Affichage_Etudiants);
 
if(!$query_comptage) {echo('Attention, la requete ne fonctionne pas ! '); }

echo Nom_Complet_Cours($_POST['idmnemonics'],$_POST['id_types'],$_POST['id_categories']); //Nom_Complet_cours est une fonction qui indique le nom du cours
 
$compteur = 0;
echo '<table width="100%" border="1"> 
		<tr>
			<td style="display:none"></td> 
			<td style="display:none"></td> 
			<td align="center">Matricule</td> 
			<td align="center">Nom</td> 
			<td align="center">Prénom</td> 
			<td align="center" width="5">Cote</td> 
			<td align="center">Report</td> 
		</tr>';	 
while ($tab = mysql_fetch_array($query_comptage)){
//gestion de la couleur des lignes, fait appel ? CSS/couleurs.css
$couleur = ($compteur % 2 == 0) ? "ligne0" : "ligne1";
 
//onblur="comparer(document.getElementById(\'note_originale'.$tab['ID'].'\').value, document.getElementById(\'note_zone_de_texte'.$tab['ID'].'\').value);"
 
//chiffres(event) est la fonction javascript qui vérifie les caract?res entrés par l'utilisateur (voir js/ChiffresOnly.js)
//Comparer est la fonction javascript qui vérifie si la cote encodée par le Professeur est la m?me que celle de la base de données, si
//c'est la m?me, on n'exécute pas le code ajax, autrement, on exécute le code AJAX qui va mettre ? jour la bd.
//onfocus="this.select();" permet de donner le focus a la zone de texte soit si il prend le focus par un clic de souris, soit si il prend le focus apr?s une mauvaise entrée (exemple si le visiteur tape "w")

//ci-dessous, je donne un id à tr afin de mettre la ligne en jaune
echo'	 
 <tr class="'.$couleur.'" id="td_a_mettre_en_jaune_'.$tab['ID'].'">
 			<td style="display:none"><input type="hidden" name="note_originale" id="note_originale'.$tab['ID'].'"  value="' . $tab['NOTE'] . '" /></td>  
			<td style="display:none"><input type="hidden" name="i_d" id="i_d" value="' . $tab['ID'] . '" /></td>
			<td width="5%" align="center" id="td_MATRICULE_ET">' . $tab['MATRICULE_ET'] . '</td>  
    		<td width="25%" align="center" id="td_NOM_ET">' . $tab['NOM_ET'] . '</td>  
    		<td width="35%" align="center" id="td_PRENOM_ET">' . $tab['PRENOM_ET'] .'</td>'
			;  
	 
$sql_check_cloture = "SELECT cours.Cloture FROM cours WHERE cours.MNEMONIC = '".$tab['MNEMONIC']."' AND cours.TYPE_DE_COURS = '".$tab['TYPE_DE_COURS']."' AND cours.Categorie = '".$tab['CATEGORIE']."' ";
//echo $sql_check_cloture;
$query_check_cloture = mysql_query($sql_check_cloture) or die(mysql_error());
$row_Cloture = mysql_fetch_assoc($query_check_cloture);
//echo $row_Cloture['Cloture']; 
echo' <td><input name="note_zone_de_texte'.$tab['ID'].'" type="text"';
if($row_Cloture['Cloture'] == 1)  //si le cours est clôturé, on désactive les zones de texte
{
  echo ' disabled="disabled" ';
}

//sur le focus, je sélectionne la valeur (devient bleue), la case devient jaune

if ($tab['Report'] == ''){
//this.style.backgroundColor=\'yellow\'; => met la couleur jaune à une cellule | document.getElementById(\'td_a_mettre_en_jaune_'.$tab['ID'].'\').style.backgroundColor=\'yellow\'"; => met la couleur jaune au reste de la ligne
echo ' id="note_zone_de_texte'.$tab['ID'].'" onfocus="this.select();this.style.backgroundColor=\'yellow\';document.getElementById(\'td_a_mettre_en_jaune_'.$tab['ID'].'\').style.backgroundColor=\'yellow\'"; onchange="verif(this.value,'.$tab['ID'].');" onblur="this.style.backgroundColor=\'white\';document.getElementById(\'td_a_mettre_en_jaune_'.$tab['ID'].'\').style.backgroundColor=\'white\'";"  size="4" style="text-align:center" width="3	%" value="' . $tab['NOTE'] . '"   /> </td>';
echo' <td width="25%" align="center">' . $tab['Report'] .'</td> 
</tr>';
 $compteur++;
}
else
{
	//si la cote est un report, je le désactive
	echo ' id="note_zone_de_texte'.$tab['ID'].'" size="4" disabled="disabled" style="text-align:center" width="3%" value="' . $tab['NOTE'] . '"   /> </td>';
	echo' <td width="25%" align="center">' . $tab['Report'] .'</td> 
	</tr>';
	$compteur++;
} 

} 
 
echo'</table>'; 


//si le cours est clôturé, le bouton "clôturer" est désactivé




?>


Merci d'avance pour votre aide très appréciée.

beegees
Modifié par beegees (03 Mar 2009 - 19:34)
Hello beegees,

tu poses une question de JavaScript dans le mauvais salon. Smiley rolleyes

Et malheureusement (pour toi Smiley lol ) je ne peux pas déplacer ton sujet car en l'état il est truffé de PHP qui ne fait qu'embrouiller le tout et qui risque de décourager quelqu'un (dans le salon JavaScript donc) qui ne connaîtrait rien à ce langage.

Je t'invite donc à créer un nouveau sujet en mettant le code html généré (sans PHP donc).
Hello Heyoan,

J'espère que tu vas bien !

Je vais suivre ton conseil, tu peux donc supprimer mon message.

Un super grand merci pour ton dévouement sans limite.

beegees
beegees a écrit :
Hello Heyoan,

J'espère que tu vas bien !
Ça roule ! La vie est belle ! Smiley biggrin

beegees a écrit :
Je vais suivre ton conseil, tu peux donc supprimer mon message.
Je vais me contenter de le fermer...

beegees a écrit :
Un super grand merci pour ton dévouement sans limite.
L'abbé Pierre est mon modèle ! Smiley lol