Page 1 sur 2

PHP et frame

Posté : 26 déc. 2010, 17:24
par ggmayor
Bonjour,

J'ai une page html composée de frame (1 à gauche et 1 à droite).
L'idée est d'afficher un menu dans la frame de gauche sous forme de treeview PHP que j'ai trouvé sur le net (graphiquement ça me plait beaucoup)
et lorsqu'on clique sur le treeview, il faudrait afficher la page dans la frame de droite, mais le problème, c'est que le lien s'ouvre dans un autre onglet.

Ca fait 2 jours que je cherche sur le net comment faire, mais rien, je ne trouve pas l'ombre d'une piste.

Je vous mets le lien du treeview au cas où : http://scripts.toocharger.com/fiches/sc ... w/4838.htm

En résumé, comment définir dans les balises <?PHP ?> le renvoi du lien sur une frame.

merci.

Guy.

Re: PHP et frame

Posté : 26 déc. 2010, 18:00
par xTG
Cela ne se gère pas au niveau du php mais avec le html.
La balise de lien <a> comporte un attribut target, il faut que tu renseignes ce champs avec le nom de ta frame de destination.

Re: PHP et frame

Posté : 26 déc. 2010, 23:05
par ggmayor
Merci pour l'info

en fait je connaissais la balise <a mais cela ne fonctionne pas dans le code php.

Voici un extrait du code, c'est un noeud qui affiche le lien google :

$node = new TreeNode("3", "Google.com new browser");
$node->SetParentId("2");
$node->SetExternUrl ("http://www.google.ch");
$_SESSION["treeviewbasic"]->AddNode($node);

et la quand je clique, le lien s'ouvre dans un nouvel onglet et j'aimerai le faire afficher dans la frame de droite.

merci.

guy.

Re: PHP et frame

Posté : 27 déc. 2010, 10:13
par xTG
Il va te falloir modifier la classe alors.
Elle génère le code html avec des balises <a> qui ne correspondent pas à ce que tu souhaites.

Re: PHP et frame

Posté : 27 déc. 2010, 12:39
par ggmayor
Alors la je dirai "la classe...."

Je touche au but mai j'ai encore un petit souci.

En fait dans ma classe, il existe bel et bien les variables frame.

c'est défini comme ca :

var $frame_url = "";
var $frame_target = "";

ensuite dans la fameuse fonction qui définit "extern_url", d'origine c'est mentionné ainsi :

function SetExternUrl($newvalue, $new_browser_window =true) //la j'ai compris que ça ouvrait une nouvelle fenêtre, donc en mettant false ça ouvre dans la même frame
{
$this->extern_url = $newvalue;
$this->extern_url_new_browser_window = $new_browser_window;
}


j'ai modifié la fonction ainsi afin de définir la frame :

function SetExternUrl($newvalue, $frame_target)
{
$this->extern_url = $newvalue;
$this->frame_target="mainFrame";
}


mais là le problème c'est que ça affiche dans la même frame et non pas dans ma frame "mainFrame"....

C'est à deux doigts d'être bon, mais pas encore...

J'ai donc encore besoin d'un coup de main.

merci.

Guy.

Re: PHP et frame

Posté : 27 déc. 2010, 17:22
par xTG
Quel est le code html généré avec ton code modifié ? Il va falloir partir de cela avant d'aller patauger plus loin si on ne veut pas se perdre. ;)

Re: PHP et frame

Posté : 27 déc. 2010, 17:59
par ggmayor
ca c'est le code html généré dans le fichier index.php, celui qui affiche le treeview :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Basic TreeView</title>
<?php $xajax->printJavascript(TREEVIEW_SOURCE."ajax/framework"); //Enables real-time update. ?>
<!-- some basic css properties to make it look ok -->
<link href="<?php echo TREEVIEW_SOURCE; ?>css/style.css" rel="stylesheet" type="text/css">
</head>

dans la balise <body> il n'y a que du php.

merci pour ton aide.

guy.

Re: PHP et frame

Posté : 27 déc. 2010, 18:02
par Spols
Non, il faut que tu nous donne le code rendu par ton navigateurs (ctrl + u dans firefox)

Re: PHP et frame

Posté : 27 déc. 2010, 18:55
par ggmayor
le voici :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Des Cadres</title>
</head>
<frameset rows="80,*" cols="260,*" frameborder"NO"
border="0" framespacing="0">
<frame name="cornerFrame" scrolling="NO"
noresize src="logo.html">
<frame name="topframe" scrolling="NO"
noresize src="titre.html">
<frame name="leftFrame" scrolling="NO"
noresize src="phptreeview/documentation/basic/index.php">
<frame name="mainFrame" src="membres.php">
</frameset>
<noframes>
<body bgdcolor="#FFFFFF" text="#000000">

</body>
</noframes>
</html>


merci.

Re: PHP et frame

Posté : 27 déc. 2010, 21:28
par xTG
Il nous faudrait le code généré de la frame afichant le TreeView en fait. :)
Tu dois pouvoir afficher son code lorsque tu fais un clic droit dessus, tu devrais avoir un menu du genre "ce cadre > afficher la source".
Ou plus simplement tu affiches uniquement la page phptreeview/documentation/basic/index.php dans ton navigateur et tu affiches la source.

Re: PHP et frame

