Rechercher : dans
Par :

POPUP Java liste base données SQL/PHP

Dernière réponse le 22 fév 2008 à 15:52:35 sipherion, le 10 déc 2007 à 17:05:00 
 Signaler ce message aux modérateurs

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 Debian

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « POPUP Java liste base données SQL/PHP » dans :
Connexion à une base Oracle en php Voir1. Périmètre Cet article est un exemple de connexion à une base Oracle par le biais d'un script php. Cet article ne traite pas la configuration de votre serveur Oracle, et de votre client Oracle. Nous partons du principe que vous pouvez accéder à...
Bases de données - Utilisation de formulaires VoirUtilisation de formulaires Afin d'exploiter les bases de données, il faut fournir une interface à l'utilisateur lui permettant de visualiser des données en fonction de certains critères. Pour cela il existe un outil : les formulaires. Un formulaire...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

kij_82, le 10 déc 2007 à 17:19:30

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 ;)

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

2

sipherion, le 10 déc 2007 à 17:21:28

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>')


Administrateur réseaux sous Windows Server 2003 et 2008 Bêta et sous Linux Debian

Répondre à sipherion

3

kij_82, le 10 déc 2007 à 17:54:30

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.

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

4

sipherion, le 10 déc 2007 à 18:04:29

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.
Administrateur réseaux sous Windows Server 2003 et 2008 Bêta et sous Linux Debian

Répondre à sipherion

5

sipherion, le 11 déc 2007 à 13:31:00

Up, si une autre personne pouvait m'aider, ce serait très aimable a lui ! Merciiiii ^^
Administrateur réseaux sous Windows Server 2003 et 2008 Bêta et sous Linux Debian

Répondre à sipherion

6

kij_82, le 11 déc 2007 à 15:34:46

Ce aussi pas mal si tu mettais le reste des sources, sans ca je ne peux pas t'aider :)

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

7

sipherion, le 11 déc 2007 à 15:36:48

Dis moi ce que tu veux, j'ai posté la totalité du code Java, de quoi as tu besoin ?
Administrateur réseaux sous Windows Server 2003 et 2008 Bêta et sous Linux Debian

Répondre à sipherion

8

kij_82, le 11 déc 2007 à 16:19:35

Pourrais tu également mettre ton code PHP qui utilise cette fonction javascript 


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

9

sipherion, le 11 déc 2007 à 16:30:10

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.
Administrateur réseaux sous Windows Server 2003 et 2008 Bêta et sous Linux Debian

Répondre à sipherion

10

kij_82, le 12 déc 2007 à 11:55:02

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...

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

11

sipherion, le 12 déc 2007 à 16:21:26

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 !

@++
Administrateur réseaux sous Windows Server 2003 et 2008 Bêta et sous Linux Debian

Répondre à sipherion

12

 lokidar, le 22 fév 2008 à 15:52:35

Raaaaaaaaaaaaah, JavaScript pas Java :s

Répondre à lokidar