Categories > TinyButStrong general (FR) >

Problèmes avec les array

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Mouet
Date: 2006-05-31
Time: 22:45

Problèmes avec les array

Voici mon code:

<?php
    require_once('INCLUDES/db.inc');
    include_once('INCLUDES/tbs_class.php') ;
    require_once('INCLUDES/all.class.php');
    $links = array('Menu1','Menu2','Menu3','Menu4','Menu5') ;
   
    $TBS = new clsTinyButStrong ;
    $TBS->LoadTemplate('I.html') ;
    $table = new Nouvelles();
    $table->compile();
    for($i=1; isset($table->liste[$i]) ; $i++)
    {
            $myList = $table->liste[$i];
            $TBS->MergeBlock('news','array',$myList);
   
    }
    $TBS->MergeBlock('menubloc',$links) ;
   
    $TBS->Show() ;
?>

Cependant sur ma page, il m'affiche TinyButStrong Error in field [news.value...] : item 'res_score' is not an existing key in the array. This message can be cancelled using parameter 'noerr'.

Or, un echo $myList['value']; m'affiche bien la valeur pour cette key dans mon array.

Auriez vous une solution ? j'ai peut-être commis une erreur au niveau de la prog, dans ce cas, veuillez m'en excuser !

Bien à vous, Mouet
By: Skrol29
Date: 2006-05-31
Time: 23:11

Re: Problèmes avec les array

Il semble que l'un des champs [news.value...] fasse référence à un sous-item de tableau nommé res_score (par exemple ce pourait être [news.value.res_score]), mais que ce sous item est absent lors de la fusion.

Pour savoir où ça pêche vous devez faire non pas un echo($myList['value'])
mais plutôt un var_export($myList).

Remarque sans rapport : le MergeBlock()  placé dans un boucle me semble  bisarre car il fusionne plusieur fois le même block nommé 'news'; Hors après la première fusion, il ne reste plus de trace de définition du block fusionné.
By: Mouet
Date: 2006-05-31
Time: 23:17

Re: Problèmes avec les array

Je me suis un peu trompé dans mon énoncé de problèmes ( en effet 2 scripts en meme temps )

Les problèmes sont bien du même rapport: TinyButStrong Error in field [news.Value...] : item 'Value' is not an existing key in the array. This message can be cancelled using parameter 'noerr'.

TinyButStrong Error in field [news.Titre...] : item 'Titre' is not an existing key in the array. This message can be cancelled using parameter 'noerr'.

Et en faisant un echo var_export(); comme vous me l'aviez proscrit, j'obtiens:

array ( 'Nom' => '1', 'Categorie' => '0', 'Titre' => 'Nous allons commencer les tests!', 'Value' => 'Saluuuuuut nounouuuu', 'Date' => '2006-05-30', )array ( 'Nom' => '1', 'Categorie' => '1', 'Titre' => 'Maiiiis', 'Value' => 'Nooon :( Pourquoi? -_-', 'Date' => '2006-05-31', )array ( 'Nom' => '1', 'Categorie' => '0', 'Titre' => 'Toujours pas ? :(', 'Value' => 'Bon, OK !', 'Date' => '2006-05-31', )

Par la suite, mon erreur de block en boucle est une bétise quand j'y pense mais je n'ai pas encore réellement pu lire toute la doc à propos de TBS.

Merci de votre aide

Mouet ( Débutant )
By: Mouet
Date: 2006-05-31
Time: 23:25

Re: Problèmes avec les array

J'ai en fait résolu le problème comme ca:

<?php
    require_once('INCLUDES/db.inc');
    include_once('INCLUDES/tbs_class.php') ;
    require_once('INCLUDES/all.class.php');
    $links = array('Menu1','Menu2','Menu3','Menu4','Menu5') ;
   
    $TBS = new clsTinyButStrong ;
    $TBS->LoadTemplate('I.html') ;
    $table = new Nouvelles();
    $table->compile();

    $Nbr = $TBS->MergeBlock('news','array','table->liste') ;
    if ($Nbr>0) $TBS->MergeBlock('sb','array','table->liste[%p1%][matches]') ;
   
    $TBS->MergeBlock('menubloc',$links) ;
   
    $TBS->Show() ;
?>

Est-ce la meilleur solution?

Bien à vous, mouet
By: Skrol29
Date: 2006-05-31
Time: 23:32

Re: Problèmes avec les array

Salut Mouet,

Le tableau affiche par var_export() n'a pas la structure attendue pour un MergeBlock().
MergeBlock() a besoin d'un tableau de tableau, hors là si je comprend bien ton $myList contient à chaque boucle un tableau simple.

Je pense que ta boucle sur les éléments de $table->liste est de trop.
Essai de remplacer :
for($i=1; isset($table->liste[$i]) ; $i++)
{
   $myList = $table->liste[$i];
   $TBS->MergeBlock('news','array',$myList);
}
par :
$TBS->MergeBlock('news','array',$table->liste);
By: Skrol29
Date: 2006-05-31
Time: 23:34

Re: Problèmes avec les array

Tu as répondu avant moi :) Oui ta réponse est ok.