par
Invité » 09 mai 2005, 10:03
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>
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"
[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>[/php]
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" :
[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>[/php]
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>