Page 1 sur 2
affichage d une fenetre avec passage de parametre
Posté : 09 mai 2005, 08:24
par donny
salut,
J ai creer un tableau et des que le curseur de la souris passe dessus la ligne ou il se trouve se met en surbrillance et ce que je voudrais c est que des qu on clique sur cette ligne une nouvelle fenetre apparaisse contenant tous les element de la ligne dans un formulaire .
Et je vois vraiment pas comment faire passer les donnée du tableau dans un formulaire en cliquant sur la ligne?
Merci
Posté : 09 mai 2005, 08:46
par slipndi
Bonjour
Enfaite il faut que tu envoi les différentes infrmations par la query string.
Pour envoyer des infos de cette manière il te suffit de crée des liens du type :
dans ton cas je genererai mon tableau en php et je ferais des liens généré de ce type !
Posté : 09 mai 2005, 08:48
par Cyrano
Il faut que tu utilises un gestionnaire d'évènement JavaScrip avec une redirection vers la page en question: il faut bien entendu que l'adresse de redirection comporte les paramètres par rapport à cette ligne de ton tableau.
Sans JavaScript, il serait quand même plus simple de mettre des liens html dans un des éléments de la ligne du tableau.
Posté : 09 mai 2005, 08:51
par slipndi
je vais avoir l'air bête cyrano mais pourquoi passé par le js ? c'est un problème que l'on peut résoudre purement par php vue que c'est lors d'un click non ?
Posté : 09 mai 2005, 09:01
par donny
en faite je met un lien sur une cellule du tableau genre
<td><a href="
www.monadresse.fr?ar1=valeur&var2=valeur></a></td>
et dans la nouvelle page j aurai var1 et var2 dans l url et j aurai plus qu a les coller dans les champs ?
et je voulais savoir mon tableau je le remplis a partir de ma base de donnée, sa ne pose pas de probleme ?
Posté : 09 mai 2005, 09:03
par Cyrano
je vais avoir l'air bête cyrano mais pourquoi passé par le js ? c'est un problème que l'on peut résoudre purement par php vue que c'est lors d'un click non ?
Justement non
slipndi, tu inverses là: le PHP s'exécutant coté serveur, il ne capte pas les évènement. Donc il faut un langage client pour le faire et JavaScript est tout indiqué.
Posté : 09 mai 2005, 09:05
par slipndi
non au contraire ca te simplifie le travail oui pour l'envoi c'est ca ensuite dans ta page de récupération des infos tu récupère les variables par cette méthode :
<?php $var1=$_GET['var1']; ?>
<INPUT type="text" name="var1" value="<?php echo($var1)?>">
et ici par exemple ton champ de texte aura la valeur var1 envoyé précedement
Posté : 09 mai 2005, 09:07
par slipndi
Justement non slipndi, tu inverses là: le PHP s'exécutant coté serveur, il ne capte pas les évènement. Donc il faut un langage client pour le faire et JavaScript est tout indiqué.
Ben oui mais enfaite le script js qui existe c'est pour la surbrillance mais son problème c'est juste l'envoi des variables d'une page à une autre, enfin si j'ai bien compris

enfin si j'ai tord désolé d'induire en erreur

Posté : 09 mai 2005, 09:25
par donny
ouai c est cela et je voulais savoir si je pouvais faire un passage de parametre avec un lien tout simple ?
Posté : 09 mai 2005, 09:28
par slipndi
Ben si tu ve faire un passage de paramètre dans un lien tout simple il faut utilisé un formulaire d'envoi couplé à la méthode post
Posté : 09 mai 2005, 09:48
par donny
je suis obligé de mettre les balise <form method post action> </form>
?
Posté : 09 mai 2005, 10:03
par Invité
voici une solution basée sur javascript (et donc avec tous les inconvénients de ce dernier)
L'idée est de passer un id unique d'un produit à une page qui en affiche le détail. Pour ce faire, deux pages sont nécéssaires :
La page principale "fenetre_base.php"
<script>
var derniere_ligne;
function selectionner(ligne){
if (derniere_ligne != null && derniere_ligne.style != null ) {
derniere_ligne.style.background = '' ;
derniere_ligne.style.color = '' ;
}
ligne.style.background = 'yellow';
ligne.style.color = 'blue';
derniere_ligne = ligne;
}
function ouvrirFenetre(id){
var URL = "http://127.0.0.1:8080/fenetres/sous-fenetre.php?id=" + id;
window.showModalDialog(URL,self,"dialogWidth:400px;dialogHeight:400px;center:1;scroll:0;help:0;status:0");
}
</script>
<table>
<tr><th>Id<th>Nom
<tr onMouseMove='selectionner(this)' onClick='ouvrirFenetre(1)'>
<td>1
<td>Produit 1
<tr onMouseMove='selectionner(this)' onClick='ouvrirFenetre(2)'>
<td>2
<td>Produit 2
<tr onMouseMove='selectionner(this)' onClick='ouvrirFenetre(3)'>
<td>3
<td>Produit 3
</table>
Attention: les données sont présentées en dur, il faut ajouter du PHP pour dynamiser.
La deuxième qui affiche le détail d'un id sélectionné dans une fenetre popup modale : "sous-fenetre.php" :
<?
$id = isset($_GET["id"])?$_GET["id"]:null;
$nom = $prix = $en_stock = $message = "";
if ($id == 1) {
$nom = "Produit 1";
$prix = 25.00;
$en_stock = "En stock";
}
else
if ($id == 2) {
$nom = "Produit 2";
$prix = 10.00;
$en_stock = "En stock";
}
else
if ($id == 3) {
$nom = "Produit 3";
$prix = 5.00;
$en_stock = "rupture";
}
else
$message = "Produit inconnu!";
echo "
<h1>Info produit</h1><hr>
<table>
";
if ($message == "")
echo "
<tr><th>Id: <td>$id
<tr><th>Nom: <td>$nom
<tr><th>Prix: <td>$prix
<tr><th>Disponibilité: <td>$en_stock
";
else
echo "
<tr><td>$message
";
echo "
</table>
";
?>
<style> th{text-align:right}</style>
Attention: là aussi les données du détail des produits déterminées par id sont données ici en dur pour des soucis d'exemple. A remplacer par une requête SQL de type SELECT * FROM Produit WHERE id='$id'
Une autre solution peut être envisageable pour éviter javascript c'est d'utiliser un lien Hypertexte par ligne produit telque :
<tr><td><A Href="sous-fenetre.php?id=1">1</A>
Posté : 09 mai 2005, 10:15
par donny
merci
et pour ta deuxieme solution en utilisant un lien tout simple
<tr><td><A Href="sous-fenetre.php?id=1">1</A>
cela affichera directement le id dans l url et je n aurai qu a le recuperer pour executer ma requete si j ai bien compris ?
Posté : 09 mai 2005, 10:17
par slipndi
Ben oui ca deuxieme solution c'est l'equivalent de la mienne et c cela meme:)
Posté : 09 mai 2005, 16:22
par donny
pour le code javascript
c est normal que quand j essai de mettre des champs texte dans les cellule du tableau rien ne s affiche ,sa s affiche mais on ne voi pas le champs texte .?
Code : Tout sélectionner
if ($message == "")
echo "
<tr><td>Id: </td><td><input type=\"text\" name=\"id\" value=\"$id\"></td></tr>
ja i l impression que sa viens de la fenetre, je pourrai pas avoir une fenetre normal que je fixerai moi meme et qui garde la barre d adresse