Posté : 27 déc. 2010, 21:57
par ggmayor
OK, pigé, voici le code du index.php, c'est un peu long mais bon...
J'ai mis la page en ligne si ça peut vous aider (la frame du haut ou c'est inscrit NOT FOUND, c'est normal, j'y ai encore rien mis)
http://www.wiraconcept.ch/citizpot/CADRE.html


le code :

<?php
//Define where you have placed the phptreeview folder.
define("TREEVIEW_SOURCE", "../../");

include(TREEVIEW_SOURCE."treeviewclasses.php"); //Include the phptreeview engine.
session_start();

$xajax = new xajax();
include(TREEVIEW_SOURCE."ajax/ajax.php"); //Enables real-time update. Must be called before any headers or HTML output have been sent.
$xajax->processRequests();

//Define identify name(s) to your treeview(s);
$treeviewid = array("treeviewbasic");

include(TREEVIEW_SOURCE."treeviewcreate.php"); //Creates phptreeview objects.

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Basic TreeView</title>
<?php $xajax->printJavascript(TREEVIEW_SOURCE."ajax/framework"); //Enables real-time update. ?>

<!-- some basic css properties to make it look ok -->
<link href="<?php echo TREEVIEW_SOURCE; ?>css/style.css" rel="stylesheet" type="text/css">

</head>

<body>


<?php
//You have to clean the session to be able to load the nodes again
//(uncomment the line below during one page load).
//unset($_SESSION["NodesHasBeenAddedBasic"]);

if (isset($_SESSION["NodesHasBeenAddedBasic"]) == false)
{
//Do only load treeview nodes first time page is loaded.

//If nodes from last session exists, remove them.
unset($_SESSION["treeviewbasic"]->Nodes);

$node = new TreeNode("1", "Menu de navigation"); //Create a new node object with id "1" and set the name to "Root Folder".
$_SESSION["treeviewbasic"]->AddNode($node); //Add "Root Folder" node to treeview.

$node = new TreeNode("2", "client");
$node->SetParentId("1"); //Set "Root Folder" node as parent.
$_SESSION["treeviewbasic"]->AddNode($node);

$node = new TreeNode("3", "Google.com");
$node->SetParentId("2"); //Set "sites" node as parent.
$node->SetExternUrl ("index.php");
$node->SetClosedImageSource(TREEVIEW_SOURCE."media/url.gif"); //This node has no childs, which means it´s always closed. Therefor you have to change the closed node image to be able to change image.
$_SESSION["treeviewbasic"]->AddNode($node); //Add "Root Folder" node to treeview.


$node = new TreeNode("4", "Facture");
$node->SetParentId("1"); //Set "Folder One" node as parent.
$_SESSION["treeviewbasic"]->AddNode($node);


$node = new TreeNode("5", "google pour test treeview");
$node->SetParentId("4"); //Set "sites" node as parent.
$node->SetExternUrl("http://www.google.ch");
$node->SetClosedImageSource(TREEVIEW_SOURCE."media/url.gif"); //This node has no childs, which means it´s always closed. Therefor you have to change the closed node image to be able to change image.
$_SESSION["treeviewbasic"]->AddNode($node); //Add "Root Folder" node to treeview.


}

$_SESSION["treeviewbasic"]->PrintTreeView();


?>

</body>
</html>

Merci encore pour votre aide. Guy.

Re: PHP et frame

Posté : 28 déc. 2010, 10:00
par xTG
Le frame target ne semble pas être interprété malgré que tu le renseignes.
Les balises <a> ne possède pas d'attribut target.
Il doit donc y avoir une variable qui est utilisé pour la condition de l'ajout de cet attribut dans la balise.

Pourrais-tu nous montrer la fonction PrintTreeView ?

PS: je trouve le rendu plutôt pas mal, pourrais-tu me dire où je peux récupérer ce script ? :)

Re: PHP et frame

Posté : 28 déc. 2010, 11:23
par ggmayor
Salut, oui en fait c'est parce que le rendu me plait beaucoup que je me bats un peu avec...

je l'ai téléchargé ici :

http://scripts.toocharger.com/fiches/sc ... w/4838.htm

D'après toi, je la trouve ou la fonction PrintTreeView ?

Re: PHP et frame

Posté : 28 déc. 2010, 13:06
par xTG
Je viens de la télécharger pour t'aider et malheureusement le coeur du système est encodé.
Donc pas de possibilité de modifier.

Cependant j'ai trouvé une fonction : TreeNode::SetFrameUrl($url, $frame)
Elle assigne une url dans une frame.

Tu as donc modifié une fonction alors qu'il en existait une qui faisait ce que tu voulais.
Essayes donc de l'utiliser, elle doit faire un traitement que ta modification ne fait pas. :)

PS :
Node limit is 9 in the free version of PHP TreeView.
Purchase PHP TreeView at http://www.phpscripts.se to load endless number of nodes.

Price is only 17$ (tax included).
Donc pour ma part je tâcherai de trouver une autre classe. :)

Re: PHP et frame

Posté : 28 déc. 2010, 18:12
par ggmayor
Merci d'avoir pris du temps pour mon problème, j'ai beau chercher, impossible d'arriver à afficher dans ma frame de droite,
la je commence à désespérer et je sais pas si je ne vais pas abandonner là......

en plus sur le site, je trouve pas ou acheter la version full pour 17$...