PHP et frame

Eléphanteau du PHP | 10 Messages

26 déc. 2010, 17:24

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.

ViPHP
xTG
ViPHP | 7331 Messages

26 déc. 2010, 18:00

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.

Eléphanteau du PHP | 10 Messages

26 déc. 2010, 23:05

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.

ViPHP
xTG
ViPHP | 7331 Messages

27 déc. 2010, 10:13

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.

Eléphanteau du PHP | 10 Messages

27 déc. 2010, 12:39

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.

ViPHP
xTG
ViPHP | 7331 Messages

27 déc. 2010, 17:22

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

Eléphanteau du PHP | 10 Messages

27 déc. 2010, 17:59

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.

Mammouth du PHP | 1967 Messages

27 déc. 2010, 18:02

Non, il faut que tu nous donne le code rendu par ton navigateurs (ctrl + u dans firefox)
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 10 Messages

27 déc. 2010, 18:55

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.

ViPHP
xTG
ViPHP | 7331 Messages

27 déc. 2010, 21:28

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.

Eléphanteau du PHP | 10 Messages

27 déc. 2010, 21:57

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.

ViPHP
xTG
ViPHP | 7331 Messages

28 déc. 2010, 10:00

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 ? :)

Eléphanteau du PHP | 10 Messages

28 déc. 2010, 11:23

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 ?

ViPHP
xTG
ViPHP | 7331 Messages

28 déc. 2010, 13:06

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

Eléphanteau du PHP | 10 Messages

28 déc. 2010, 18:12

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