|
|
|
|
Bonjour !
Je sais, le titre est compliqué mais je vais vous expliquer. Voila
J'ai une base de donnée qui correspond a l'enregistrement de composants (une gestion de stock). J'ai donc fait un petit site Intranet qui propose d'enregistrer un nouveau composant et également de visualiser la liste des composants enregistrés.
La liste des composants enregistrés se présente sous la forme d'un tableau, avec les colonnes (entre autres) Nom, description, etc.
Le problème est sur "Description". Comme j'ai construit mon tableau pour que les résultats ne s'affichent que sur une seule ligne, si le champs "Description" renseigné est trop important, cela va défigurer le tableau.
Solution bien chiante mise place :
if(strlen($description)>20) {
$descriptioncourte=substr($description,0,20);
}
else ($descriptioncourte=$description);
J'ai donc limité le nombre de caractères a $description qui va renommer ces informations en $descriptioncourte. $description va donc rester telle quelle. J'ai eu alors une idée : Pourquoi ne pas mettre en place un système qui n'affiche que $descriptioncourte, et que quand on passe la souris dessus, il nous ouvre une petite popup qui va nous afficher le reste de la description ?!?
Allez hop, c'est partit. J'ai trouvé le script qu'il me fallait a cette adresse :
http://css.alsacreations.com/xmedia/exemples/popup/popup2.htm
Je l'ai donc mis en place, et ca marche presque. Déja, je n'ai pas de popup comme dans l'exemple mais simplement le texte qui se rajoute au bas de la page (si vous avez une idée pour cette erreur, je vous remercie d'avance). Et ensuite, et c'est pour ca que je poste ce message, quand je passe sur les différentes descriptions, il ne m'affiche rien, sauf sur la derniere chargée par le système (il y a un système de récupération de données dans une base de données MySQL) ou la il me montre la valeur de $description.
S'il le faut je peux faire un copier coller de tout le code, mais avant de faire ca je voulais savoir si certaines personnes étaient bien calées en Javascript
Administrateur réseaux sous Windows Server 2003 et 2008 Bêta et sous Linux DebianConfiguration: Windows XP
Firefox 2.0.0.11
Je pense être assez blindé en javascript pour pouvoir te tirer de là.
|
Voici le code Javascript "popup.js" :
|
Oui, et pourtant c'est du copier/coller du lien que j'ai donné un peu plus haut. J'ai fait ca parce que mes connaissances sont également limitées en Java...
|
Ok cest parti !
|
Je pensea voir trouvé d'ou ca vient.
popup = D.getElementById(el.href.substring(el.href.lastIndexOf('#') + 1)).style;
Ce qui signigie que ca prend le style css de l'élément donc l'identifiant est égale à ce qui se trouve après le "#" situé dans la propriété href de l'élément source (émetteur). Or, dans ton algo PHP, tu n'as qu'une seule div, celle de la fin, dans laquelle tu met effectivement la contenu de ta dernière description (puisque tu es en dehors de ta boucle while) : echo("</table><div id='pop".$id_c."'>
<h1>Description</h1>
<p>".$description[$id_c]."</p>
</div></div>");
Conclusion : ce que je te propose, c'est d'inclure ce bout de code dans ta boucle while, et je pense que ca devrait être mieux. Comme ceci donc :
while($ligne=mysql_fetch_assoc($resultat)){
$categorie=$ligne['categorie'];
$nom=$ligne['nom'];
$marque=$ligne['marque'];
$qu=$ligne['quantite'];
$date_achat=$ligne['date_achat'];
$jour=$ligne['jour'];
$mois=$ligne['mois'];
$annee=$ligne['annee'];
$lieu=$ligne['lieu'];
$id_c=$ligne['id_c'];
$description[$id_c]=$ligne['description'];
if(strlen($description[$id_c])>20) {
$descriptioncourte[$id_c]=substr($description[$id_c],0,20);
}
else ($descriptioncourte[$id_c]=$description[$id_c]);
echo ("<tr><td>".$categorie."</td>
<td>".$nom."</td>
<td>".$marque."</td>
<td><a href='#pop".$id_c."' class='pop'>".$descriptioncourte[$id_c]."<a></td>
<td>".$lieu."</td>
<td>".$date_achat."</td>
<td><center>".$qu."</center></td></tr>");
echo("</table><div id='pop".$id_c."'>
<h1>Description</h1>
<p>".$description[$id_c]."</p>
</div></div>");
}}
Par contre je n'exclus pas le fait qu'il puisse y avoir d'autres erreurs... ~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~ |