Page 1 sur 2

erreur avec phplib

Posté : 06 févr. 2006, 18:34
par momox
A l'aide de la librairie phplib, j'ai commencé a coder l'affichage de mon site, mais j'ai une erreur recurente et je ne sais pas du tout a quoi elle correspond...
Est ce qu'une personne pourrait eclairer ma lanterne?
Notice: Undefined offset: 0 in d:\dev\www\home\includes\template.inc on line 320

Posté : 07 févr. 2006, 00:52
par momox
Voici la fonction qui cause probleme:
  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);
    $str = preg_replace($reg, "{" . "$name}", $str);
    $this->set_var($varname, $m[1][0]);
    $this->set_var($parent, $str);
    return true;
  }
La ligne qui cause probleme est:
$this->set_var($varname, $m[1][0]);
@+ et merci de votre aide

Posté : 07 févr. 2006, 01:27
par Truc
que contient $m ? un tableau à un ou 2 dimenions ? fait un var_dump() dessus:
<pre>
<?
var_dump($m);
?>
</pre>

Posté : 07 févr. 2006, 01:31
par momox
Voilou:
Notice: Undefined variable: m in d:\dev\www\home\default.php on line 61

NULL
@+

Posté : 07 févr. 2006, 01:38
par Truc
donc cela signifie que l'expression régulière ne remplis pas son röle:
preg_match_all($reg, $str, $m);
C'est pas vraiment mon truc (à moi :roll: ) mais verifis toujours si les variables ($reg, $str) sont bien définies et ne sont pas vides (nulles)

Posté : 07 févr. 2006, 01:40
par momox
Pourtant elle fonctionne nickel mon expression reguliere...
Tout fonctionne et j'ai la notification donnée plus haut...
@+

Posté : 07 févr. 2006, 01:41
par momox
Il y a matiere a rire...

Code : Tout sélectionner

Notice: Undefined variable: m in d:\dev\www\home\default.php on line 61 NULL Notice: Undefined variable: reg in d:\dev\www\home\default.php on line 62 NULL Notice: Undefined variable: str in d:\dev\www\home\default.php on line 63 NULL

Posté : 07 févr. 2006, 01:53
par Truc
:-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 ?

Posté : 07 févr. 2006, 02:00
par momox
Oui, c'est messages resultent du var_dump...
@+

Posté : 07 févr. 2006, 02:02
par Truc
a quel niveau essaie tu d'afficher les variables ? après les avoir définies hein

Posté : 07 févr. 2006, 02:05
par momox
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>

Posté : 07 févr. 2006, 02:10
par Truc
éh bien je sais pas mais je vois plus la fonction set_block() où les varaibles avant les dump

Posté : 07 févr. 2006, 02:11
par momox
Fallait faire les var_dump avant le set_block?
@+

Posté : 07 févr. 2006, 02:12
par Truc
à l'interieur puisque ces variables ne sont pas "globales"

Posté : 07 févr. 2006, 02:14
par momox
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...
@+