erreur avec phplib

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : erreur avec phplib

par Ultiny » 15 févr. 2006, 03:46

La définition de ta variable ($m par exemple) se trouve dans une fonction, et dans une fonction les variables sont privées.

Si ta fonction est elle même dans une classe, utilise plutôt $this->m pour y acceder, sinon utilise le return de la fonction pour faire sortir ton $m (si tu as plusieurs variables à retourner, fait un tableau)

par momox » 07 févr. 2006, 02:32

Et est ce que je peux enlever le [1][0] sans aucun risque?
@+

par Truc » 07 févr. 2006, 02:31

preg_match_all()

$m récupère sous forme de tableau le résultat de l'expression régulière

sur ce il se fait tard, je vais te laisser ici (pour l'instant) :wink:

par momox » 07 févr. 2006, 02:28

Juste une question, a quoi sert $m?
@+

par Truc » 07 févr. 2006, 02:25

la varaible "$str" est vide donc preg_match_all() ne fait pas grand chose ce qui entraine qu'il n'y a pas de tableau a 2 dimensions $m.

par momox » 07 févr. 2006, 02:21

Code : Tout sélectionner

$req= /[ ]*\s*? ?(\s*.*? ?)\s*\s*? ?/sm<:p> $str= <:p> array(2) { [0]=> array(0) { } [1]=> array(0) { } } Notice: Undefined offset: 0 in d:\dev\www\home\includes\template.php on line 327 $req= /[ ]*\s*? ?(\s*.*? ?)\s*\s*? ?/sm<:p> $str= <:p> array(2) { [0]=> array(0) { } [1]=> array(0) { } } Notice: Undefined offset: 0 in d:\dev\www\home\includes\template.php on line 327
Voilou

par Truc » 07 févr. 2006, 02:17

no,
function set_block($parent, $varname, $name = "") {
    if ($this->debug & 4) {
      echo "<p><b>set_block:</b> parent = $parent, varname = $varname, name = $name</p>\n";
    }
    if (!$this->loadfile($parent)) {
      $this->halt("set_block: unable to load $parent.");
      return false;
    }
    if ($name == "") {
      $name = $varname;
    }

    $str = $this->get_var($parent);
    $reg = "/[ \t]*<!--\s+BEGIN $varname\s+-->\s*?\n?(\s*.*?\n?)\s*<!--\s+END $varname\s+-->\s*?\n?/sm";
    preg_match_all($reg, $str, $m);
//*******************
echo '<p> $req= '.$reg.'<:p>';
echo '<p> $str= '.$str.'<:p>';
echo '<pre>';
var_dump($m);
echo '</pre>';
//********************
    $str = preg_replace($reg, "{" . "$name}", $str);
    $this->set_var($varname, $m[1][0]);
    $this->set_var($parent, $str);
    return true;
  }

par momox » 07 févr. 2006, 02:14

Comme ceci?
<?php

//snoweb version 1.0
//(c)2006 morgan abraham et ltcf.net
//tous droits reservés
//mail: [email protected]
//site web : http://snoweb.ltcf.net/

//debut de la session
session_start();
if(isset($_SESSION['nick']) && !empty($_SESSION['nick'])){
$logged_in = true;
$nick = $_SESSION['nick'];
}
elseif(!isset($_SESSION['nick']))
{
$logged_in = false;
$nick = 'guest';
}
//inclusion des fichers de configuration
include('conf/config.php');//fichier de configuration
//include('includes/mysql_connect.php');//parametres de connexion a mysql
include('includes/functions.php');//differentes fonctions du portail
include('includes/template.php');//systeme de gestion des templates
include('language/lang_fr.php');//fichier de langue

//declaration des variables pour le header
$tpl = new template("templates/guides/public/");
$tpl->set_file("header","header.tpl");

//definition du bloc a traiter
$tpl->set_block('head','header','header_bloc');

//definition des variables a traiter dans le header
$tpl->set_var("site.name", $snoweb_site_name);
$tpl->set_var("admin.name", $snoweb_admin);
$tpl->set_var("admin.mail", $snoweb_admin_mail);
$tpl->set_var("site.desc", $snoweb_site_desc);
$tpl->set_var("site.keys", $snoweb_site_keywords);
$tpl->set_var("site_adresse", $snoweb_site_url);

$tpl->parse('header_bloc','header',true);
$tpl->pparse("aff_header","header");

//declaration des variables pour le top
$tpl = new template("templates/guides/public/");
$tpl->set_file("top","top.tpl");

//definition du bloc a traiter
$tpl->set_block('haut','top','top_bloc');
echo '<pre>';
var_dump($m);
var_dump($reg);
var_dump($str);
echo '</pre>';
//definition des variables a traiter dans le top
$tpl->set_var("site.name", $snoweb_site_name);


$tpl->parse('top_bloc','top',true);
$tpl->pparse("aff_top","top");
?>
Si je fais comme ca meme resultat...
@+

par Truc » 07 févr. 2006, 02:12

à l'interieur puisque ces variables ne sont pas "globales"

par momox » 07 févr. 2006, 02:11

Fallait faire les var_dump avant le set_block?
@+

par Truc » 07 févr. 2006, 02:10

éh bien je sais pas mais je vois plus la fonction set_block() où les varaibles avant les dump

par momox » 07 févr. 2006, 02:05

Ben voila comment est agencé mon fichier default.php:
<?php

//snoweb version 1.0
//(c)2006 morgan abraham et ltcf.net
//tous droits reservés
//mail: [email protected]

//debut de la session
session_start();
if(isset($_SESSION['nick']) && !empty($_SESSION['nick'])){
$logged_in = true;
$nick = $_SESSION['nick'];
}
elseif(!isset($_SESSION['nick']))
{
$logged_in = false;
$nick = 'guest';
}
//inclusion des fichers de configuration
include('conf/config.php');//fichier de configuration
//include('includes/mysql_connect.php');//parametres de connexion a mysql
include('includes/functions.php');//differentes fonctions du portail
include('includes/template.php');//systeme de gestion des templates
include('language/lang_fr.php');//fichier de langue

//declaration des variables pour le header
$tpl = new template("templates/guides/public/");
$tpl->set_file("header","header.tpl");

//definition du bloc a traiter
$tpl->set_block('head','header','header_bloc');

//definition des variables a traiter dans le header
$tpl->set_var("site.name", $snoweb_site_name);
$tpl->set_var("admin.name", $snoweb_admin);
$tpl->set_var("admin.mail", $snoweb_admin_mail);
$tpl->set_var("site.desc", $snoweb_site_desc);
$tpl->set_var("site.keys", $snoweb_site_keywords);
$tpl->set_var("site_adresse", $snoweb_site_url);

$tpl->parse('header_bloc','header',true);
$tpl->pparse("aff_header","header");

//declaration des variables pour le top
$tpl = new template("templates/guides/public/");
$tpl->set_file("top","top.tpl");

//definition du bloc a traiter
$tpl->set_block('haut','top','top_bloc');

//definition des variables a traiter dans le top
$tpl->set_var("site.name", $snoweb_site_name);


$tpl->parse('top_bloc','top',true);
$tpl->pparse("aff_top","top");
?>
<pre>
<?
var_dump($m);
var_dump($reg);
var_dump($str);
?>
</pre>

par Truc » 07 févr. 2006, 02:02

a quel niveau essaie tu d'afficher les variables ? après les avoir définies hein

par momox » 07 févr. 2006, 02:00

Oui, c'est messages resultent du var_dump...
@+

par Truc » 07 févr. 2006, 01:53

:-k :-k
comment dire... les varaibles n'existent pas d'après ces messages.

question bete... tu modifis bien le bon fichier ?

les messages sont les conséquences des "echo" sur les variables ?