POPUP Java liste base données SQL/PHP [Résolu/Fermé]

Signaler
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
-
 lokidar -
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

12 réponses

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850
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 ;)
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
281
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>')

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850
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.
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
281
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.
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
281
Up, si une autre personne pouvait m'aider, ce serait très aimable a lui ! Merciiiii ^^
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850
Ce aussi pas mal si tu mettais le reste des sources, sans ca je ne peux pas t'aider :)
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
281
Dis moi ce que tu veux, j'ai posté la totalité du code Java, de quoi as tu besoin ?
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850
Pourrais tu également mettre ton code PHP qui utilise cette fonction javascript 

Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
281
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.
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850
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...
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
281
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 !

@++
Raaaaaaaaaaaaah, JavaScript pas Java :s