POPUP Java liste base données SQL/PHP

Résolu/Fermé
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 10 déc. 2007 à 17:05
 lokidar - 22 févr. 2008 à 15:52
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
A voir également:

12 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 déc. 2007 à 17:19
Je pense être assez blindé en javascript pour pouvoir te tirer de là.
Si j'ai bien compris, seule la derniere description (derniere chargée donc) fonctionne. J'imagine donc que l'erreur doit venir d'une mauvaise utilisation de variable dans le script (unique pour toutes tes descriptions par exemple), d'ou le fait que seule la dernière soit loadée correctement.

Si tu met le code je serais succeptible de te réponse, du moins j'espère pour toi ;)
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
10 déc. 2007 à 17:21
Voici le code Javascript "popup.js" :

gk=window.Event?1:0; // navigateurs Gecko ou IE
D=document;popup=encours=0

function ctrl(e)
{
de=!D.documentElement.clientWidth?D.body:D.documentElement // IE6
sx=gk?pageXOffset:de.scrollLeft //scroll h
sy=gk?pageYOffset:de.scrollTop //scroll v
x=gk?e.pageX:event.clientX+sx; //curseur x
y=gk?e.pageY:event.clientY+sy; //curseur y
el=gk?e.target:event.srcElement;
if(!el.tagName)el=el.parentNode; // noeud #text
if(el.className == 'pop')
{
popup = D.getElementById(el.href.substring(el.href.lastIndexOf('#') + 1)).style;
if(popup!=encours) // seulement si changement
{
encours.display='none';
with(popup){display="block";left=x+'px';top=y+10+'px';}
encours=popup;
}
} else {encours.display='none';encours=0}
}

D.onmousemove=ctrl
// charge la feuille de style des popups.
D.write('<style type="text/css">@import url(popup.css);</style>')

0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 déc. 2007 à 17:54
Ca m'a l'air un peu fouilli comme code tout ca :)
Pourrais tu également mettre ton code PHP qui utilise cette fonction javascript ?
Je dois y aller donc je verrais ca demain.
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
10 déc. 2007 à 18:04
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...

Je suis également parti du boulot, et je ne peux pas modifier la base car je n'ai pas d'accès a distance.

@Demain.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
11 déc. 2007 à 13:31
Up, si une autre personne pouvait m'aider, ce serait très aimable a lui ! Merciiiii ^^
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
11 déc. 2007 à 15:34
Ce aussi pas mal si tu mettais le reste des sources, sans ca je ne peux pas t'aider :)
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
11 déc. 2007 à 15:36
Dis moi ce que tu veux, j'ai posté la totalité du code Java, de quoi as tu besoin ?
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
11 déc. 2007 à 16:19
Pourrais tu également mettre ton code PHP qui utilise cette fonction javascript 

0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
11 déc. 2007 à 16:30
ok cest parti !

$requete="select * from composant order by $u $ob";
$resultat=mysql_query($requete);
echo("<table border=1 width='100%'><tr><td><center><b>Type</b> <a href='listcomp.php?page=typeasc.php'><img border=0 src='images/asc.png'></a> <a href='listcomp.php?page=typedesc.php'><img border=0 src='images/desc.png'></a></center></td>
<td><center><b>Nom<b> <a href='listcomp.php?page=nomasc.php'><img border=0 src='images/asc.png'></a> <a href='listcomp.php?page=nomdesc.php'><img border=0 src='images/desc.png'></a></center></td>
<td><center><b>Marque<b> <a href='listcomp.php?page=marqueasc.php'><img border=0 src='images/asc.png'></a> <a href='listcomp.php?page=marquedesc.php'><img border=0 src='images/desc.png'></a></center></td>
<td><center><b>Description<b></center></td>
<td><center><b>Lieu<b> <a href='listcomp.php?page=lieuasc.php'><img border=0 src='images/asc.png'></a> <a href='listcomp.php?page=lieudesc.php'><img border=0 src='images/desc.png'></a></center></td>
<td><center><b>Date d'achat<b> <a href='listcomp.php?page=dateaasc.php'><img border=0 src='images/asc.png'></a> <a href='listcomp.php?page=dateadesc.php'><img border=0 src='images/desc.png'></a></center></td>
<td><center><b>Quantité<b> <a href='listcomp.php?page=quantiteasc.php'><img border=0 src='images/asc.png'></a> <a href='listcomp.php?page=quantitedesc.php'><img border=0 src='images/desc.png'></a></center></td></tr>");
if(mysql_num_rows($resultat)){
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>");

Certains trucs sont bizzares, c'est normal mais si tu ne comprends pas, alors demande moi plus de détails sur telle ou telle variable.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 déc. 2007 à 11:55
Je pensea voir trouvé d'ou ca vient.
Dans ta fonction javascript, tu as ceci :
 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...
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
12 déc. 2007 à 16:21
Bon, désolé cela ne fonctionnait pas, donc j'ai abandonné et je suis simplement retourné à la petite option 'title' dans le lien. Merci quand même de ton aide !

@++
0
Raaaaaaaaaaaaah, JavaScript pas Java :s
0